diff options
author | M V P Nitesh <m.nitesh@nectechnologies.in> | 2017-08-07 18:41:35 +0530 |
---|---|---|
committer | Deepak Mourya <deepakmoriya7@gmail.com> | 2018-09-06 05:09:10 +0000 |
commit | 430d7f765a75830ae377545bc57195d38e44e172 (patch) | |
tree | 9315e209364c09a91fbb8806667e365719eee525 /keystone/tests/unit | |
parent | 9e107fdd64adc0c9507d3810db9010e05ce72ba8 (diff) | |
download | keystone-430d7f765a75830ae377545bc57195d38e44e172.tar.gz |
Added support for a ``description`` attribute for Identity Roles
Now user can add the description to the role when user creates the role.
Added support for a ``description`` attribute for V3 Identity Roles.
Co-Authored-By: wangxiyuan<wangxiyuan@huawei.com>
Co-Authored-By: Deepak Mourya<deepakmoriya7@gmail.com>
Change-Id: I230af9cc833af13064636b5d9a7ce6334c3f6e9a
Closes-Bug: #1669080
Diffstat (limited to 'keystone/tests/unit')
-rw-r--r-- | keystone/tests/unit/assignment/test_core.py | 25 | ||||
-rw-r--r-- | keystone/tests/unit/core.py | 1 | ||||
-rw-r--r-- | keystone/tests/unit/test_sql_upgrade.py | 39 | ||||
-rw-r--r-- | keystone/tests/unit/test_v3.py | 1 | ||||
-rw-r--r-- | keystone/tests/unit/test_validation.py | 14 |
5 files changed, 80 insertions, 0 deletions
diff --git a/keystone/tests/unit/assignment/test_core.py b/keystone/tests/unit/assignment/test_core.py index 1eac5ba2e..003b9b0aa 100644 --- a/keystone/tests/unit/assignment/test_core.py +++ b/keystone/tests/unit/assignment/test_core.py @@ -82,6 +82,31 @@ class RoleTests(object): PROVIDERS.role_api.get_role, role['id']) + def test_role_crud_without_description(self): + role = { + 'id': uuid.uuid4().hex, + 'name': uuid.uuid4().hex, + 'domain_id': None, + } + self.role_api.create_role(role['id'], role) + role_ref = self.role_api.get_role(role['id']) + role_ref_dict = {x: role_ref[x] for x in role_ref} + self.assertIsNone(role_ref_dict['description']) + role_ref_dict.pop('description') + self.assertDictEqual(role, role_ref_dict) + + role['name'] = uuid.uuid4().hex + updated_role_ref = self.role_api.update_role(role['id'], role) + role_ref = self.role_api.get_role(role['id']) + role_ref_dict = {x: role_ref[x] for x in role_ref} + self.assertIsNone(updated_role_ref['description']) + self.assertDictEqual(role_ref_dict, updated_role_ref) + + self.role_api.delete_role(role['id']) + self.assertRaises(exception.RoleNotFound, + self.role_api.get_role, + role['id']) + def test_update_role_returns_not_found(self): role = unit.new_role_ref() self.assertRaises(exception.RoleNotFound, diff --git a/keystone/tests/unit/core.py b/keystone/tests/unit/core.py index 2034ba5fe..1c13a776a 100644 --- a/keystone/tests/unit/core.py +++ b/keystone/tests/unit/core.py @@ -385,6 +385,7 @@ def new_role_ref(**kwargs): ref = { 'id': uuid.uuid4().hex, 'name': uuid.uuid4().hex, + 'description': uuid.uuid4().hex, 'domain_id': None } ref.update(kwargs) diff --git a/keystone/tests/unit/test_sql_upgrade.py b/keystone/tests/unit/test_sql_upgrade.py index a1a328eb3..06477614d 100644 --- a/keystone/tests/unit/test_sql_upgrade.py +++ b/keystone/tests/unit/test_sql_upgrade.py @@ -3140,6 +3140,45 @@ class FullMigration(SqlMigrateBase, unit.TestCase): ) self.assertTrue(self.does_fk_exist('limit', 'registered_limit_id')) + def test_migration_053_adds_description_to_role(self): + self.expand(52) + self.migrate(52) + self.contract(52) + + role_table_name = 'role' + self.assertTableColumns( + role_table_name, + ['id', 'name', 'domain_id', 'extra'] + ) + + self.expand(53) + self.migrate(53) + self.contract(53) + + self.assertTableColumns( + role_table_name, + ['id', 'name', 'domain_id', 'extra', 'description'] + ) + + role_table = sqlalchemy.Table( + role_table_name, self.metadata, autoload=True + ) + + role = { + 'id': uuid.uuid4().hex, + 'name': "test", + 'domain_id': resource_base.NULL_DOMAIN_ID, + 'description': "This is a string" + } + role_table.insert().values(role).execute() + + role_without_description = { + 'id': uuid.uuid4().hex, + 'name': "test1", + 'domain_id': resource_base.NULL_DOMAIN_ID + } + role_table.insert().values(role_without_description).execute() + class MySQLOpportunisticFullMigration(FullMigration): FIXTURE = db_fixtures.MySQLOpportunisticFixture diff --git a/keystone/tests/unit/test_v3.py b/keystone/tests/unit/test_v3.py index 447be08e1..29a5e93f5 100644 --- a/keystone/tests/unit/test_v3.py +++ b/keystone/tests/unit/test_v3.py @@ -53,6 +53,7 @@ class RestfulTestCase(unit.SQLDriverOverrides, rest.RestfulTestCase, 'properties': { 'id': {'type': 'string', }, 'name': {'type': 'string', }, + 'description': {'type': 'string', }, }, 'required': ['id', 'name', ], 'additionalProperties': False, diff --git a/keystone/tests/unit/test_validation.py b/keystone/tests/unit/test_validation.py index cd34a5a27..800d0ab7d 100644 --- a/keystone/tests/unit/test_validation.py +++ b/keystone/tests/unit/test_validation.py @@ -755,6 +755,20 @@ class RoleValidationTestCase(unit.BaseTestCase): self.create_role_validator.validate, request_to_validate) + def test_validate_role_request_with_valid_description(self): + """Test we can validate`description` in create role request.""" + request_to_validate = {'name': self.role_name, + 'description': 'My Role'} + self.create_role_validator.validate(request_to_validate) + + def test_validate_role_request_fails_with_invalid_description(self): + """Exception is raised when `description` as a non-string value.""" + request_to_validate = {'name': self.role_name, + 'description': False} + self.assertRaises(exception.SchemaValidationError, + self.create_role_validator.validate, + request_to_validate) + def test_validate_role_update_request(self): """Test that we validate a role update request.""" request_to_validate = {'name': 'My New Role'} |