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"))
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"))
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
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)
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"))
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"))
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"))
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"))
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"))