Skip to content
Snippets Groups Projects
Verified Commit b3d8aaf9 authored by Daniel Hornung's avatar Daniel Hornung
Browse files

FIX: JSON schema now is more permissive, and fixed if-conditions.

For #75, #103.
parent 8d961f5f
No related branches found
No related tags found
2 merge requests!57RELEASE 0.7.3,!54FIX: JSON schema now is more permissive, and fixed if-conditions.
Pipeline #21098 passed
...@@ -19,6 +19,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -19,6 +19,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Security ### ### Security ###
* [#75](https://gitlab.indiscale.com/caosdb/src/caosdb-pylib/-/issues/75), [#103](https://gitlab.indiscale.com/caosdb/src/caosdb-pylib/-/issues/103) Fixed JSON schema to allow more sections, and correct requirements for
password method.
### Documentation ### ### Documentation ###
......
...@@ -65,26 +65,39 @@ schema-pycaosdb-ini: ...@@ -65,26 +65,39 @@ schema-pycaosdb-ini:
properties: properties:
password_method: password_method:
const: input const: input
required: [password_method]
then: then:
required: [url] required: [url]
- if: - if:
properties: properties:
password_method: password_method:
const: plain const: plain
required: [password_method]
then: then:
required: [url, username, password] required: [url, username, password]
- if: - if:
properties: properties:
password_method: password_method:
const: pass const: pass
required: [password_method]
then: then:
required: [url, username, password_identifier] required: [url, username, password_identifier]
- if: - if:
properties: properties:
password_method: password_method:
const: keyring const: keyring
required: [password_method]
then: then:
required: [url, username] required: [url, username]
IntegrationTests: IntegrationTests:
description: "Used by the integration test suite from the caosdb-pyinttest repo." description: "Used by the integration test suite from the caosdb-pyinttest repo."
additionalProperties: true additionalProperties: true
Misc:
description: "Some additional configuration settings."
additionalProperties: true
advancedtools:
description: "Configuration settings for the caosadvancedtools."
additionalProperties: true
sss_helper:
description: "Configuration settings for server-side scripting."
additionalProperties: true
# -*- mode:conf; -*-
## This sections needs to exist in addition to the usual section
[IntegrationTests]
# test_server_side_scripting.bin_dir.local=/path/to/scripting/bin
test_server_side_scripting.bin_dir.local=/home/myself/test/caosdb-server/scripting/bin
# test_server_side_scripting.bin_dir.server=/opt/caosdb/git/caosdb-server/scripting/bin
# # location of the files from the pyinttest perspective
# test_files.test_insert_files_in_dir.local=/extroot/test_insert_files_in_dir/
test_files.test_insert_files_in_dir.local=/home/myself/test/debug_advanced/paths/extroot/test_insert_files_in_dir
# # location of the files from the caosdb_servers perspective
test_files.test_insert_files_in_dir.server=/opt/caosdb/mnt/extroot/test_insert_files_in_dir/
########## Files ##################
## Used by tests of file handling. Specify the path to an existing
## directory in which file tests are performed, once as seen by the
## host and once as seen by the server.
# location of the files from the pyinttest (i.e. host) perspective
#test_files.test_insert_files_in_dir.local=/extroot/test_insert_files_in_dir/
# location of the files from the caosdb server's perspective
#test_files.test_insert_files_in_dir.server=/opt/caosdb/mnt/extroot/test_insert_files_in_dir/
# # location of the one-time tokens from the pyinttest's perspective
# test_authentication.admin_token_crud = /authtoken/admin_token_crud.txt
# test_authentication.admin_token_expired = /authtoken/admin_token_expired.txt
# test_authentication.admin_token_3_attempts = /authtoken/admin_token_3_attempts.txt
## Insert your usual settings here
[Connection]
url=https://localhost:10443/
username=admin
password_method=plain
password=caosdb
[Connection]
url = https://localhost:10443
cacert = /opt/caosdb/cert/caosdb.cert.pem
debug = 0
timeout = 5000
[Misc]
sendmail = /usr/local/bin/sendmail_to_file
entity_loan.curator_mail_from=crawler-test@example.com
entity_loan.curator_mail_to=crawler-test@example.com
[sss_helper]
external_uri = https://caosdb.example.com:443
[advancedtools]
crawler.from_mail=admin@example.com
crawler.to_mail=admin@example.com
[Connection]
url = https://samplemanager.example.com:443
cacert = /opt/caosdb/cert/caosdb.cert.pem
debug = 0
timeout = 5000
[Misc]
sendmail = /usr/local/bin/sendmail_to_file
entity_loan.curator_mail_from=crawler-test@example.com
entity_loan.curator_mail_to=crawler-test@example.com
[sss_helper]
external_uri = https://localhost:10443
[advancedtools]
crawler.from_mail=crawler-test@example.com
crawler.to_mail=crawler-test@example.com
; this is the pycaosdb.ini for the server-side-scripting home.
[Connection]
url = https://caosdb-server:10443
cacert = /opt/caosdb/cert/caosdb.cert.pem
debug = 0
timeout = 5000
[Misc]
sendmail = /usr/local/bin/sendmail_to_file
...@@ -33,16 +33,18 @@ from configparser import ConfigParser ...@@ -33,16 +33,18 @@ from configparser import ConfigParser
def test_config_files(): def test_config_files():
for fn in glob(os.path.join(os.path.dirname(__file__), "test_configs", "*.ini")): for fn in glob(os.path.join(os.path.dirname(__file__), "test_configs", "*.ini")):
print(f"Testing {fn}.")
c = ConfigParser() c = ConfigParser()
print(f"Reading {fn}")
c.read(fn) c.read(fn)
print(config_to_yaml(c))
validate_yaml_schema(config_to_yaml(c)) validate_yaml_schema(config_to_yaml(c))
def test_broken_config_files(): def test_broken_config_files():
for fn in glob(os.path.join(os.path.dirname(__file__), "broken_configs", "*.ini")): for fn in glob(os.path.join(os.path.dirname(__file__), "broken_configs", "*.ini")):
print(f"Reading {fn}") print(f"Testing {fn}.")
with raises(ValidationError): with raises(ValidationError):
c = ConfigParser() c = ConfigParser()
c.read(fn) c.read(fn)
print(config_to_yaml(c))
validate_yaml_schema(config_to_yaml(c)) validate_yaml_schema(config_to_yaml(c))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment