summaryrefslogtreecommitdiff
path: root/keystone/tests/unit
diff options
context:
space:
mode:
authorM V P Nitesh <m.nitesh@nectechnologies.in>2017-08-07 18:41:35 +0530
committerDeepak Mourya <deepakmoriya7@gmail.com>2018-09-06 05:09:10 +0000
commit430d7f765a75830ae377545bc57195d38e44e172 (patch)
tree9315e209364c09a91fbb8806667e365719eee525 /keystone/tests/unit
parent9e107fdd64adc0c9507d3810db9010e05ce72ba8 (diff)
downloadkeystone-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.py25
-rw-r--r--keystone/tests/unit/core.py1
-rw-r--r--keystone/tests/unit/test_sql_upgrade.py39
-rw-r--r--keystone/tests/unit/test_v3.py1
-rw-r--r--keystone/tests/unit/test_validation.py14
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'}