def test_valid_repo_data(self): self.mfs = mockfs.replace_builtins() self.mfs.add_entries({jimmy_schema_path: self.jimmy_schema, jimmy_yaml_path: self.mock_jimmy_yaml}) schema = yaml_reader.read(jimmy_schema_path) repo_data = yaml_reader.read(jimmy_yaml_path) jsonschema.validate(repo_data, schema)
def test_valid_repo_data(self): self.mfs = mockfs.replace_builtins() self.mfs.add_entries({ jimmy_schema_path: self.jimmy_schema, jimmy_yaml_path: self.mock_jimmy_yaml }) schema = yaml_reader.read(jimmy_schema_path) repo_data = yaml_reader.read(jimmy_yaml_path) jsonschema.validate(repo_data, schema)
def test_validation_fail_for_additional_properties(self): with open(jimmy_yaml_path, 'r') as f: jimmy_yaml = f.read() mock_jimmy_yaml = "\n".join([jimmy_yaml, "test:\n"]) self.mfs = mockfs.replace_builtins() self.mfs.add_entries({jimmy_yaml_path: mock_jimmy_yaml, jimmy_schema_path: self.jimmy_schema}) schema = yaml_reader.read(jimmy_schema_path) jimmy_yaml_data = yaml_reader.read(jimmy_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(jimmy_yaml_data, schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_validation_fail_for_additional_properties(self): with open(jimmy_yaml_path, 'r') as f: jimmy_yaml = f.read() mock_jimmy_yaml = "\n".join([jimmy_yaml, "test:\n"]) self.mfs = mockfs.replace_builtins() self.mfs.add_entries({ jimmy_yaml_path: mock_jimmy_yaml, jimmy_schema_path: self.jimmy_schema }) schema = yaml_reader.read(jimmy_schema_path) jimmy_yaml_data = yaml_reader.read(jimmy_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(jimmy_yaml_data, schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_ldap_validation_fail_if_access_name_is_not_string(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'ldap:', ' server: ldap://mirantis.com:3268', ' root_bind:', ' dn: dc=mirantis,dc=com', ' allow_blank: false', ' search:', ' user_filter: userPrincipalName={0}', ' manager:', ' name: [email protected]', ' password: passwd', ' access:', ' - name: 123', ' permissions:', ' - overall', ' - credentials', ' - gerrit', 'cli_user:'******' name: jenkins-manager', ' public_key: ssh-rsa AAB' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_valid_oneof_ldap_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'ldap:', ' server: ldap://mirantis.com:3268', ' root_bind:', ' dn: dc=mirantis,dc=com', ' allow_blank: false', ' search:', ' user_filter: userPrincipalName={0}', ' manager:', ' name: [email protected]', ' password: passwd', ' access:', ' - name: amihura', ' permissions:', ' - overall', ' - credentials', ' - gerrit', 'cli_user:'******' name: jenkins-manager', ' public_key: sssh-rsa AAAAB3NzaC' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def setup_method(self, method): with open(pipeline_libraries_schema_path, 'r') as f: mock_pipeline_libraries_schema = f.read() self.mfs = mockfs.replace_builtins() self.mfs.add_entries( {pipeline_libraries_schema_path: mock_pipeline_libraries_schema}) self.schema = yaml_reader.read(pipeline_libraries_schema_path)
def test_validation_fail_if_libraries_is_not_array(self): self.mfs.add_entries( {jenkins_yaml_path: '\n'.join(['libraries: 123'])}) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'array'"
def test_validation_fail_for_unsecured_additional_properties(self): self.mfs.add_entries( {jenkins_yaml_path: '\n'.join(['unsecured: true', 'test: test'])}) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_ldap_validation_fail_if_permissions_not_enum(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'ldap:', ' server: ldap://mirantis.com:3268', ' root_bind:', ' dn: dc=mirantis,dc=com', ' allow_blank: false', ' search:', ' user_filter: userPrincipalName={0}', ' manager:', ' name: [email protected]', ' password: passwd', ' access:', ' - name: test', ' permissions:', ' - test', ' - credentials', ' - gerrit', 'cli_user:'******' name: jenkins-manager', ' public_key: sssh-rsa AAAAB3NzaC' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'test' is not one of " \ "['overall', 'credentials', 'gerrit', 'manage-ownership', " \ "'slave', 'job', 'run', 'view', 'scm']"
def test_validation_fail_if_unsecured_not_bool(self): self.mfs.add_entries( {jenkins_yaml_path: '\n'.join(['unsecured: 123'])}) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'boolean'"
def test_valid_oneof_unsecured_data(self): self.mfs.add_entries( {jenkins_yaml_path: '\n'.join([ 'unsecured: true', ])}) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def setup_method(self, method): with open(credentials_schema_path, 'r') as f: mock_credentials_schema = f.read() self.mfs = mockfs.replace_builtins() self.mfs.add_entries( {credentials_schema_path: mock_credentials_schema}) self.schema = yaml_reader.read(credentials_schema_path)
def test_validation_fail_for_host_required_property(self): self.mfs.add_entries( {jenkins_yaml_path: '\n'.join(['enable: True', 'port: 4730'])}) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'host' is a required property"
def test_valid_oneof_unsecured_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'unsecured: true', ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_validation_fail_if_host_is_not_string(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join(['host: 123', 'enable: True', 'port: 4730']) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_validation_fail_for_envs_required_property(self): # Create config without envs entry with open(jimmy_yaml_path, 'r') as f: mock_jimmy_yaml = "" for line in f: if line.startswith("envs:"): break mock_jimmy_yaml += line self.mfs = mockfs.replace_builtins() self.mfs.add_entries({jimmy_yaml_path: mock_jimmy_yaml, jimmy_schema_path: self.jimmy_schema}) schema = yaml_reader.read(jimmy_schema_path) jimmy_yaml_data = yaml_reader.read(jimmy_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(jimmy_yaml_data, schema) assert excinfo.value.message == "'envs' is a required property"
def test_validation_fail_for_pipelines_required_property(self): self.mfs = mockfs.replace_builtins() self.mfs.add_entries({ jimmy_schema_path: self.jimmy_schema, jimmy_yaml_path: '\n'.join([ 'module-directories:', ' - ./modules', 'defaults:', ' inject:', ' jenkins_cli_path: /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar', 'setup:', ' - name: setup', 'teardown:', ' - name: teardown', 'envs:', ' main:', ' jenkins_url: http://localhost:8080' ]) }) schema = yaml_reader.read(jimmy_schema_path) jimmy_yaml_data = yaml_reader.read(jimmy_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(jimmy_yaml_data, schema) assert excinfo.value.message == "'pipelines' is a required property"
def test_validation_fail_if_unsecured_not_bool(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'unsecured: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'boolean'"
def test_valid_repo_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'host: zuul01-test.infra.mirantis.net', 'enable: True', 'port: 4730' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_validation_fail_if_libraries_is_not_array(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'libraries: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'array'"
def test_valid_repo_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'user:'******' email: [email protected]', ' name: Jenkins' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_valid_oneof_ssh_data(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' ssh:', ' - scope: global', ' username: user2', ' private_key: /home/user/.ssh/id_rsa' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_ssh_validation_fail_for_private_key_required_property(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join( [' ssh:', ' - scope: global', ' username: user2']) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'private_key' is a required property"
def test_fails_if_node_is_set_but_envvars_are_empty(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([' node1: {}', ' node2:', ' -label1']) }) node_envvars_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(node_envvars_data, self.schema) assert excinfo.value.message == "{} does not have enough properties"
def test_file_validation_fail_for_file_required_property(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join( [' file:', ' - scope: global', ' id: secret-key']) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'file' is a required property"
def test_valid_data(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' node1:', ' -label1', ' -label2', ' node2:', ' -label1' ]) }) node_envvars_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(node_envvars_data, self.schema)
def test_valid_repo_data(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ 'host: zuul01-test.infra.mirantis.net', 'enable: True', 'port: 4730' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_validation_fail_for_host_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'enable: True', 'port: 4730' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'host' is a required property"
def test_validation_fail_for_envs_required_property(self): # Create config without envs entry with open(jimmy_yaml_path, 'r') as f: mock_jimmy_yaml = "" for line in f: if line.startswith("envs:"): break mock_jimmy_yaml += line self.mfs = mockfs.replace_builtins() self.mfs.add_entries({ jimmy_yaml_path: mock_jimmy_yaml, jimmy_schema_path: self.jimmy_schema }) schema = yaml_reader.read(jimmy_schema_path) jimmy_yaml_data = yaml_reader.read(jimmy_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(jimmy_yaml_data, schema) assert excinfo.value.message == "'envs' is a required property"
def test_validation_fail_for_name_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'user:'******' email: [email protected]', ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'name' is a required property"
def test_validation_fail_for_unsecured_additional_properties(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'unsecured: true', 'test: test' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_valid_oneof_ssh_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' ssh:', ' - scope: global', ' username: user2', ' private_key: /home/user/.ssh/id_rsa' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_valid_oneof_token_data(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' token:', ' - scope: global', ' username: user', ' description: test token credentials', ' id: this-is-token-credentials-id' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_valid_oneof_file_data(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' file:', ' - scope: global', ' id: secret-key', ' file: /home/user/secret_key', ' description: Secret key' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_validation_fail_for_file_additional_properties(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' file:', ' - scope: global', ' id: secret-key', ' file: /home/user/secret_file', ' test: test' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_validation_fail_for_ssh_additional_properties(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' ssh:', ' - scope: global', ' username: user2', ' private_key: /home/user/.ssh/id_rsa', ' test: test' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_token_validation_fail_for_id_required_property(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' token:', ' - scope: global', ' username: user', ' description: test token credentials' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'id' is a required property"
def test_validation_fail_for_password_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' basic_auth:', ' - key_name: testauth', ' username: user' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'password' is a required property"
def test_validation_fail_if_name_is_not_string(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'user:'******' email: [email protected]', ' name: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_validation_fail_if_file_is_not_string(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' file:', ' - scope: global', ' id: secret-key', ' file: 123', ' description: Secret key' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_validation_fail_if_private_key_is_not_string(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' ssh:', ' - scope: system', ' username: user2', ' passphrase: psprs', ' private_key: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_validation_fail_if_descr_is_not_string(self): self.mfs.add_entries({ jenkins_yaml_path: '\n'.join([ ' password:'******' - scope: global', ' username: user', ' password: passwd', ' description: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_validation_fail_if_host_is_not_string(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'host: 123', 'enable: True', 'port: 4730' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_ssh_validation_fail_for_private_key_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' ssh:', ' - scope: global', ' username: user2' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'private_key' is a required property"
def test_file_validation_fail_for_file_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' file:', ' - scope: global', ' id: secret-key' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'file' is a required property"
def test_valid_oneof_file_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' file:', ' - scope: global', ' id: secret-key', ' file: /home/user/secret_key', ' description: Secret key' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_valid_oneof_token_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' token:', ' - scope: global', ' username: user', ' description: test token credentials', ' id: this-is-token-credentials-id' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_validation_fail_if_port_is_not_number(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'host: zuul01-test.infra.mirantis.net', 'enable: True', 'port: test' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'test' is not of type 'number'"
def test_password_validation_fail_for_username_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' password:'******' - scope: global', ' password: passwd', ' description: test username/password user' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'username' is a required property"
def test_validation_fail_if_password_is_not_string(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' basic_auth:', ' - key_name: testauth', ' username: user', ' password: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "123 is not of type 'string'"
def test_token_validation_fail_for_id_required_property(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' token:', ' - scope: global', ' username: user', ' description: test token credentials' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'id' is a required property"
def test_validation_fail_for_additional_properties(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'user:'******' email: [email protected]', ' name: Jenkins', ' test: 123' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "Additional properties are not allowed ('test' was unexpected)"
def test_valid_repo_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'servers:', ' - username: test-username', ' url: http://test.com', ' servername: test-gerrit-name', ' hostname: test-hostname', ' auth_key: /var/lib/jenkins/.ssh/id_rsa' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_valid_repo_data(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ 'admin_email: CI <*****@*****.**>', 'agent_tcp_port: 50000', 'location_url: http://example.com/jenkins/', 'markup_format: raw-html', 'num_of_executors: 2', 'scm_checkout_retry_count: 1' ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) jsonschema.validate(repo_data, self.schema)
def test_file_validation_fail_if_scope_is_not_enum(self): self.mfs.add_entries({jenkins_yaml_path: '\n'.join( [ ' file:', ' - scope: test', ' id: secret-key', ' file: /home/user/secret_key', ]) }) repo_data = yaml_reader.read(jenkins_yaml_path) with pytest.raises(jsonschema.ValidationError) as excinfo: jsonschema.validate(repo_data, self.schema) assert excinfo.value.message == "'test' is not one of ['global', 'system']"