def test_when_config_is_empty_json_then_schema_requires_monitors( config_json_schema): empty_config = read_json_from_file(EMPTY_JSON_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(empty_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'monitors' is a required property", [])
def test_when_config_contains_metric_with_no_name_then_schema_requires_metric_name( config_json_schema): no_metric_name_config = read_json_from_file(NO_METRIC_NAME_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(no_metric_name_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'name' is a required property", ['monitors', 0, 'metric'])
def test_when_config_contains_empty_monitor_then_schema_requires_monitor_name( config_json_schema): empty_monitor_config = read_json_from_file(EMPTY_MONITOR_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(empty_monitor_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'name' is a required property", ['monitors', 0])
def test_when_config_contains_wrong_monitor_type_then_schema_requires_object_monitor( config_json_schema): wrong_monitor_type_config = read_json_from_file( WRONG_MONITOR_TYPE_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(wrong_monitor_type_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'' is not of type 'object'", ['monitors', 0])
def test_when_config_monitors_is_not_array_then_schema_requires_array( config_json_schema): monitors_not_array_config = read_json_from_file( MONITORS_NOT_ARRAY_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(monitors_not_array_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "is not of type 'array'", ['monitors'])
def test_when_config_contains_threshold_with_no_clear_points_then_schema_requires_clear_points( config_json_schema): no_threshold_clear_points_config = read_json_from_file( NO_THRESHOLD_CLEAR_POINTS_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(no_threshold_clear_points_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'clear_points' is a required property", ['monitors', 0, 'threshold'])
def test_when_config_contains_monitor_with_no_notifiers_then_schema_requires_monitor_notifiers( config_json_schema): no_monitor_notifiers_config = read_json_from_file( NO_MONITOR_NOTIFIERS_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(no_monitor_notifiers_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'notifiers' is a required property", ['monitors', 0])
def test_when_config_contains_monitor_with_no_interval_then_schema_requires_monitor_interval( config_json_schema): no_monitor_interval_config = read_json_from_file( NO_MONITOR_INTERVAL_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(no_monitor_interval_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'interval' is a required property", ['monitors', 0])
def test_when_config_contains_monitor_with_no_threshold_then_schema_requires_monitor_threshold( config_json_schema): no_monitor_threshold_config = read_json_from_file( NO_MONITOR_THRESHOLD_CONFIG_FILE) exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate(no_monitor_threshold_config, config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'threshold' is a required property", ['monitors', 0])
def test_when_schema_is_validated_schema_is_itself_valid(config_json_schema): exception_validator = RunnableExceptionValidator( lambda: jsonschema.validate('', config_json_schema)) exception_validator.verify_json_schema_exception( jsonschema.exceptions.ValidationError, "'' is not of type 'object'", [])