Beispiel #1
0
    def test_update(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1',
                     admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(),
                        admin=True).AndReturn(self.tenants.list())
        api.keystone.user_update(IsA(http.HttpRequest),
                                 user.id,
                                 email=u'*****@*****.**',
                                 name=u'test_user').AndReturn(None)
        api.user_update_tenant(IsA(http.HttpRequest),
                               user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest),
                                    user.id,
                                    self.tenant.id).AndReturn(None)
        api.user_update_password(IsA(http.HttpRequest),
                                 user.id,
                                 IgnoreArg()).AndReturn(None)

        self.mox.ReplayAll()

        formData = {'method': 'UpdateUserForm',
                    'id': user.id,
                    'name': user.name,
                    'email': user.email,
                    'password': '******',
                    'tenant_id': self.tenant.id,
                    'confirm_password': '******'}

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
Beispiel #2
0
    def test_update(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone.user_update(IsA(http.HttpRequest),
                                 user.id,
                                 email=u'*****@*****.**',
                                 name=u'test_user').AndReturn(None)
        api.user_update_tenant(IsA(http.HttpRequest), user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest), user.id,
                                    self.tenant.id).AndReturn(None)
        api.user_update_password(IsA(http.HttpRequest), user.id,
                                 IgnoreArg()).AndReturn(None)

        self.mox.ReplayAll()

        formData = {
            'method': 'UpdateUserForm',
            'id': user.id,
            'name': user.name,
            'email': user.email,
            'password': '******',
            'tenant_id': self.tenant.id,
            'confirm_password': '******'
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
Beispiel #3
0
    def test_update_with_keystone_can_edit_user_false(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest),
                     '1',
                     admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone_can_edit_user().AndReturn(False)
        api.keystone_can_edit_user().AndReturn(False)
        api.user_update_tenant(IsA(http.HttpRequest),
                               user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest),
                                    user.id,
                                    self.tenant.id).AndReturn(None)

        self.mox.ReplayAll()

        formData = {'method': 'UpdateUserForm',
                    'id': user.id,
                    'name': user.name,
                    'tenant_id': self.tenant.id, }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
