Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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.'])
Пример #4
0
    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.")
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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>")
Пример #8
0
    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)
Пример #9
0
    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.'])
Пример #10
0
 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')
Пример #11
0
 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)
Пример #12
0
 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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
    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)
Пример #16
0
    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>")
Пример #17
0
    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)
Пример #18
0
    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
Пример #19
0
    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'))
Пример #20
0
    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)
Пример #21
0
    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'))
Пример #22
0
    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)
Пример #23
0
    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')
Пример #24
0
    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)
Пример #25
0
    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)
Пример #26
0
    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)
Пример #27
0
    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.')
Пример #28
0
    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)
Пример #29
0
    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)
Пример #30
0
    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)