def test_post_token_created(self): create_user('testuser', email='*****@*****.**') self.assertEqual(GenericTokenWithMetadata.objects.count(), 0) self.client.post(self.url, {'email': '*****@*****.**'}) self.assertEqual(GenericTokenWithMetadata.objects.count(), 1) token = GenericTokenWithMetadata.objects.first() self.assertIsNotNone(token.expiration_datetime)
def test_filter_has_expired(self): self._create_generic_token_with_metadata( user=create_user('testuser1'), app='testapp', token='test-token1', expiration_datetime=arrow.get(datetime(2015, 1, 1, 14, 30), settings.TIME_ZONE).datetime) self._create_generic_token_with_metadata(user=create_user('testuser2'), app='testapp', token='test-token2', expiration_datetime=None) expired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser3'), app='testapp', token='test-token3', expiration_datetime=arrow.get(datetime(2015, 1, 1, 13, 30), settings.TIME_ZONE).datetime) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: arrow.get(datetime(2015, 1, 1, 14), settings.TIME_ZONE ).datetime): self.assertEqual( GenericTokenWithMetadata.objects.filter_has_expired().count(), 1) self.assertEqual( GenericTokenWithMetadata.objects.filter_has_expired().first(), expired_generic_token_with_metadata)
def test_generate_handle_not_unique(self): self._create_generic_token_with_metadata(user=create_user('testuser1'), app='testapp1', token='taken') tokens = iter(['taken', 'free']) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models.generate_token', lambda: next(tokens)): unique_user_token = GenericTokenWithMetadata.objects.generate( content_object=create_user('testuser2'), app='testapp2', expiration_datetime=get_expiration_datetime_for_app('testapp')) self.assertEqual(unique_user_token.token, 'free')
def test_email_is_more_than_30_chars(self): create_user('testuser', email='*****@*****.**') form = AuthUserCreateAccountAutoUsernameForm({ 'password1': 'unused', 'password2': 'unused', 'email': '*****@*****.**' }) self.assertTrue(form.is_valid()) user = form.save() self.assertEquals(user.username, '[email protected]')
def test_filter_by_content_object(self): testobject1 = create_user('testobject1') testobject2 = create_user('testobject2') generictoken = GenericTokenWithMetadata.objects.generate( content_object=testobject1, app='testapp', expiration_datetime=get_expiration_datetime_for_app('testapp')) self.assertEquals( GenericTokenWithMetadata.objects.filter_by_content_object(testobject1).get(), generictoken) self.assertEquals(GenericTokenWithMetadata.objects.filter_by_content_object(testobject2).count(), 0)
def test_username_is_not_unique(self): create_user('test') form = AuthUserCreateAccountForm({ 'username': '******', 'password1': 'unused', 'password2': 'unused', 'email': '*****@*****.**' }) self.assertFalse(form.is_valid()) self.assertIn('username', form.errors) self.assertIn('name already exists', form.errors['username'][0])
def test_email_is_not_unique(self): create_user('testuser', email='*****@*****.**') form = AuthUserCreateAccountAutoUsernameForm({ 'password1': 'unused', 'password2': 'unused', 'email': '*****@*****.**' }) self.assertFalse(form.is_valid()) self.assertEquals(form.errors, { 'email': [u'Account with this email address already exists.'] })
def test_is_expired(self): unexpired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=datetime(2015, 1, 1, 14, 30)) expired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime(2015, 1, 1, 13, 30)) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertFalse(unexpired_generic_token_with_metadata.is_expired()) self.assertTrue(expired_generic_token_with_metadata.is_expired())
def test_email_makes_username_not_unique(self): create_user( username='******', email='*****@*****.**') form = AuthUserCreateAccountAutoUsernameForm({ 'password1': 'unused', 'password2': 'unused', 'email': '*****@*****.**' }) self.assertTrue(form.is_valid()) with self.assertRaisesRegexp(ValidationError, '^.*name already exists.*$'): form.save()
def test_post_email_not_unique(self): create_user('testuser', email='*****@*****.**') response = self.client.post(self.url, { 'username': '******', 'password1': 'test', 'password2': 'test', 'email': '*****@*****.**' }) self.assertEqual(response.status_code, 200) selector = htmls.S(response.content) self.assertEqual( selector.one('#id_email_wrapper .message--error').alltext_normalized, 'Account with this email address already exists.')
def test_filter_by_content_object(self): testobject1 = create_user('testobject1') testobject2 = create_user('testobject2') generictoken = GenericTokenWithMetadata.objects.generate( content_object=testobject1, app='testapp', expiration_datetime=get_expiration_datetime_for_app('testapp')) self.assertEqual( GenericTokenWithMetadata.objects.filter_by_content_object( testobject1).get(), generictoken) self.assertEqual( GenericTokenWithMetadata.objects.filter_by_content_object( testobject2).count(), 0)
def test_generate_handle_not_unique(self): self._create_generic_token_with_metadata(user=create_user('testuser1'), app='testapp1', token='taken') tokens = iter(['taken', 'free']) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models.generate_token', lambda: next(tokens)): unique_user_token = GenericTokenWithMetadata.objects.generate( content_object=create_user('testuser2'), app='testapp2', expiration_datetime=get_expiration_datetime_for_app('testapp')) self.assertEqual(unique_user_token.token, 'free')
def test_filter_not_expired_none(self): expired_none_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=None) self._create_generic_token_with_metadata( user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime(2015, 1, 1, 13, 30)) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertEquals(GenericTokenWithMetadata.objects.filter_not_expired().count(), 1) self.assertEquals(GenericTokenWithMetadata.objects.filter_not_expired().first(), expired_none_generic_token_with_metadata)
def test_post_user_found(self): create_user('testuser', email='*****@*****.**') with mock.patch.object(BeginPasswordResetView, '_generate_token', lambda s, user: '******'): with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'): response = self.client.post(self.url, {'email': '*****@*****.**'}) self.assertRedirects(response, reverse('cradmin-resetpassword-email-sent')) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, 'Reset your Testsite password') self.assertIn('http://testserver/cradmin_resetpassword/reset/testtoken', mail.outbox[0].alternatives[0][0]) self.assertIn('We received a request to reset the password ' 'for your Testsite account, testuser.', mail.outbox[0].alternatives[0][0])
def test_post_email_not_unique(self): create_user('testuser', email='*****@*****.**') response = self.client.post( self.url, { 'username': '******', 'password1': 'test', 'password2': 'test', 'email': '*****@*****.**' }) self.assertEqual(response.status_code, 200) selector = htmls.S(response.content) self.assertEqual( selector.one( '#id_email_wrapper .message--error').alltext_normalized, 'Account with this email address already exists.')
def test_delete_expired_management_command(self): unexpired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=datetime(2015, 1, 1, 14, 30)) self._create_generic_token_with_metadata( user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime(2015, 1, 1, 13, 30)) self.assertEquals(GenericTokenWithMetadata.objects.count(), 2) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): call_command('cradmin_generic_token_with_metadata_delete_expired') self.assertEquals(GenericTokenWithMetadata.objects.count(), 1) self.assertEquals(GenericTokenWithMetadata.objects.first(), unexpired_generic_token_with_metadata)
def test_is_expired(self): unexpired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=datetime(2015, 1, 1, 14, 30)) expired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime(2015, 1, 1, 13, 30)) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertFalse( unexpired_generic_token_with_metadata.is_expired()) self.assertTrue(expired_generic_token_with_metadata.is_expired())
def test_get_render_is_authenticated(self): request = self.factory.get('/test') request.user = create_user('testuser') token = self.__create_token() with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'): response = AcceptInviteView.as_view()(request, token=token.token) self.assertEqual(response.status_code, 200) response.render() selector = htmls.S(response.content) self.assertTrue( selector.exists('button#django_cradmin_invite_accept_as_button')) self.assertEqual( selector.one( '#django_cradmin_invite_accept_register_account_button') ['href'], '/cradmin_register_account/?next=http%3A%2F%2Ftestserver%2Ftest') self.assertEqual( selector.one( '#django_cradmin_invite_accept_login_as_different_user_button') ['href'], '/cradmin_authenticate/logout?' 'next=%2Faccounts%2Flogin%2F%3Fnext%3Dhttp%253A%252F%252Ftestserver%252Ftest' ) self.assertEqual( selector.one('button#django_cradmin_invite_accept_as_button'). alltext_normalized, 'Accept as testuser') self.assertEqual( selector.one( '#django_cradmin_invite_accept_register_account_button'). alltext_normalized, 'Sign up for Testsite') self.assertEqual( selector.one( '#django_cradmin_invite_accept_login_as_different_user_button' ).alltext_normalized, 'Sign in as another user')
def test_get_render_is_authenticated(self): request = self.factory.get('/test') request.user = create_user('testuser') token = self.__create_token() with self.settings(DJANGO_CRADMIN_SITENAME='Testsite'): response = AcceptInviteView.as_view()(request, token=token.token) self.assertEqual(response.status_code, 200) response.render() selector = htmls.S(response.content) self.assertTrue(selector.exists('button#django_cradmin_invite_accept_as_button')) self.assertEqual( selector.one('#django_cradmin_invite_accept_register_account_button')['href'], '/cradmin_register_account/?next=http%3A%2F%2Ftestserver%2Ftest') self.assertEqual( selector.one('#django_cradmin_invite_accept_login_as_different_user_button')['href'], '/cradmin_authenticate/logout?' 'next=%2Faccounts%2Flogin%2F%3Fnext%3Dhttp%253A%252F%252Ftestserver%252Ftest') self.assertEqual( selector.one('button#django_cradmin_invite_accept_as_button').alltext_normalized, 'Accept as testuser') self.assertEqual( selector.one('#django_cradmin_invite_accept_register_account_button').alltext_normalized, 'Sign up for Testsite') self.assertEqual( selector.one('#django_cradmin_invite_accept_login_as_different_user_button').alltext_normalized, 'Sign in as another user')
def test_generate(self): testuser = create_user('testuser') unique_user_token = GenericTokenWithMetadata.objects.generate( content_object=testuser, app='testapp', expiration_datetime=get_expiration_datetime_for_app('testapp')) self.assertEqual(unique_user_token.content_object, testuser) self.assertEqual(unique_user_token.app, 'testapp') self.assertEqual(len(unique_user_token.token), 73)
def test_delete_expired_management_command(self): unexpired_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=datetime(2015, 1, 1, 14, 30)) self._create_generic_token_with_metadata(user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime( 2015, 1, 1, 13, 30)) self.assertEquals(GenericTokenWithMetadata.objects.count(), 2) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): call_command('cradmin_generic_token_with_metadata_delete_expired') self.assertEquals(GenericTokenWithMetadata.objects.count(), 1) self.assertEquals(GenericTokenWithMetadata.objects.first(), unexpired_generic_token_with_metadata)
def __create_token(self, metadata=None, expiration_datetime=None, **kwargs): generic_token_with_metadata = GenericTokenWithMetadata( created_datetime=timezone.now(), expiration_datetime=(expiration_datetime or (timezone.now() + timedelta(days=2))), content_object=create_user('invitecontentobject'), app='testapp', **kwargs) generic_token_with_metadata.metadata = metadata or {} generic_token_with_metadata.save() return generic_token_with_metadata
def test_unsafe_pop(self): testuser = create_user('testuser') self._create_generic_token_with_metadata(user=testuser, app='testapp1', token='test-token1') self._create_generic_token_with_metadata(user=testuser, app='testapp2', token='test-token2') self.assertEquals(GenericTokenWithMetadata.objects.unsafe_pop( token='test-token1', app='testapp1').content_object, testuser) self.assertEquals(GenericTokenWithMetadata.objects.count(), 1) self.assertEquals(GenericTokenWithMetadata.objects.unsafe_pop( token='test-token2', app='testapp2').content_object, testuser) self.assertEquals(GenericTokenWithMetadata.objects.count(), 0)
def test_filter_not_expired_none(self): expired_none_generic_token_with_metadata = self._create_generic_token_with_metadata( user=create_user('testuser1'), token='test-token1', expiration_datetime=None) self._create_generic_token_with_metadata(user=create_user('testuser2'), token='test-token2', expiration_datetime=datetime( 2015, 1, 1, 13, 30)) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertEquals( GenericTokenWithMetadata.objects.filter_not_expired().count(), 1) self.assertEquals( GenericTokenWithMetadata.objects.filter_not_expired().first(), expired_none_generic_token_with_metadata)
def test_pop_not_expired(self): testuser = create_user('testuser') self._create_generic_token_with_metadata( user=testuser, token='test-token', expiration_datetime=datetime(2015, 1, 1, 14, 30)) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertEquals(GenericTokenWithMetadata.objects.pop(app='testapp', token='test-token').content_object, testuser)
def test_pop_expired(self): self._create_generic_token_with_metadata( user=create_user('testuser'), app='testapp', token='test-token', expiration_datetime=datetime(2015, 1, 1, 13, 30)) with mock.patch('django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): with self.assertRaises(GenericTokenWithMetadata.DoesNotExist): GenericTokenWithMetadata.objects.pop(app='testapp', token='test-token')
def test_pop_expired(self): self._create_generic_token_with_metadata(user=create_user('testuser'), app='testapp', token='test-token', expiration_datetime=datetime( 2015, 1, 1, 13, 30)) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): with self.assertRaises(GenericTokenWithMetadata.DoesNotExist): GenericTokenWithMetadata.objects.pop(app='testapp', token='test-token')
def test_pop_not_expired(self): testuser = create_user('testuser') self._create_generic_token_with_metadata(user=testuser, token='test-token', expiration_datetime=datetime( 2015, 1, 1, 14, 30)) with mock.patch( 'django_cradmin.apps.cradmin_generic_token_with_metadata.models._get_current_datetime', lambda: datetime(2015, 1, 1, 14)): self.assertEquals( GenericTokenWithMetadata.objects.pop( app='testapp', token='test-token').content_object, testuser)
def test_unsafe_pop(self): testuser = create_user('testuser') self._create_generic_token_with_metadata(user=testuser, app='testapp1', token='test-token1') self._create_generic_token_with_metadata(user=testuser, app='testapp2', token='test-token2') self.assertEqual( GenericTokenWithMetadata.objects.unsafe_pop( token='test-token1', app='testapp1').content_object, testuser) self.assertEqual(GenericTokenWithMetadata.objects.count(), 1) self.assertEqual( GenericTokenWithMetadata.objects.unsafe_pop( token='test-token2', app='testapp2').content_object, testuser) self.assertEqual(GenericTokenWithMetadata.objects.count(), 0)
def setUp(self): self.testuser = create_user('testuser', email='*****@*****.**') # Any object will work as the target of invites. # We use a user object since we have that easily available self.invite_target = create_user('invitetarget')
def test_is_expired_expiration_datetime_none(self): tokenobject = self._create_generic_token_with_metadata( user=create_user('testuser2'), token='test-token2', expiration_datetime=None) self.assertFalse(tokenobject.is_expired())
def setUp(self): self.testuser = create_user('testuser', is_active=False)
def setUp(self): self.testuser = create_user('testuser', email='*****@*****.**')
def test_post_is_authenticated(self): request = self.factory.post('/test') request.user = create_user('testuser') token = self.__create_token() response = AcceptInviteView.as_view()(request, token=token.token) self.assertEqual(response.content, b'OK')
def setUp(self): self.testuser = create_user('testuser')