def test_render_list_descriptions(self):
        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role1.description = 'Role One desc'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'
        role2.description = 'Role Two desc'

        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])
        request = self.factory.get('/roleselecttest')
        request.cradmin_instance = cradmin_instance

        response = RoleSelectView.as_view()(request)
        self.assertEquals(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(
            selector.count('.test-cradmin-roleselect-list__itemdescription'),
            2)
        titletextlist = [
            element.alltext_normalized for element in selector.list(
                '.test-cradmin-roleselect-list__itemdescription')
        ]
        self.assertEquals(titletextlist, ['Role One desc', 'Role Two desc'])
Beispiel #2
0
    def test_get(self):
        class SimpleDeleteView(formview.WithinRoleDeleteView):
            def get_queryset_for_role(self):
                queryset = mock.MagicMock()
                return queryset

            def get_object(self, queryset=None):
                obj = mock.MagicMock()
                obj.__str__.return_value = 'Simple Test Item'
                obj._meta = mock.MagicMock()
                obj._meta.verbose_name = 'TestModel'
                return obj

        request = self.factory.get('/test')
        request.cradmin_app = mock.MagicMock()
        request.cradmin_instance = mock.MagicMock()
        response = SimpleDeleteView.as_view()(request, pk=10)
        response.render()
        selector = htmls.S(response.content)

        self.assertEqual(
            selector.one('form')['action'], 'http://testserver/test')
        self.assertEqual(
            selector.one('h1.test-primary-h1').alltext_normalized,
            'Confirm delete')
        self.assertEqual(
            selector.one('.test-confirm-message').alltext_normalized,
            'Are you sure you want to delete "Simple Test Item"?')
 def test_200_on_multiple(self):
     cradmin_instance = mock.MagicMock()
     cradmin_instance.get_rolequeryset.return_value.count = mock.MagicMock(
         return_value=2)
     request = self.factory.get('/roleselecttest')
     request.cradmin_instance = cradmin_instance
     response = RoleSelectView.as_view()(request)
     self.assertEquals(response.status_code, 200)
Beispiel #4
0
 def add_essential_cradmin_attributes_to_request(self, request, requestuser, cradmin_role, cradmin_app,
                                                 cradmin_instance, sessionmock, messagesmock):
     request.user = requestuser or self.create_default_user_for_mock_request()
     request.cradmin_role = cradmin_role or mock.MagicMock()
     request.cradmin_app = cradmin_app or mock.MagicMock()
     request.cradmin_instance = cradmin_instance or mock.MagicMock()
     request.session = sessionmock or mock.MagicMock()
     request._messages = messagesmock or mock.MagicMock()
     return request
 def __mock_cradmin_instance(self, roles):
     cradmin_instance = mock.MagicMock()
     cradmin_instance.get_rolequeryset.return_value.count = mock.MagicMock(
         return_value=len(roles))
     cradmin_instance.get_rolequeryset.return_value.__len__.return_value = len(
         roles)
     cradmin_instance.get_titletext_for_role = lambda role: role.title
     cradmin_instance.get_descriptionhtml_for_role = lambda role: format_html(
         u'<p>{}<p>', role.description)
     cradmin_instance.get_roleid = lambda role: role.id
     cradmin_instance.rolefrontpage_url = lambda roleid: '/role/{}'.format(
         roleid)
     cradmin_instance.get_rolequeryset.return_value = QuerySetMock(
         None, *roles)
     return cradmin_instance
Beispiel #6
0
    def test_send(self):
        testtoken = mock.MagicMock()
        testtoken.token = 'test-token'
        testrequest = mock.MagicMock()
        testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(path)

        with mock.patch.object(ActivationEmail, 'generate_token', lambda s: testtoken):
            with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'):
                ActivationEmail(user=self.testuser, request=testrequest).send()
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Activate your Testsite account')
        self.assertIn('http://testserver/cradmin_activate_account/activate/test-token',
                      mail.outbox[0].alternatives[0][0])
        self.assertIn('Click the button below to activate your Testsite account, testuser.',
                      mail.outbox[0].alternatives[0][0])
Beispiel #7
0
 def test_without_description(self):
     rendered = listbuilder.itemvalue.TitleDescription(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertFalse(
         selector.exists(
             '.test-cradmin-listbuilder-title-description__description'))
Beispiel #8
0
    def test_post(self):
        obj = mock.MagicMock()

        class SimpleDeleteView(formview.WithinRoleDeleteView):
            def get_queryset_for_role(self):
                queryset = mock.MagicMock()
                return queryset

            def get_object(self, queryset=None):
                return obj

        request = self.factory.post('/test')
        request._messages = mock.MagicMock()
        request.cradmin_app = mock.MagicMock()
        SimpleDeleteView.as_view()(request, pk=10)
        obj.delete.assert_called_once_with()
Beispiel #9
0
 def test_generate_generictoken_with_email(self):
     token = InviteUrlMock(
         request=mock.MagicMock(),
         private=True,
         content_object=self.invite_target).generate_generictoken(
             email='*****@*****.**')
     self.assertEquals(token.metadata['email'], '*****@*****.**')
Beispiel #10
0
 def test_viewbutton_not_rendered(self):
     rendered = listbuilder.itemvalue.EditDelete(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertFalse(
         selector.exists(
             '.test-cradmin-listbuilder-edit-delete__previewbutton'))
Beispiel #11
0
 def test_delete_aria_label(self):
     rendered = listbuilder.itemvalue.EditDelete(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertEqual(
         'Delete "testvalue"',
         selector.one('.test-cradmin-listbuilder-edit-delete__deletebutton')
         ['aria-label'])
Beispiel #12
0
 def test_delete_label(self):
     rendered = listbuilder.itemvalue.EditDelete(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertEqual(
         'Delete',
         selector.one('.test-cradmin-listbuilder-edit-delete__deletebutton'
                      ).alltext_normalized)
Beispiel #13
0
 def test_title(self):
     rendered = listbuilder.itemvalue.TitleDescription(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertEqual(
         'testvalue',
         selector.one('.test-cradmin-listbuilder-title-description__title').
         alltext_normalized)
Beispiel #14
0
 def test_get_share_url(self):
     testrequest = mock.MagicMock()
     testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(
         path)
     self.assertEqual(
         InviteUrlWithStaticTokenMock(
             request=testrequest,
             private=True,
             content_object=self.invite_target).get_share_url(),
         'http://testserver/invite/accept/test-token')
Beispiel #15
0
 def test_preview_aria_label(self):
     mockrequest = mock.MagicMock()
     mockrequest.cradmin_app.reverse_appurl.return_value = '/preview'
     rendered = listbuilder.itemvalue.EditDeleteWithPreview(value='testvalue')\
         .render(request=mockrequest)
     selector = htmls.S(rendered)
     self.assertEqual(
         'View "testvalue"',
         selector.one('.test-cradmin-listbuilder-edit-delete__previewbutton'
                      )['aria-label'])
    def test_render_pagetitle(self):
        class CustomRoleSelectView(RoleSelectView):
            pagetitle = u'Test title'

        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'

        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])
        request = self.factory.get('/roleselecttest')
        request.cradmin_instance = cradmin_instance

        response = CustomRoleSelectView.as_view()(request)
        self.assertEquals(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)
        self.assertEqual(selector.one('h1').alltext_normalized, 'Test title')
 def test_post_success_message(self):
     self._create_generic_token_with_metadata(
         token='valid-token',
         user=self.testuser,
         metadata={'next_url': '/next'})
     request = RequestFactory().get('/test')
     request.user = self.testuser
     request._messages = mock.MagicMock()
     ActivateAccountView.as_view()(request, token='valid-token')
     request._messages.add.assert_called_once_with(
         messages.SUCCESS, 'Your account is now active.', '')
Beispiel #18
0
 def test_render(self):
     rendered = listbuilder.base.ItemFrameRenderer(
         inneritem=listbuilder.base.ItemValueRenderer(
             value='testvalue')).render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertTrue(
         selector.exists('.django-cradmin-listbuilder-itemframe'))
     self.assertEqual(
         'testvalue',
         selector.one(
             '.django-cradmin-listbuilder-itemvalue').alltext_normalized)
Beispiel #19
0
 def test_with_description(self):
     class MyEditDelete(listbuilder.itemvalue.TitleDescription):
         def get_description(self):
             return 'The description'
     rendered = MyEditDelete(value='testvalue')\
         .render(request=mock.MagicMock())
     selector = htmls.S(rendered)
     self.assertEqual(
         'The description',
         selector.one(
             '.test-cradmin-listbuilder-title-description__description').
         alltext_normalized)
    def test_render_list_urls(self):
        role1 = mock.MagicMock()
        role1.id = 1
        role1.title = 'Role One'
        role2 = mock.MagicMock()
        role2.id = 2
        role2.title = 'Role Two'

        cradmin_instance = self.__mock_cradmin_instance(roles=[role1, role2])
        request = self.factory.get('/roleselecttest')
        request.cradmin_instance = cradmin_instance

        response = RoleSelectView.as_view()(request)
        self.assertEquals(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)

        urllist = [
            element['href']
            for element in selector.list('.test-cradmin-roleselect-list__item')
        ]
        self.assertEquals(urllist, ['/role/1', '/role/2'])
Beispiel #21
0
 def test_get_share_url_public(self):
     testrequest = mock.MagicMock()
     testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(
         path)
     inviteurl = InviteUrlWithTokenIteratorMock(
         request=testrequest,
         private=False,
         content_object=self.invite_target)
     self.assertEqual(inviteurl.get_share_url(),
                      'http://testserver/invite/accept/token1')
     self.assertEqual(inviteurl.get_share_url(),
                      'http://testserver/invite/accept/token1')
     self.assertEqual(inviteurl.get_share_url(),
                      'http://testserver/invite/accept/token1')
Beispiel #22
0
    def test_send_email(self):
        testrequest = mock.MagicMock()
        testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(
            path)

        with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'):
            InviteUrlWithStaticTokenMock(request=testrequest, content_object=self.invite_target, private=True)\
                .send_email('*****@*****.**')
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Invitation to Testsite')
        self.assertIn('http://testserver/invite/accept/test-token',
                      mail.outbox[0].alternatives[0][0])
        self.assertIn('Click the button below to accept the invite.',
                      mail.outbox[0].alternatives[0][0])
Beispiel #23
0
    def test_post_success_message(self):
        self._create_generic_token_with_metadata(
            token='valid-token', user=self.testuser)

        request = RequestFactory().post('/test', {
            'password1': 'newpassword',
            'password2': 'newpassword',
        })
        request.user = self.testuser
        request._messages = mock.MagicMock()

        with self.settings(DJANGO_CRADMIN_RESETPASSWORD_FINISHED_REDIRECT_URL='http://example.com'):
            ResetPasswordView.as_view()(request, token='valid-token')
        request._messages.add.assert_called_once_with(
            messages.SUCCESS, 'Your password has been updated.', '')
Beispiel #24
0
    def test_send_email_private(self):
        testrequest = mock.MagicMock()
        testrequest.build_absolute_uri = lambda path: 'http://testserver{}'.format(
            path)

        with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'):
            inviteurl = InviteUrlWithTokenIteratorMock(
                request=testrequest,
                content_object=self.invite_target,
                private=True)
            inviteurl.send_email('*****@*****.**', '*****@*****.**',
                                 '*****@*****.**')
        self.assertIn('token1', mail.outbox[0].body)
        self.assertIn('token2', mail.outbox[1].body)
        self.assertIn('token3', mail.outbox[2].body)
Beispiel #25
0
 def test_render(self):
     testlist = listbuilder.base.List()
     testlist.append(listbuilder.base.ItemValueRenderer(value='testvalue1'))
     testlist.append(listbuilder.base.ItemValueRenderer(value='testvalue2'))
     selector = htmls.S(testlist.render(request=mock.MagicMock()))
     self.assertEqual(
         2, selector.count('.test-cradmin-listbuilder-item-value-renderer'))
     self.assertEqual(
         'testvalue1',
         selector.list('.test-cradmin-listbuilder-item-value-renderer')
         [0].alltext_normalized)
     self.assertEqual(
         'testvalue2',
         selector.list('.test-cradmin-listbuilder-item-value-renderer')
         [1].alltext_normalized)
Beispiel #26
0
 def test_get_render(self):
     request = self.factory.get('/test')
     request.user = mock.MagicMock()
     token = self.__create_token()
     response = AcceptInviteView.as_view()(request, token=token.token)
     self.assertEqual(response.status_code, 200)
     response.render()
     selector = htmls.S(response.content)
     self.assertEqual(
         selector.one('title').alltext_normalized, 'Accept invite')
     self.assertEqual(
         selector.one('h1.test-primary-h1').alltext_normalized,
         'Accept invite')
     self.assertEqual(
         selector.one('#django_cradmin_invite_accept_description'
                      ).alltext_normalized,
         'TODO: Set a description_template for your AbstractAcceptInviteView subclass.'
     )
    def test_render_pagination(self):
        class CustomRoleSelectView(RoleSelectView):
            paginate_by = 3

        roles = []
        for index in range(CustomRoleSelectView.paginate_by + 2):
            role = mock.MagicMock()
            role.id = index
            role.title = 'Role {}'.format(index)
            roles.append(role)
        cradmin_instance = self.__mock_cradmin_instance(roles=roles)

        request_page1 = self.factory.get('/roleselecttest')
        request_page1.cradmin_instance = cradmin_instance
        response_page1 = CustomRoleSelectView.as_view()(request_page1)
        self.assertEquals(response_page1.status_code, 200)
        response_page1.render()
        selector_page1 = htmls.S(response_page1.content)

        request_page2 = self.factory.get('/roleselecttest', {'page': 2})
        request_page2.cradmin_instance = cradmin_instance
        response_page2 = CustomRoleSelectView.as_view()(request_page2)
        self.assertEquals(response_page2.status_code, 200)
        response_page2.render()
        selector_page2 = htmls.S(response_page2.content)

        self.assertEqual(
            selector_page1.count('.test-cradmin-roleselect-list__item'), 3)
        self.assertEqual(
            selector_page2.count('.test-cradmin-roleselect-list__item'), 2)

        self.assertTrue(selector_page1.exists('.pager-container'))
        self.assertTrue(
            selector_page1.exists('.pager-container li.previous.disabled'))
        self.assertFalse(
            selector_page1.exists('.pager-container li.next.disabled'))
        self.assertTrue(selector_page2.exists('.pager-container'))
        self.assertFalse(
            selector_page2.exists('.pager-container li.previous.disabled'))
        self.assertTrue(
            selector_page2.exists('.pager-container li.next.disabled'))
    def test_render_no_pagination(self):
        class CustomRoleSelectView(RoleSelectView):
            paginate_by = 3

        roles = []
        for index in range(CustomRoleSelectView.paginate_by):
            role = mock.MagicMock()
            role.id = index
            role.title = 'Role {}'.format(index)
            roles.append(role)

        cradmin_instance = self.__mock_cradmin_instance(roles=roles)
        request = self.factory.get('/roleselecttest')
        request.cradmin_instance = cradmin_instance

        response = CustomRoleSelectView.as_view()(request)
        self.assertEquals(response.status_code, 200)
        response.render()
        selector = htmls.S(response.content)

        # selector.one('#django_cradmin_roleselect').prettyprint()
        self.assertEqual(selector.count('.test-cradmin-roleselect-list__item'),
                         3)
        self.assertFalse(selector.exists('.pager-container'))
Beispiel #29
0
 def test_generate_token_no_next_url(self):
     with self.settings(LOGIN_URL='/next'):
         token = ActivationEmail(user=self.testuser, request=mock.MagicMock()).generate_token()
     self.assertEquals(token.metadata['next_url'], '/next')
Beispiel #30
0
 def test_generate_token(self):
     token = ActivationEmail(user=self.testuser, next_url='/', request=mock.MagicMock()).generate_token()
     self.assertEquals(token.metadata['next_url'], '/')