def test_unrecognised_keys(self): c = base.Config(schema=defaults.get_schema()) c.load_dict({'not_a_valid_config_option': "test"}) failed, warnings = c.validate() self.assertEqual( warnings, [('not_a_valid_config_option', 'Unrecognised configuration name: not_a_valid_config_option')])
def test_missing_required(self): c = base.Config(schema=defaults.get_schema()) errors, warnings = c.validate() self.assertEqual(len(errors), 1) self.assertEqual(errors[0][0], 'site_name') self.assertEqual(str(errors[0][1]), 'Required configuration not provided.') self.assertEqual(len(warnings), 0)
def test_post_validation_error(self): class InvalidConfigOption(BaseConfigOption): def post_validation(self, config, key_name): raise base.ValidationError('post_validation error') c = base.Config(schema=(('invalid_option', InvalidConfigOption()), )) errors, warnings = c.validate() self.assertEqual(len(errors), 1) self.assertEqual(errors[0][0], 'invalid_option') self.assertEqual(str(errors[0][1]), 'post_validation error') self.assertTrue(isinstance(errors[0][1], base.ValidationError)) self.assertEqual(len(warnings), 0)
def test_validation_warnings(self): class InvalidConfigOption(BaseConfigOption): def pre_validation(self, config, key_name): self.warnings.append('pre_validation warning') def run_validation(self, value): self.warnings.append('run_validation warning') def post_validation(self, config, key_name): self.warnings.append('post_validation warning') c = base.Config(schema=(('invalid_option', InvalidConfigOption()), )) errors, warnings = c.validate() self.assertEqual(len(errors), 0) self.assertEqual(warnings, [ ('invalid_option', 'pre_validation warning'), ('invalid_option', 'run_validation warning'), ('invalid_option', 'post_validation warning'), ])
def test_pre_and_run_validation_errors(self): """ A pre_validation error does not stop run_validation from running. """ class InvalidConfigOption(BaseConfigOption): def pre_validation(self, config, key_name): raise base.ValidationError('pre_validation error') def run_validation(self, value): raise base.ValidationError('run_validation error') c = base.Config(schema=(('invalid_option', InvalidConfigOption()), )) errors, warnings = c.validate() self.assertEqual(len(errors), 2) self.assertEqual(errors[0][0], 'invalid_option') self.assertEqual(str(errors[0][1]), 'pre_validation error') self.assertTrue(isinstance(errors[0][1], base.ValidationError)) self.assertEqual(errors[1][0], 'invalid_option') self.assertEqual(str(errors[1][1]), 'run_validation error') self.assertTrue(isinstance(errors[1][1], base.ValidationError)) self.assertEqual(len(warnings), 0)