def test_delete_user_with_improper_permissions_domain_name(self): domain = self._get_default_domain() domains = self.domains.list() domain_id = domain.id filters = {} users = self._get_users(domain_id) domain_lookup = dict((d.id, d.name) for d in domains) api.keystone.domain_get(IsA(http.HttpRequest), '1').AndReturn(domain) for u in users: u.domain_name = domain_lookup.get(u.domain_id) for i in range(0, 2): api.keystone.user_list(IgnoreArg(), domain=domain_id, filters=filters) \ .AndReturn(users) api.keystone.domain_lookup(IgnoreArg()).AndReturn(domain_lookup) self.mox.ReplayAll() formData = {'action': 'users__delete__%s' % self.request.user.id} res = self.client.post(USERS_INDEX_URL, formData, follow=True) self.assertEqual( list(res.context['messages'])[0].message, u'You are not allowed to delete user: %s' % self.request.user.username)
def test_remove_user(self): group = self.groups.get(id="1") user = self.users.get(id="2") domain_id = self._get_domain_id() if api.keystone.VERSIONS.active >= 3: api.keystone.get_effective_domain_id( IgnoreArg()).AndReturn(domain_id) api.keystone.user_list(IgnoreArg(), group=group.id, domain=domain_id).AndReturn( self.users.list()) else: api.keystone.user_list(IgnoreArg(), group=group.id).AndReturn(self.users.list()) api.keystone.remove_group_user(IgnoreArg(), group_id=group.id, user_id=user.id) self.mox.ReplayAll() formData = {'action': 'group_members__removeGroupMember__%s' % user.id} res = self.client.post(GROUP_MANAGE_URL, formData) self.assertRedirectsNoFollow(res, GROUP_MANAGE_URL) self.assertMessageCount(success=1)
def test_create_with_password_mismatch(self): user = self.users.get(id="1") domain = self._get_default_domain() domain_id = domain.id api.keystone.get_default_domain(IgnoreArg()) \ .MultipleTimes().AndReturn(domain) api.keystone.tenant_list(IgnoreArg(), domain=domain_id, user=None) \ .AndReturn([self.tenants.list(), False]) api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list()) api.keystone.get_default_role(IgnoreArg()) \ .AndReturn(self.roles.first()) self.mox.ReplayAll() formData = {'method': 'CreateUserForm', 'domain_id': domain_id, 'name': user.name, 'email': user.email, 'password': user.password, 'project': self.tenant.id, 'role_id': self.roles.first().id, 'confirm_password': "******"} res = self.client.post(USER_CREATE_URL, formData) self.assertFormError(res, "form", None, ['Passwords do not match.'])
def test_modal_create_user_with_passwords_not_matching(self): domain = self._get_default_domain() api.keystone.get_default_domain(IgnoreArg()) \ .AndReturn(domain) api.keystone.tenant_list(IgnoreArg(), domain=None, user=None) \ .AndReturn([self.tenants.list(), False]) api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list()) api.keystone.user_list(IgnoreArg(), domain=None) \ .AndReturn(self.users.list()) api.keystone.get_default_role(IgnoreArg()) \ .AndReturn(self.roles.first()) self.mox.ReplayAll() self.selenium.get("%s%s" % (self.live_server_url, USERS_INDEX_URL)) # Open the modal menu self.selenium.find_element_by_id("users__action_create") \ .send_keys("\n") wait = self.ui.WebDriverWait(self.selenium, 10, ignored_exceptions=[socket_timeout]) wait.until(lambda x: self.selenium.find_element_by_id("id_name")) self.assertFalse(self._is_element_present("id_confirm_password_error"), "Password error element shouldn't yet exist.") self.selenium.find_element_by_id("id_name").send_keys("Test User") self.selenium.find_element_by_id("id_password").send_keys("test") self.selenium.find_element_by_id("id_confirm_password").send_keys("te") self.selenium.find_element_by_id("id_email").send_keys("*****@*****.**") self.assertTrue(self._is_element_present("id_confirm_password_error"), "Couldn't find password error element.")
def test_disable_user(self): domain = self._get_default_domain() domain_id = domain.id filters = {} user = self.users.get(id="2") users = self._get_users(domain_id) self.assertTrue(user.enabled) api.keystone.domain_get(IsA(http.HttpRequest), '1').AndReturn(domain) api.keystone.user_list(IgnoreArg(), domain=domain_id, filters=filters)\ .AndReturn(users) api.keystone.user_update_enabled(IgnoreArg(), user.id, False).AndReturn(user) api.keystone.domain_lookup(IgnoreArg()).AndReturn( {domain.id: domain.name}) self.mox.ReplayAll() formData = {'action': 'users__toggle__%s' % user.id} res = self.client.post(USERS_INDEX_URL, formData) self.assertRedirectsNoFollow(res, USERS_INDEX_URL)
def test_update_with_keystone_can_edit_user_false(self): user = self.users.get(id="1") domain_id = user.domain_id domain = self.domains.get(id=domain_id) api.keystone.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user) api.keystone.domain_get(IsA(http.HttpRequest), domain_id) \ .AndReturn(domain) if api.keystone.VERSIONS.active >= 3: api.keystone.tenant_list(IgnoreArg(), domain=domain_id).AndReturn( [self.tenants.list(), False]) else: api.keystone.tenant_list(IgnoreArg(), user=user.id).AndReturn( [self.tenants.list(), False]) api.keystone.keystone_can_edit_user().AndReturn(False) api.keystone.keystone_can_edit_user().AndReturn(False) self.mox.ReplayAll() formData = { 'method': 'UpdateUserForm', 'id': user.id, 'name': user.name, 'project': self.tenant.id, } res = self.client.post(USER_UPDATE_URL, formData) self.assertNoFormErrors(res) self.assertMessageCount(error=1)
def test_set_clear_domain_context(self): domain = self.domains.get(id="3") api.keystone.domain_get(IgnoreArg(), domain.id).AndReturn(domain) api.keystone.domain_get(IgnoreArg(), domain.id).AndReturn(domain) api.keystone.domain_list(IgnoreArg()).AndReturn(self.domains.list()) self.mox.ReplayAll() formData = {'action': 'domains__set_domain_context__%s' % domain.id} res = self.client.post(DOMAINS_INDEX_URL, formData) self.assertTemplateUsed(res, constants.DOMAINS_INDEX_VIEW_TEMPLATE) self.assertItemsEqual(res.context['table'].data, [ domain, ]) self.assertContains(res, "<em>another_test_domain:</em>") formData = {'action': 'domains__clear_domain_context__%s' % domain.id} res = self.client.post(DOMAINS_INDEX_URL, formData) self.assertTemplateUsed(res, constants.DOMAINS_INDEX_VIEW_TEMPLATE) self.assertItemsEqual(res.context['table'].data, self.domains.list()) self.assertNotContains(res, "<em>test_domain:</em>") self.assertNotContains(res, "<em>another_test_domain:</em>")
def test_add_user(self): group = self.groups.get(id="1") user = self.users.get(id="2") domain_id = group.domain_id api.keystone.get_effective_domain_id(IgnoreArg()).AndReturn(domain_id) api.keystone.group_get(IsA(http.HttpRequest), group.id).\ AndReturn(group) api.keystone.user_list(IgnoreArg(), domain=domain_id).\ AndReturn(self.users.list()) api.keystone.user_list(IgnoreArg(), domain=domain_id, group=group.id).\ AndReturn(self.users.list()[2:]) api.keystone.add_group_user(IgnoreArg(), group_id=group.id, user_id=user.id) self.mox.ReplayAll() formData = {'action': 'group_non_members__add__%s' % user.id} res = self.client.post(GROUP_ADD_MEMBER_URL, formData) self.assertRedirectsNoFollow(res, GROUP_MANAGE_URL) self.assertMessageCount(success=1)
def test_create_validation_for_password_too_long(self): user = self.users.get(id="1") domain = self._get_default_domain() domain_id = domain.id api.keystone.get_default_domain(IgnoreArg()) \ .MultipleTimes().AndReturn(domain) api.keystone.tenant_list(IgnoreArg(), domain=domain_id, user=None) \ .AndReturn([self.tenants.list(), False]) api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list()) api.keystone.get_default_role(IgnoreArg()) \ .AndReturn(self.roles.first()) self.mox.ReplayAll() # check password min-len verification formData = { 'method': 'CreateUserForm', 'domain_id': domain_id, 'name': user.name, 'email': user.email, 'password': '******', 'project': self.tenant.id, 'role_id': self.roles.first().id, 'confirm_password': '******' } res = self.client.post(USER_CREATE_URL, formData) self.assertFormError(res, "form", 'password', ['Password must be between 8 and 18 characters.'])
def test_error(self): socket.getaddrinfo('host', 25, socket.AF_INET).AndReturn([ (None, None, None, None, 'sockaddr') ]) socket.create_connection('sockaddr', IgnoreArg(), IgnoreArg()).AndRaise(socket.error('error')) self.mox.ReplayAll() with self.assertRaises(socket.error): self.socket_creator(('host', 25), 'timeout', 'source')
def test_query(self): channel = self.mox.CreateMock(pycares.Channel) self.mox.StubOutWithMock(pycares, 'Channel') self.mox.StubOutWithMock(gevent, 'spawn') pycares.Channel().AndReturn(channel) channel.query('example.com', 13, IgnoreArg()) gevent.spawn(IgnoreArg()) self.mox.ReplayAll() DNSResolver.query('example.com', 13)
def test_successful(self): socket.getaddrinfo('host', 25, socket.AF_INET).AndReturn([ (None, None, None, None, 'sockaddr') ]) socket.create_connection('sockaddr', IgnoreArg(), IgnoreArg()).AndReturn('socket') self.mox.ReplayAll() ret = self.socket_creator(('host', 25), 'timeout', 'source') self.assertEqual('socket', ret)
def test_delete_domain(self): domain = self.domains.get(id="2") api.keystone.domain_list(IgnoreArg()).AndReturn(self.domains.list()) api.keystone.domain_delete(IgnoreArg(), domain.id) self.mox.ReplayAll() formData = {'action': 'domains__delete__%s' % domain.id} res = self.client.post(DOMAINS_INDEX_URL, formData) self.assertRedirectsNoFollow(res, DOMAINS_INDEX_URL)
def test_create(self): user = self.users.get(id="1") domain = self._get_default_domain() domain_id = domain.id phone_number = "+81-3-1234-5678" role = self.roles.first() api.keystone.get_default_domain(IgnoreArg()) \ .AndReturn(domain) api.keystone.get_default_domain(IgnoreArg(), False) \ .AndReturn(domain) if api.keystone.VERSIONS.active >= 3: api.keystone.tenant_list(IgnoreArg(), domain=domain.id).AndReturn( [self.tenants.list(), False]) else: api.keystone.tenant_list(IgnoreArg(), user=None).AndReturn( [self.tenants.list(), False]) kwargs = {'phone_num': phone_number} api.keystone.user_create(IgnoreArg(), name=user.name, description=user.description, email=user.email, password=user.password, project=self.tenant.id, enabled=True, domain=domain_id, **kwargs).AndReturn(user) api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list()) api.keystone.get_default_role(IgnoreArg()).AndReturn(role) api.keystone.roles_for_user(IgnoreArg(), user.id, self.tenant.id) api.keystone.add_tenant_user_role(IgnoreArg(), self.tenant.id, user.id, role.id) self.mox.ReplayAll() formData = { 'method': 'CreateUserForm', 'domain_id': domain_id, 'name': user.name, 'description': user.description, 'email': user.email, 'password': user.password, 'project': self.tenant.id, 'role_id': self.roles.first().id, 'enabled': True, 'confirm_password': user.password, 'phone_num': phone_number } res = self.client.post(USER_CREATE_URL, formData) self.assertNoFormErrors(res) self.assertMessageCount(success=1)
def test_delete_group(self): domain_id = self._get_domain_id() group = self.groups.get(id="2") api.keystone.group_list(IgnoreArg(), domain=domain_id) \ .AndReturn(self.groups.list()) api.keystone.group_delete(IgnoreArg(), group.id) self.mox.ReplayAll() formData = {'action': 'groups__delete__%s' % group.id} res = self.client.post(GROUPS_INDEX_URL, formData) self.assertRedirectsNoFollow(res, GROUPS_INDEX_URL)
def test_index_with_domain_context(self): domain = self.domains.get(id="1") filters = {} self.setSessionValues(domain_context=domain.id, domain_context_name=domain.name) domain_tenants = [ tenant for tenant in self.tenants.list() if tenant.domain_id == domain.id ] api.keystone.tenant_list(IsA(http.HttpRequest), domain=domain.id, paginate=True, marker=None, filters=filters) \ .AndReturn([domain_tenants, False]) api.keystone.domain_lookup(IgnoreArg()).AndReturn( {domain.id: domain.name}) quotas.enabled_quotas(IsA(http.HttpRequest)).AndReturn(('instances', )) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'identity/projects/index.html') self.assertItemsEqual(res.context['table'].data, domain_tenants) self.assertContains(res, "<em>test_domain:</em>")
def test_ajax_loading_instances(self): server = self.servers.first() flavor = self.flavors.list()[0] tenant = self.tenants.list()[0] api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(objectify.objectify(server)) api.nova.extension_supported('AdminActions', IsA(http.HttpRequest)) \ .MultipleTimes().AndReturn(True) api.nova.extension_supported('Shelve', IsA(http.HttpRequest)) \ .MultipleTimes().AndReturn(True) api.nova.flavor_get(IsA(http.HttpRequest), server.flavor['id']).AndReturn(flavor) api.network.servers_update_addresses(IsA(http.HttpRequest), IgnoreArg()) api.keystone.tenant_get(IsA(http.HttpRequest), server.tenant_id, admin=True).AndReturn(tenant) self.mox.ReplayAll() url = (INDEX_URL + "?action=row_update&table=instances&obj_id=" + server.id) res = self.client.get(url, {}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertTemplateUsed(res, "horizon/common/_data_table_row.html") self.assertContains(res, "test_tenant", 1, 200) self.assertContains(res, "instance-host", 1, 200) # two instances of name, other name comes from row data-display self.assertContains(res, "server_1", 2, 200) self.assertContains(res, "10.0.0.1", 1, 200) self.assertContains(res, "RAM</th><td>512MB", 1, 200) self.assertContains(res, "VCPUs</th><td>1", 1, 200) self.assertContains(res, "Size</th><td>0 GB", 1, 200) self.assertContains(res, "Active", 1, 200) self.assertContains(res, "Running", 1, 200)
def _test_base_index(self): api.base.is_service_enabled(IsA(http.HttpRequest), IgnoreArg()) \ .MultipleTimes().AndReturn(True) services = self.services.list() api.nova.service_list(IsA(http.HttpRequest)).AndReturn(services) api.neutron.is_extension_supported(IsA(http.HttpRequest), 'agent').AndReturn(True) agents = self.agents.list() api.neutron.agent_list(IsA(http.HttpRequest)).AndReturn(agents) cinder_services = self.cinder_services.list() api.cinder.service_list(IsA(http.HttpRequest)).\ AndReturn(cinder_services) heat_services = self.heat_services.list() api.heat.service_list(IsA(http.HttpRequest)).\ AndReturn(heat_services) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'admin/info/index.html') return res
def test_router_delete(self): router = self.routers.first() quota_data = self.neutron_quota_usages.first() api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id).AndReturn( self.routers.list()) quotas.tenant_quota_usages( IsA(http.HttpRequest), targets=('router', )) \ .MultipleTimes().AndReturn(quota_data) api.neutron.is_extension_supported(IsA(http.HttpRequest), "router_availability_zone")\ .MultipleTimes().AndReturn(True) self._mock_external_network_list() api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id).AndReturn( self.routers.list()) self._mock_external_network_list() api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id).AndReturn( self.routers.list()) self._mock_external_network_list() api.neutron.port_list(IsA(http.HttpRequest), device_id=router.id, device_owner=IgnoreArg())\ .AndReturn([]) api.neutron.router_delete(IsA(http.HttpRequest), router.id) self.mox.ReplayAll() res = self.client.get(self.INDEX_URL) formData = {'action': 'routers__delete__' + router.id} res = self.client.post(self.INDEX_URL, formData, follow=True) self.assertNoFormErrors(res) self.assertMessageCount(response=res, success=1) self.assertIn('Deleted Router: ' + router.name, res.content.decode('utf-8'))
def test_update_with_no_email_attribute(self): user = self.users.get(id="5") domain_id = user.domain_id domain = self.domains.get(id=domain_id) api.keystone.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user) api.keystone.domain_get(IsA(http.HttpRequest), domain_id).AndReturn(domain) api.keystone.tenant_list(IgnoreArg(), domain=domain_id, user=user.id) \ .AndReturn([self.tenants.list(), False]) api.keystone.user_update(IsA(http.HttpRequest), user.id, email=user.email, name=user.name, project=self.tenant.id, description=user.description).AndReturn(None) self.mox.ReplayAll() formData = { 'method': 'UpdateUserForm', 'id': user.id, 'name': user.name, 'description': user.description, 'email': "", 'project': self.tenant.id } res = self.client.post(USER_UPDATE_URL, formData) self.assertNoFormErrors(res)
def test_router_delete(self): router = self.routers.first() tenants = self.tenants.list() api.neutron.router_list(IsA( http.HttpRequest), search_opts=None).AndReturn(self.routers.list()) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) self._mock_external_network_list() api.neutron.router_list(IsA( http.HttpRequest), search_opts=None).AndReturn(self.routers.list()) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) self._mock_external_network_list() api.neutron.port_list(IsA(http.HttpRequest), device_id=router.id, device_owner=IgnoreArg())\ .AndReturn([]) api.neutron.router_delete(IsA(http.HttpRequest), router.id) api.neutron.router_list(IsA( http.HttpRequest), search_opts=None).AndReturn(self.routers.list()) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) self._mock_external_network_list() self.mox.ReplayAll() res = self.client.get(self.INDEX_URL) formData = {'action': 'routers__delete__' + router.id} res = self.client.post(self.INDEX_URL, formData, follow=True) self.assertNoFormErrors(res) self.assertMessageCount(response=res, success=1) self.assertIn('Deleted Router: ' + router.name, res.content.decode('utf-8'))
def test_get_update_form_init_values(self): user = self.users.get(id="1") domain_id = user.domain_id domain = self.domains.get(id=domain_id) api.keystone.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user) api.keystone.domain_get(IsA(http.HttpRequest), domain_id).AndReturn(domain) api.keystone.tenant_list(IgnoreArg(), domain=domain_id, user=user.id) \ .AndReturn([self.tenants.list(), False]) self.mox.ReplayAll() res = self.client.get(USER_UPDATE_URL) # Check that the form contains the default values as initialized by # the UpdateView self.assertEqual(res.context['form']['name'].value(), user.name) self.assertEqual(res.context['form']['email'].value(), user.email) self.assertEqual(res.context['form']['description'].value(), user.description) self.assertEqual(res.context['form']['project'].value(), user.project_id) self.assertEqual(res.context['form']['domain_id'].value(), user.domain_id) self.assertEqual(res.context['form']['domain_name'].value(), domain.name)
def test_index_with_domain(self): domain = self.domains.get(id="1") filters = {} self.setSessionValues(domain_context=domain.id, domain_context_name=domain.name) groups = self._get_groups(domain.id) api.keystone.get_effective_domain_id(IgnoreArg()).AndReturn(domain.id) api.keystone.group_list(IsA(http.HttpRequest), domain=domain.id, filters=filters).AndReturn(groups) self.mox.ReplayAll() res = self.client.get(GROUPS_INDEX_URL) self.assertTemplateUsed(res, constants.GROUPS_INDEX_VIEW_TEMPLATE) self.assertItemsEqual(res.context['table'].data, groups) if domain.id: for group in res.context['table'].data: self.assertItemsEqual(group.domain_id, domain.id) self.assertContains(res, 'Create Group') self.assertContains(res, 'Edit') self.assertContains(res, 'Delete Group')
def test_router_delete(self): router = self.routers.first() quota_data = self.quota_usages.first() quota_data['routers']['available'] = 5 api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id, search_opts=None).AndReturn( self.routers.list()) quotas.tenant_quota_usages( IsA(http.HttpRequest)) \ .MultipleTimes().AndReturn(quota_data) self._mock_external_network_list() api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id, search_opts=None).AndReturn( self.routers.list()) self._mock_external_network_list() api.neutron.router_list(IsA(http.HttpRequest), tenant_id=self.tenant.id, search_opts=None).AndReturn( self.routers.list()) self._mock_external_network_list() api.neutron.port_list(IsA(http.HttpRequest), device_id=router.id, device_owner=IgnoreArg())\ .AndReturn([]) api.neutron.router_delete(IsA(http.HttpRequest), router.id) self.mox.ReplayAll() res = self.client.get(self.INDEX_URL) formData = {'action': 'Routers__delete__' + router.id} res = self.client.post(self.INDEX_URL, formData, follow=True) self.assertNoFormErrors(res) self.assertMessageCount(response=res, success=1) self.assertIn('Deleted Router: ' + router.name, res.content)
def test_enable_disable_user_exception(self): domain = self._get_default_domain() domain_id = domain.id user = self.users.get(id="2") users = self._get_users(domain_id) user.enabled = False api.keystone.user_list(IgnoreArg(), domain=domain_id) \ .AndReturn(users) api.keystone.user_update_enabled(IgnoreArg(), user.id, True) \ .AndRaise(self.exceptions.keystone) self.mox.ReplayAll() formData = {'action': 'users__toggle__%s' % user.id} res = self.client.post(USERS_INDEX_URL, formData) self.assertRedirectsNoFollow(res, USERS_INDEX_URL)
def test_delete_vip(self): pool = self.pools.first() vip = self.vips.first() api.lbaas.pool_list( IsA(http.HttpRequest), tenant_id=self.tenant.id) \ .AndReturn(self.pools.list()) api.lbaas.pool_get(IsA(http.HttpRequest), pool.id).AndReturn(pool) api.network.floating_ip_supported(IgnoreArg()).MultipleTimes() \ .AndReturn(True) api.network.floating_ip_simple_associate_supported(IgnoreArg()) \ .MultipleTimes().AndReturn(True) api.lbaas.vip_delete(IsA(http.HttpRequest), vip.id) self.mox.ReplayAll() form_data = {"action": "poolstable__deletevip__%s" % pool.id} res = self.client.post(self.INDEX_URL, form_data) self.assertNoFormErrors(res)
def test_disabling_current_user(self): domain = self._get_default_domain() domain_id = domain.id users = self._get_users(domain_id) for i in range(0, 2): api.keystone.user_list(IgnoreArg(), domain=domain_id) \ .AndReturn(users) api.keystone.domain_lookup(IgnoreArg()).AndReturn( {domain.id: domain.name}) self.mox.ReplayAll() formData = {'action': 'users__toggle__%s' % self.request.user.id} res = self.client.post(USERS_INDEX_URL, formData, follow=True) self.assertEqual( list(res.context['messages'])[0].message, u'You cannot disable the user you are currently ' u'logged in as.')
def test_index(self): domain = self._get_default_domain() domain_id = domain.id users = self._get_users(domain_id) api.keystone.get_effective_domain_id(IgnoreArg()).AndReturn(domain_id) api.keystone.user_list(IgnoreArg(), domain=domain_id).AndReturn(users) api.keystone.domain_lookup(IgnoreArg()).AndReturn( {domain.id: domain.name}) self.mox.ReplayAll() res = self.client.get(USERS_INDEX_URL) self.assertTemplateUsed(res, 'identity/users/index.html') self.assertItemsEqual(res.context['table'].data, users) if domain_id: for user in res.context['table'].data: self.assertItemsEqual(user.domain_id, domain_id)
def test_delete_group(self): domain_id = self._get_domain_id() filters = {} group = self.groups.get(id="2") domain = self.domains.get(id="1") api.keystone.domain_get(IsA(http.HttpRequest), '1').AndReturn(domain) api.keystone.group_list(IgnoreArg(), domain=domain_id, filters=filters) \ .AndReturn(self.groups.list()) api.keystone.group_delete(IgnoreArg(), group.id) self.mox.ReplayAll() formData = {'action': 'groups__delete__%s' % group.id} res = self.client.post(GROUPS_INDEX_URL, formData) self.assertRedirectsNoFollow(res, GROUPS_INDEX_URL)
def test_delete_user_with_improper_permissions(self): domain = self._get_default_domain() domain_id = domain.id users = self._get_users(domain_id) for i in range(0, 2): api.keystone.user_list(IgnoreArg(), domain=domain_id) \ .AndReturn(users) api.keystone.domain_lookup(IgnoreArg()).AndReturn( {domain.id: domain.name}) self.mox.ReplayAll() formData = {'action': 'users__delete__%s' % self.request.user.id} res = self.client.post(USERS_INDEX_URL, formData, follow=True) self.assertEqual( list(res.context['messages'])[0].message, u'You are not allowed to delete user: %s' % self.request.user.username)