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'])
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)
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
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])
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'))
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()
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'], '*****@*****.**')
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'))
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'])
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)
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)
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')
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.', '')
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)
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'])
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')
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])
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.', '')
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)
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)
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'))
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')
def test_generate_token(self): token = ActivationEmail(user=self.testuser, next_url='/', request=mock.MagicMock()).generate_token() self.assertEquals(token.metadata['next_url'], '/')