diff options
-rw-r--r-- | src/leap/base/pluggableconfig.py | 9 | ||||
-rw-r--r-- | src/leap/base/tests/test_providers.py | 6 | ||||
-rw-r--r-- | src/leap/base/tests/test_validation.py | 13 | ||||
-rw-r--r-- | src/leap/eip/tests/test_checks.py | 5 |
4 files changed, 19 insertions, 14 deletions
diff --git a/src/leap/base/pluggableconfig.py b/src/leap/base/pluggableconfig.py index 3517db6b..6f9f3f6f 100644 --- a/src/leap/base/pluggableconfig.py +++ b/src/leap/base/pluggableconfig.py @@ -26,6 +26,10 @@ __all__ = ['PluggableConfig', # exceptions +class ValidationError(Exception): + pass + + class UnknownOptionException(Exception): """exception raised when a non-configuration value is present in the configuration""" @@ -107,7 +111,10 @@ class JSONAdaptor(ConfigAdaptor): def validate(self, config, schema_obj): schema_json = JSONSchemaEncoder().encode(schema_obj) schema = json.loads(schema_json) - jsonschema.validate(config, schema) + try: + jsonschema.validate(config, schema) + except jsonschema.ValidationError: + raise ValidationError adaptors['json'] = JSONAdaptor() diff --git a/src/leap/base/tests/test_providers.py b/src/leap/base/tests/test_providers.py index f257f54d..92bc1f2f 100644 --- a/src/leap/base/tests/test_providers.py +++ b/src/leap/base/tests/test_providers.py @@ -6,9 +6,7 @@ except ImportError: import unittest import os -import jsonschema - -#from leap import __branding as BRANDING +from leap.base.pluggableconfig import ValidationError from leap.testing.basetest import BaseLeapTest from leap.base import providers @@ -96,7 +94,7 @@ class TestLeapProviderDefinition(BaseLeapTest): _config = copy.deepcopy(self.config) # bad type, raise validation error _config['domain'] = 111 - with self.assertRaises(jsonschema.ValidationError): + with self.assertRaises(ValidationError): self.definition.validate(_config) @unittest.skip diff --git a/src/leap/base/tests/test_validation.py b/src/leap/base/tests/test_validation.py index 87e99648..b45fbe3a 100644 --- a/src/leap/base/tests/test_validation.py +++ b/src/leap/base/tests/test_validation.py @@ -1,5 +1,6 @@ import copy import datetime +from functools import partial #import json try: import unittest2 as unittest @@ -7,8 +8,6 @@ except ImportError: import unittest import os -import jsonschema - from leap.base.config import JSONLeapConfig from leap.base import pluggableconfig from leap.testing.basetest import BaseLeapTest @@ -76,16 +75,18 @@ class TestJSONLeapConfigValidation(BaseLeapTest): def test_broken_int(self): _config = copy.deepcopy(SAMPLE_CONFIG_DICT) _config['prop_one'] = '1' - with self.assertRaises(jsonschema.ValidationError): - self.sampleconfig.validate(_config) + self.assertRaises( + pluggableconfig.ValidationError, + partial(self.sampleconfig.validate, _config)) def test_format_property(self): # JsonSchema Validator does not check the format property. # We should have to extend the Configuration class blah = copy.deepcopy(SAMPLE_CONFIG_DICT) blah['prop_uri'] = 'xxx' - with self.assertRaises(pluggableconfig.TypeCastException): - self.sampleconfig.validate(blah) + self.assertRaises( + pluggableconfig.TypeCastException, + partial(self.sampleconfig.validate, blah)) if __name__ == "__main__": diff --git a/src/leap/eip/tests/test_checks.py b/src/leap/eip/tests/test_checks.py index ab11037a..f42a0eeb 100644 --- a/src/leap/eip/tests/test_checks.py +++ b/src/leap/eip/tests/test_checks.py @@ -11,11 +11,10 @@ import urlparse from mock import (patch, Mock) -import jsonschema -#import ping import requests from leap.base import config as baseconfig +from leap.base import pluggableconfig from leap.base.constants import (DEFAULT_PROVIDER_DEFINITION, DEFINITION_EXPECTED_PATH) from leap.eip import checks as eipchecks @@ -125,7 +124,7 @@ class EIPCheckTest(BaseLeapTest): #with self.assertRaises(eipexceptions.EIPMissingDefaultProvider): # XXX we should catch this as one of our errors, but do not # see how to do it quickly. - with self.assertRaises(jsonschema.ValidationError): + with self.assertRaises(pluggableconfig.ValidationError): #import ipdb;ipdb.set_trace() checker.eipconfig.load(fromfile=eipcfg_path) checker.check_is_there_default_provider() |