def test_render_email_no_primary_email(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(UserBuilder2(shortname='test').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertFalse(selector.exists('.devilry-admin-adminlist-email')),
def test_render_user_with_fullname(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(UserBuilder2(shortname='test', fullname='Test User').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(['Test User(test)'], self.__get_names(selector))
def test_remove_shown_other_than_requesting_user(self): testuser = UserBuilder2().user builder = self.builderclass.make() \ .add_admins(testuser, UserBuilder2(shortname='other').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(1, selector.count( '#objecttableview-table tbody .devilry-admin-adminlist-remove-button'))
def test_render_only_users_from_current_basenode(self): testuser = UserBuilder2(is_superuser=True).user self.builderclass.make() \ .add_admins(UserBuilder2(shortname='otherbasenodeuser').user) builder = self.builderclass.make() \ .add_admins(UserBuilder2(shortname='expecteduser').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(['expecteduser'], self.__get_names(selector))
def test_ordering(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(UserBuilder2(shortname='userb').user, UserBuilder2(shortname='usera').user, UserBuilder2(shortname='userc').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(['usera', 'userb', 'userc'], self.__get_shortnames(selector))
def test_adds_user_to_admins(self): requestuser = UserBuilder2().user janedoe = UserBuilder2().user builder = self.builderclass.make() \ .add_admins(requestuser) self.assertFalse(builder.get_object().admins.filter(pk=janedoe.pk).exists()) self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, data={'user': janedoe.id}) self.assertTrue(builder.get_object().admins.filter(pk=janedoe.pk).exists())
def test_render_email_has_primary_email(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(UserBuilder2(shortname='test').add_primary_email('*****@*****.**').user) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(selector.one('.devilry-admin-adminlist-email').alltext_normalized, 'Contact at [email protected]') self.assertEqual(selector.one('.devilry-admin-adminlist-email')['href'], 'mailto:[email protected]')
def test_success_redirect_without_next(self): requestuser = UserBuilder2().user janedoe = UserBuilder2(fullname='Jane Doe').user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser) response, request = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, data={'user': janedoe.id}) self.assertEqual(response.status_code, 302) request.cradmin_app.reverse_appindexurl.assert_called_once()
def test_success_redirect_with_next(self): requestuser = UserBuilder2().user janedoe = UserBuilder2(fullname='Jane Doe').user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser) response, request = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, data={'user': janedoe.id, 'next': '/next'}) self.assertEqual(response.status_code, 302) self.assertEqual(response['location'], '/next')
def test_success_message(self): requestuser = UserBuilder2().user janedoe = UserBuilder2(fullname='Jane Doe').user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser) response, request = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, data={'user': janedoe.id}) request._messages.add.assert_called_once_with( messages.SUCCESS, 'Jane Doe added as administrator for {}.'.format(builder.get_object()), '')
def test_render(self): testuser = UserBuilder2().user builder = self.builderclass.make() \ .add_admins(testuser) # testuser should be excluded since it is already admin UserBuilder2(shortname='Jane Doe') selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertTrue(selector.exists( '#objecttableview-table tbody .devilry-admin-userselect-select-button')) self.assertEqual( selector.one('#objecttableview-table tbody ' '.devilry-admin-userselect-select-button').alltext_normalized, 'Add as administrator')
def test_get(self): requestuser = UserBuilder2().user janedoe = UserBuilder2(fullname='Jane Doe').user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser, janedoe) selector = self.__mock_http200_getrequest_htmls(role=builder.get_object(), requestuser=requestuser, user_to_remove=janedoe) self.assertEqual(selector.one('title').alltext_normalized, 'Remove Jane Doe') self.assertEqual(selector.one('#deleteview-preview').alltext_normalized, 'Are you sure you want to remove Jane Doe ' 'as administrator for {}?'.format(builder.get_object()))
def test_no_admins_messages(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertEqual(selector.one('#objecttableview-no-items-message').alltext_normalized, 'There is no administrators registered for {}.'.format( builder.get_object().get_path()))
def test_post_remove_yourself_404(self): requestuser = UserBuilder2().user builder = self.builderclass.make() \ .add_admins(requestuser) with self.assertRaises(Http404): self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, user_to_remove=requestuser)
def test_remove_shown_for_requesting_user_if_superuser(self): testuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(testuser) selector = self.mock_http200_getrequest_htmls(role=builder.get_object(), user=testuser) self.assertTrue(selector.exists( '#objecttableview-table tbody .devilry-admin-adminlist-remove-button'))
def test_title(self): testuser = UserBuilder2().user subjectbuilder = self.builderclass.make(long_name='The Long Name') \ .add_admins(testuser) selector = self.mock_http200_getrequest_htmls(role=subjectbuilder.get_object(), user=testuser) self.assertEqual(selector.one('title').alltext_normalized, 'Administrators for The Long Name')
def test_post_remove_ok(self): requestuser = UserBuilder2().user janedoe = UserBuilder2(fullname='Jane Doe').user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser, janedoe) messagesmock = mock.MagicMock() response = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, user_to_remove=janedoe, messagesmock=messagesmock) self.assertEqual(response.status_code, 302) messagesmock.add.assert_called_once_with( messages.SUCCESS, 'Jane Doe is no longer administrator for {}.'.format(builder.get_object()), '') self.assertTrue(get_user_model().objects.filter(pk=janedoe.pk).exists()) self.assertFalse(builder.get_object().admins.filter(pk=janedoe.pk).exists())
def test_post_remove_yourself_superuser_ok(self): requestuser = UserBuilder2(is_superuser=True).user builder = self.builderclass.make() \ .add_admins(requestuser) response = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, user_to_remove=requestuser) self.assertEqual(response.status_code, 302) self.assertTrue(get_user_model().objects.filter(pk=requestuser.pk).exists()) self.assertFalse(builder.get_object().admins.filter(pk=requestuser.pk).exists())
def test_invalid_user(self): requestuser = UserBuilder2().user builder = self.builderclass.make(short_name='testbasenode') \ .add_admins(requestuser) response, request = self.__mock_postrequest(role=builder.get_object(), requestuser=requestuser, data={'user': 10000000001}) self.assertEqual(response.status_code, 302) request._messages.add.assert_called_once_with( messages.ERROR, 'Error: The user may not exist, or it may already be administrator.', '') request.cradmin_app.reverse_appindexurl.assert_called_once()
def test_bulk_create_from_usernames_exclude_existing(self): testperiod = mommy.make('core.Period') mommy.make('core.RelatedStudent', period=testperiod, user=UserBuilder2().add_usernames('testuser1').user) with self.settings(DJANGO_CRADMIN_USE_EMAIL_AUTH_BACKEND=False): result = RelatedStudent.objects.bulk_create_from_usernames( period=testperiod, usernames=['testuser1', 'testuser2']) self.assertEqual(2, RelatedStudent.objects.count()) self.assertEqual(1, result.created_relatedusers_queryset.count()) self.assertEqual( 'testuser2', result.created_relatedusers_queryset.first().user.shortname) self.assertEqual({'testuser1'}, result.existing_relateduser_usernames_set)
def test_bulk_create_from_emails_exclude_existing(self): testperiod = mommy.make('core.Period') mommy.make( 'core.RelatedExaminer', period=testperiod, user=UserBuilder2().add_emails('*****@*****.**').user) with self.settings(DJANGO_CRADMIN_USE_EMAIL_AUTH_BACKEND=True): result = RelatedExaminer.objects.bulk_create_from_emails( period=testperiod, emails=['*****@*****.**', '*****@*****.**']) self.assertEqual(2, RelatedExaminer.objects.count()) self.assertEqual(1, result.created_relatedusers_queryset.count()) self.assertEqual( '*****@*****.**', result.created_relatedusers_queryset.first().user.shortname) self.assertEqual({'*****@*****.**'}, result.existing_relateduser_emails_set)
def test_bulk_create_from_usernames_exclude_existing_in_other_period(self): testperiod = mommy.make('core.Period') otherperiod = mommy.make('core.Period') mommy.make('core.RelatedStudent', period=otherperiod, user=UserBuilder2( shortname='testuser1').add_usernames('testuser1').user) with self.settings(DJANGO_CRADMIN_USE_EMAIL_AUTH_BACKEND=False): result = RelatedStudent.objects.bulk_create_from_usernames( period=testperiod, usernames=['testuser1', 'testuser2']) self.assertEqual(3, RelatedStudent.objects.count()) self.assertEqual(2, result.created_relatedusers_queryset.count()) self.assertEqual({'testuser1', 'testuser2'}, { relatedexaminer.user.shortname for relatedexaminer in result.created_relatedusers_queryset.all() }) self.assertEqual(set(), result.existing_relateduser_usernames_set)