示例#1
0
    def test_old_validator_admin(self):
        @plugin.from_func()
        def scenario():
            pass

        scenario._meta_init()

        validator_func = mock.Mock()
        validator_func.return_value = None

        validator = validation.validator(validator_func)

        self.assertEqual(scenario, validator("a", "b", "c", d=1)(scenario))
        self.assertEqual(1, len(scenario._meta_get("validators")))

        vname, args, kwargs = scenario._meta_get("validators")[0]
        validator_cls = common_validation.Validator.get(vname)
        validator_inst = validator_cls(*args, **kwargs)
        fake_admin = fakes.fake_credential()
        credentials = {"openstack": {"admin": fake_admin, "users": []}}
        result = validator_inst.validate(credentials, {}, None, None)
        self.assertIsInstance(result, common_validation.ValidationResult)
        self.assertTrue(result.is_valid)

        validator_func.assert_called_once_with(
            {}, None, mock.ANY, "a", "b", "c", d=1)
        deployment = validator_func.call_args[0][2]
        self.assertEqual({"admin": fake_admin, "users": []},
                         deployment.get_credentials_for("openstack"))
示例#2
0
    def test_old_validator_users_error(self):

        validator_func = mock.Mock()
        validator_func.return_value = common_validation.ValidationResult(False)

        validator = validation.validator(validator_func)

        self.assertEqual(self.Plugin,
                         validator("a", "b", "c", d=1)(self.Plugin))
        self.assertEqual(1, len(self.Plugin._meta_get("validators")))

        vname, args, kwargs = self.Plugin._meta_get("validators")[0]
        validator_cls = common_validation.Validator.get(vname)
        validator_inst = validator_cls(*args, **kwargs)
        fake_admin = fakes.fake_credential()
        fake_users1 = fakes.fake_credential()
        fake_users2 = fakes.fake_credential()
        users = [{"credential": fake_users1}, {"credential": fake_users2}]
        credentials = {"openstack": {"admin": fake_admin, "users": users}}
        result = validator_inst.validate(credentials, {}, None, None)
        self.assertIsInstance(result, common_validation.ValidationResult)
        self.assertFalse(result.is_valid)

        fake_users1.clients.assert_called_once_with()
        fake_users2.clients.assert_called_once_with()
        validator_func.assert_called_once_with(
            {}, fake_users1.clients.return_value, mock.ANY, "a", "b", "c", d=1)
        deployment = validator_func.call_args[0][2]
        self.assertEqual({
            "admin": fake_admin,
            "users": users
        }, deployment.get_credentials_for("openstack"))
示例#3
0
 def _get_scenario_validators(self, func_, scenario_, reset=True):
     """Unwrap scenario validators created by validation.validator()."""
     if reset:
         if hasattr(scenario_, "validators"):
             del scenario_.validators
     scenario = validation.validator(func_)()(scenario_)
     return scenario.validators
示例#4
0
    def test_validator(self):

        failure = validation.ValidationResult(False)
        func = lambda *args, **kv: kv
        scenario = lambda: None

        # Check arguments passed to validator
        wrap = validation.validator(func)
        wrap_args = ["foo", "bar"]
        wrap_kwargs = {"foo": "spam"}
        wrap_scenario = wrap(*wrap_args, **wrap_kwargs)
        wrap_validator = wrap_scenario(scenario)
        validators = wrap_validator.validators
        self.assertEqual(1, len(validators))
        validator, = validators
        self.assertEqual(wrap_kwargs, validator(None, None, None))
        self.assertEqual(wrap_validator, scenario)

        # Default result
        func_success = lambda *a, **kv: None
        validator, = self._get_scenario_validators(func_success, scenario)
        self.assertTrue(validator(None, None, None).is_valid)

        # Failure result
        func_failure = lambda *a, **kv: failure
        validator, = self._get_scenario_validators(func_failure, scenario)
        self.assertFalse(validator(None, None, None).is_valid)
示例#5
0
    def test_validator(self):

        failure = validation.ValidationResult(False)
        func = lambda *args, **kv: kv
        scenario = lambda: None

        # Check arguments passed to validator
        wrap = validation.validator(func)
        wrap_args = ["foo", "bar"]
        wrap_kwargs = {"foo": "spam"}
        wrap_scenario = wrap(*wrap_args, **wrap_kwargs)
        wrap_validator = wrap_scenario(scenario)
        validators = wrap_validator.validators
        self.assertEqual(1, len(validators))
        validator, = validators
        self.assertEqual(wrap_kwargs, validator(None, None, None))
        self.assertEqual(wrap_validator, scenario)

        # Default result
        func_success = lambda *a, **kv: None
        validator, = self._get_scenario_validators(func_success, scenario)
        self.assertTrue(validator(None, None, None).is_valid)

        # Failure result
        func_failure = lambda *a, **kv: failure
        validator, = self._get_scenario_validators(func_failure, scenario)
        self.assertFalse(validator(None, None, None).is_valid)
