From b69dbc2f2748cf3261dce02057c60cdb7affd4ce Mon Sep 17 00:00:00 2001 From: Unmesh Gurjar Date: Tue, 3 Apr 2012 11:45:22 +0530 Subject: Added tenant name validation. Fixes bug 966249. 1. Verified name length while creating/updating tenant (for all backends). 2. Disallowed blank tenant name in create/update. 3. Added unit test coverage. Change-Id: Ied1e2707ba16e14d791308fb618ca18effa0245f --- tests/test_backend.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++- tests/test_backend_kvs.py | 1 + tests/test_backend_sql.py | 2 +- 3 files changed, 63 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/test_backend.py b/tests/test_backend.py index d7079ba6..c5404ad3 100644 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -303,6 +303,65 @@ class IdentityTests(object): tenants = self.identity_api.get_tenants_for_user('foo') self.assertIn(tenant_id, tenants) + def test_create_tenant_long_name_fails(self): + tenant = {'id': 'fake1', 'name': 'a' * 65} + self.assertRaises(exception.ValidationError, + self.identity_api.create_tenant, + tenant['id'], + tenant) + + def test_create_tenant_blank_name_fails(self): + tenant = {'id': 'fake1', 'name': ''} + self.assertRaises(exception.ValidationError, + self.identity_api.create_tenant, + tenant['id'], + tenant) + + def test_create_tenant_invalid_name_fails(self): + tenant = {'id': 'fake1', 'name': None} + self.assertRaises(exception.ValidationError, + self.identity_api.create_tenant, + tenant['id'], + tenant) + tenant = {'id': 'fake1', 'name': 123} + self.assertRaises(exception.ValidationError, + self.identity_api.create_tenant, + tenant['id'], + tenant) + + def test_update_tenant_blank_name_fails(self): + tenant = {'id': 'fake1', 'name': 'fake1'} + self.identity_api.create_tenant('fake1', tenant) + tenant['name'] = '' + self.assertRaises(exception.ValidationError, + self.identity_api.update_tenant, + tenant['id'], + tenant) + + def test_update_tenant_long_name_fails(self): + tenant = {'id': 'fake1', 'name': 'fake1'} + self.identity_api.create_tenant('fake1', tenant) + tenant['name'] = 'a' * 65 + self.assertRaises(exception.ValidationError, + self.identity_api.update_tenant, + tenant['id'], + tenant) + + def test_update_tenant_invalid_name_fails(self): + tenant = {'id': 'fake1', 'name': 'fake1'} + self.identity_api.create_tenant('fake1', tenant) + tenant['name'] = None + self.assertRaises(exception.ValidationError, + self.identity_api.update_tenant, + tenant['id'], + tenant) + + tenant['name'] = 123 + self.assertRaises(exception.ValidationError, + self.identity_api.update_tenant, + tenant['id'], + tenant) + class TokenTests(object): def test_token_crud(self): @@ -326,7 +385,8 @@ class TokenTests(object): def test_expired_token(self): token_id = uuid.uuid4().hex - expire_time = datetime.datetime.utcnow() - datetime.timedelta(minutes=1) + expire_time = datetime.datetime.utcnow() - datetime.timedelta( + minutes=1) data = {'id': token_id, 'a': 'b', 'expires': expire_time} data_ref = self.token_api.create_token(token_id, data) self.assertDictEqual(data_ref, data) diff --git a/tests/test_backend_kvs.py b/tests/test_backend_kvs.py index 6e2f0d4e..695fcd54 100644 --- a/tests/test_backend_kvs.py +++ b/tests/test_backend_kvs.py @@ -13,6 +13,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. + from keystone import test from keystone.identity.backends import kvs as identity_kvs from keystone.token.backends import kvs as token_kvs diff --git a/tests/test_backend_sql.py b/tests/test_backend_sql.py index 9ccc7826..5cb04f16 100644 --- a/tests/test_backend_sql.py +++ b/tests/test_backend_sql.py @@ -70,7 +70,7 @@ class SqlIdentity(test.TestCase, test_backend.IdentityTests): def test_create_null_tenant_name(self): tenant = {'id': uuid.uuid4().hex, 'name': None} - self.assertRaises(exception.Conflict, + self.assertRaises(exception.ValidationError, self.identity_api.create_tenant, tenant['id'], tenant) -- cgit