Beispiel #4
0
    def test_update(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), "1", admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone.user_update(
            IsA(http.HttpRequest), user.id, email=u"*****@*****.**", name=u"test_user"
        ).AndReturn(None)
        api.user_update_tenant(IsA(http.HttpRequest), user.id, self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest), user.id, self.tenant.id).AndReturn(None)
        api.user_update_password(IsA(http.HttpRequest), user.id, IgnoreArg()).AndReturn(None)

        self.mox.ReplayAll()

        formData = {
            "method": "UpdateUserForm",
            "id": user.id,
            "name": user.name,
            "email": user.email,
            "password": "******",
            "tenant_id": self.tenant.id,
            "confirm_password": "******",
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
Beispiel #5
0
    def test_update_with_keystone_can_edit_user_false(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone_can_edit_user().AndReturn(False)
        api.keystone_can_edit_user().AndReturn(False)
        api.user_update_tenant(IsA(http.HttpRequest), user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest), user.id,
                                    self.tenant.id).AndReturn(None)

        self.mox.ReplayAll()

        formData = {
            'method': 'UpdateUserForm',
            'id': user.id,
            'name': user.name,
            'tenant_id': self.tenant.id,
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
Beispiel #6
0
 def get_object(self, *args, **kwargs):
     user_id = kwargs['user_id']
     try:
         return api.user_get(self.request, user_id)
     except Exception as e:
         LOG.exception('Error fetching user with id "%s"' % user_id)
         messages.error(self.request,
                        _('Unable to update user: %s') % e.message)
         raise http.Http404("User with id %s not found." % user_id)
Beispiel #7
0
 def get_object(self, *args, **kwargs):
     user_id = kwargs['user_id']
     try:
         return api.user_get(self.request, user_id)
     except Exception as e:
         LOG.exception('Error fetching user with id "%s"' % user_id)
         messages.error(self.request,
                        _('Unable to update user: %s') % e.message)
         raise http.Http404("User with id %s not found." % user_id)
Beispiel #8
0
 def get_object(self, *args, **kwargs):
     user_id = kwargs['user_id']
     try:
         return api.user_get(self.request, user_id, admin=True)
     except:
         redirect = reverse("horizon:syspanel:users:index")
         exceptions.handle(self.request,
                           _('Unable to update user.'),
                           redirect=redirect)
Beispiel #9
0
def update(request, user_id):
    user = api.user_get(request, user_id)
    form, handled = UserUpdateForm.maybe_handle(
        request,
        initial={"id": user_id, "tenant_id": getattr(user, "tenantId", None), "email": getattr(user, "email", "")},
    )
    if handled:
        return handled
    return shortcuts.render(request, "syspanel/users/update.html", {"form": form, "user_id": user_id})
Beispiel #10
0
 def get_object(self, *args, **kwargs):
     user_id = kwargs['user_id']
     try:
         return api.user_get(self.request, user_id, admin=True)
     except:
         redirect = reverse("horizon:syspanel:users:index")
         exceptions.handle(self.request,
                           _('Unable to update user.'),
                           redirect=redirect)
Beispiel #11
0
 def get_object(self):
     if not hasattr(self, "_object"):
         try:
             self._object = api.user_get(self.request,
                                         self.kwargs['user_id'],
                                         admin=True)
         except:
             redirect = reverse("horizon:admin:users:index")
             exceptions.handle(self.request,
                               _('Unable to update user.'),
                               redirect=redirect)
     return self._object
Beispiel #12
0
    def test_user_get(self):
        keystoneclient = self.stub_keystoneclient()

        keystoneclient.users = self.mox.CreateMockAnything()
        keystoneclient.users.get(TEST_USERNAME).AndReturn(TEST_RETURN)

        self.mox.ReplayAll()

        ret_val = api.user_get(self.request, TEST_USERNAME)

        self.assertIsInstance(ret_val, api.User)
        self.assertEqual(ret_val._apiresource, TEST_RETURN)
Beispiel #13
0
def update(request, user_id):
    user = api.user_get(request, user_id)
    form, handled = UserUpdateForm.maybe_handle(request, initial={
                                'id': user_id,
                                'tenant_id': getattr(user, 'tenantId', None),
                                'email': getattr(user, 'email', '')})
    if handled:
        return handled
    return shortcuts.render(request,
                            'syspanel/users/update.html', {
                                'form': form,
                                'user_id': user_id})
Beispiel #14
0
def update(request, user_id):
    user = api.user_get(request, user_id)
    form, handled = UserUpdateForm.maybe_handle(request, initial={
                                'id': user_id,
                                'tenant_id': getattr(user, 'tenantId', None),
                                'email': getattr(user, 'email', '')})
    if handled:
        return handled
    return shortcuts.render(request,
                            'syspanel/users/update.html', {
                                'form': form,
                                'user_id': user_id})
Beispiel #15
0
    def test_update_validation_for_password_too_long(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), "1", admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())

        self.mox.ReplayAll()

        formData = {
            "method": "UpdateUserForm",
            "id": user.id,
            "name": user.name,
            "email": user.email,
            "password": "******",
            "tenant_id": self.tenant.id,
            "confirm_password": "******",
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertFormError(res, "form", "password", ["Password must be between 8 and 18 characters."])
Beispiel #16
0
 def get_object(self):
     if not hasattr(self, "_object"):
         try:
             self._object = api.user_get(self.request,
                                         self.kwargs['user_id'],
                                         admin=True)
         except:
             redirect = reverse("horizon:syspanel:users:index")
             exceptions.handle(self.request,
                               _('Unable to update user.'),
                               redirect=redirect)
     return self._object
Beispiel #17
0
    def test_update_validation_for_password_too_long(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())

        self.mox.ReplayAll()

        formData = {
            'method': 'UpdateUserForm',
            'id': user.id,
            'name': user.name,
            'email': user.email,
            'password': '******',
            'tenant_id': self.tenant.id,
            'confirm_password': '******'
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertFormError(res, "form", 'password',
                             ['Password must be between 8 and 18 characters.'])
Beispiel #18
0
    def test_update_validation_for_password_too_long(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1',
                     admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(),
                        admin=True).AndReturn(self.tenants.list())

        self.mox.ReplayAll()

        formData = {'method': 'UpdateUserForm',
                    'id': user.id,
                    'name': user.name,
                    'email': user.email,
                    'password': '******',
                    'tenant_id': self.tenant.id,
                    'confirm_password': '******'}

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertFormError(
                res, "form", 'password',
                ['Password must be between 8 and 18 characters.'])
Beispiel #19
0
    def test_update_user_field_validation(self):
        user = self.users.get(id="1")
        self.mox.StubOutWithMock(api, 'tenant_list')
        self.mox.StubOutWithMock(api, 'user_get')
        self.mox.StubOutWithMock(api.keystone, 'user_update')
        self.mox.StubOutWithMock(api, 'user_update_tenant')
        self.mox.StubOutWithMock(api, 'user_update_password')

        api.keystone.user_update(IsA(http.HttpRequest),
                                 user.id,
                                 confirm_password=u'normalpwd',
                                 email=u'*****@*****.**',
                                 name=u'test_user').AndReturn(None)
        api.user_update_tenant(IsA(http.HttpRequest),
                               user.id,
                               self.tenant.id).AndReturn(None)
        api.user_update_password(IsA(http.HttpRequest),
                               user.id,
                               IgnoreArg()).AndReturn(None)
        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        self.mox.ReplayAll()
        user.tenantId = 1

        formData = {'method': 'UpdateUserForm',
                    'id': 1,
                    'name': user.name,
                    'email': user.email,
                    'password': '******',
                    'tenant_id': self.tenant.id,
                    'confirm_password': '******'}

        # check successful update
        res = self.client.post(USER_UPDATE_URL, formData)
        self.assertNoFormErrors(res)

        # check password min-len verification
        formData['password'] = '******'
        formData['confirm_password'] = '******'

        res = self.client.post(USER_UPDATE_URL, formData)
        self.assertFormError(
            res, "form", 'password',
            ['Password must be between 8 and 18 characters.'])

        # check password max-len verification
        formData['password'] = '******'
        formData['confirm_password'] = '******'

        res = self.client.post(USER_UPDATE_URL, formData)
        self.assertFormError(
            res, "form", 'password',
            ['Password must be between 8 and 18 characters.'])
Beispiel #20
0
def update(request, user_id):
    user = api.user_get(request, user_id)
    form, handled = UserUpdateForm.maybe_handle(request, initial={
                                'id': user_id,
                                'tenant_id': getattr(user, 'tenantId', None),
                                'email': getattr(user, 'email', '')})
    if handled:
        return handled

    context = {'form': form,
               'user_id': user_id}
    if request.is_ajax():
        template = 'syspanel/users/_update.html'
        context['hide'] = True
    else:
        template = 'syspanel/users/update.html'

    return shortcuts.render(request, template, context)
Beispiel #21
0
def update(request, user_id):
    if request.method == "POST":
        tenants = api.tenant_list(request)
        form = UserUpdateForm(request.POST, tenant_list=tenants)
        if form.is_valid():
            user = form.clean()
            updated = []
            if user['email']:
                updated.append('email')
                api.user_update_email(request, user['id'], user['email'])
            if user['password']:
                updated.append('password')
                api.user_update_password(request, user['id'], user['password'])
            if user['tenant_id']:
                updated.append('tenant')
                api.user_update_tenant(request, user['id'], user['tenant_id'])
            messages.success(request,
                             _('Updated %(attrib)s for %(user)s.') %
                             {"attrib": ', '.join(updated), "user": user_id})
            return shortcuts.redirect('horizon:syspanel:users:index')
        else:
            # TODO add better error management
            messages.error(request,
                           _('Unable to update user, please try again.'))

            return shortcuts.render(request,
                                    'syspanel/users/update.html', {
                                        'form': form,
                                        'user_id': user_id})

    else:
        user = api.user_get(request, user_id)
        tenants = api.tenant_list(request)
        form = UserUpdateForm(tenant_list=tenants,
                              initial={'id': user_id,
                                       'tenant_id': getattr(user,
                                                            'tenantId',
                                                            None),
                                       'email': getattr(user, 'email', '')})
        return shortcuts.render(request,
                                'syspanel/users/update.html', {
                                    'form': form,
                                    'user_id': user_id})