示例#6
0
 def _get_scenario_validators(self, func_, scenario_, reset=True):
     """Unwrap scenario validators created by validation.validator()."""
     if reset:
         if hasattr(scenario_, "validators"):
             del scenario_.validators
     scenario = validation.validator(func_)()(scenario_)
     return scenario.validators
示例#7
0
    def test_old_validator_users_error(self):

        validator_func = mock.Mock()
        validator_func.return_value = validation.ValidationResult(False)

        validator = validation.validator(validator_func)

        self.assertEqual(self.Plugin,
                         validator("a", "b", "c", d=1)(self.Plugin))
        self.assertEqual(1, len(self.Plugin._meta_get("validators")))

        vname, args, kwargs = self.Plugin._meta_get("validators")[0]
        validator_cls = common_validation.Validator.get(vname)
        validator_inst = validator_cls(*args, **kwargs)
        fake_admin = fakes.fake_credential()
        fake_users1 = fakes.fake_credential()
        fake_users2 = fakes.fake_credential()
        users = [{"credential": fake_users1}, {"credential": fake_users2}]
        ctx = {"admin": {"credential": fake_admin}, "users": users}
        self.assertRaises(
            common_validation.ValidationError,
            validator_inst.validate, ctx, {}, None, None)

        fake_users1.clients.assert_called_once_with()
        fake_users2.clients.assert_called_once_with()
        validator_func.assert_called_once_with(
            {}, fake_users1.clients.return_value, mock.ANY,
            "a", "b", "c", d=1)
        deployment = validator_func.call_args[0][2]
        self.assertEqual({"admin": fake_admin,
                          "users": [fake_users1, fake_users2]},
                         deployment.get_credentials_for("openstack"))
示例#8
0
    def test_old_validator_admin(self):

        validator_func = mock.Mock()
        validator_func.return_value = None

        validator = validation.validator(validator_func)

        self.assertEqual(self.Plugin,
                         validator("a", "b", "c", d=1)(self.Plugin))
        self.assertEqual(1, len(self.Plugin._meta_get("validators")))

        vname, args, kwargs = self.Plugin._meta_get("validators")[0]
        validator_cls = common_validation.Validator.get(vname)
        validator_inst = validator_cls(*args, **kwargs)
        fake_admin = fakes.fake_credential()
        ctx = {"admin": {"credential": fake_admin}, "users": []}
        result = validator_inst.validate(ctx, {}, None, None)
        self.assertIsNone(result)

        validator_func.assert_called_once_with({},
                                               None,
                                               mock.ANY,
                                               "a",
                                               "b",
                                               "c",
                                               d=1)
        deployment = validator_func.call_args[0][2]
        self.assertEqual({
            "admin": fake_admin,
            "users": []
        }, deployment.get_credentials_for("openstack"))
示例#9
0
    def test_validator(self):
        @plugin.from_func()
        def scenario():
            pass

        scenario._meta_init()

        def validator_func(config, clients, deployment, a, b, c, d):
            return (config, clients, deployment, a, b, c, d)

        validator = validation.validator(validator_func)

        self.assertEqual(scenario, validator("a", "b", "c", d=1)(scenario))
        self.assertEqual(1, len(scenario._meta_get("validators")))

        self.assertEqual(("conf", "client", "deploy", "a", "b", "c", 1),
                         scenario._meta_get("validators")[0]("conf", "client",
                                                             "deploy"))
示例#10
0
    def test_validator(self):

        @plugin.from_func()
        def scenario():
            pass

        scenario._meta_init()

        def validator_func(config, clients, deployment, a, b, c, d):
            return (config, clients, deployment, a, b, c, d)

        validator = validation.validator(validator_func)

        self.assertEqual(scenario, validator("a", "b", "c", d=1)(scenario))
        self.assertEqual(1, len(scenario._meta_get("validators")))

        self.assertEqual(
            ("conf", "client", "deploy", "a", "b", "c", 1),
            scenario._meta_get("validators")[0]("conf", "client", "deploy"))
示例#11
0
    def test_old_validator_admin(self):

        validator_func = mock.Mock()
        validator_func.return_value = None

        validator = validation.validator(validator_func)

        self.assertEqual(self.Plugin,
                         validator("a", "b", "c", d=1)(self.Plugin))
        self.assertEqual(1, len(self.Plugin._meta_get("validators")))

        vname, args, kwargs = self.Plugin._meta_get("validators")[0]
        validator_cls = common_validation.Validator.get(vname)
        validator_inst = validator_cls(*args, **kwargs)
        fake_admin = fakes.fake_credential()
        ctx = {"admin": {"credential": fake_admin}, "users": []}
        result = validator_inst.validate(ctx, {}, None, None)
        self.assertIsNone(result)

        validator_func.assert_called_once_with(
            {}, None, mock.ANY, "a", "b", "c", d=1)
        deployment = validator_func.call_args[0][2]
        self.assertEqual({"admin": fake_admin, "users": []},
                         deployment.get_credentials_for("openstack"))