def test_batch_month_old_message_digest_no_searches(self): """ Posting data created a month ago should result in no emails being sent if the user has no saved searches """ # Create activation profile for user custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) month_ago = date.today() - timedelta(days=30) self.user.last_response = month_ago - timedelta(days=1) self.user.save() messages = self.make_messages(month_ago) response = self.client.post(reverse('batch_message_digest'), data=messages, content_type="text/json", HTTP_AUTHORIZATION='BASIC %s' % base64.b64encode( 'accounts%40my.jobs:secret')) self.assertTrue(response.status_code, 200) self.assertEqual(EmailLog.objects.count(), 3) self.assertEqual( EmailLog.objects.filter( received=month_ago ).count(), 3 ) process_batch_events() self.assertEqual(len(mail.outbox), 0)
def test_batch_recent_message_digest(self): """ Posting data created recently should result in one EmailLog instance being created per message and no emails being sent """ # Create activation profile for user; Used when disabling an account custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) now = date.today() # Submit a batch of three events created recently messages = self.make_messages(now) response = self.client.post(reverse('batch_message_digest'), data=messages, content_type="text/json", HTTP_AUTHORIZATION='BASIC %s' % base64.b64encode( 'accounts%40my.jobs:secret')) self.assertEqual(response.status_code, 200) self.assertEqual(EmailLog.objects.count(), 3) process_batch_events() self.assertEqual(len(mail.outbox), 0) for log in EmailLog.objects.all(): self.assertTrue(log.event in self.events)
def test_batch_month_old_message_digest_with_searhes(self): """ Posting data created a month ago should result in one EmailLog instance being created per message and one email being sent per user """ # Create activation profile for user; Used when disabling an account custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) now = date.today() month_ago = date.today() - timedelta(days=30) self.user.last_response = month_ago - timedelta(days=1) self.user.save() SavedSearch(user=self.user).save() # Submit a batch of events created a month ago # The owners of these addresses should be sent an email messages = self.make_messages(month_ago) response = self.client.post( reverse('batch_message_digest'), data=messages, content_type="text/json", HTTP_AUTHORIZATION='BASIC %s' % base64.b64encode('accounts%40my.jobs:secret')) self.assertTrue(response.status_code, 200) self.assertEqual(EmailLog.objects.count(), 3) self.assertEqual( EmailLog.objects.filter(received=month_ago).count(), 3) process_batch_events() self.assertEqual(len(mail.outbox), 1) user = User.objects.get(pk=self.user.pk) self.assertEqual(user.last_response, month_ago)
def test_disable_account(self): """ Going to the disabled account view disables the account, meaning that (1) a new activation key is created, (2) User is set to not active and (3) User is set to disabled. """ custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) profile = ActivationProfile.objects.get(user=self.user) ActivationProfile.objects.activate_user(profile.activation_key) profile = ActivationProfile.objects.get(user=self.user) self.assertEqual(profile.activation_key, 'ALREADY ACTIVATED') self.client.get(reverse('disable_account'), follow=True) user = User.objects.get(id=self.user.id) profile = ActivationProfile.objects.get(user=user) self.assertNotEqual(profile.activation_key, 'ALREADY ACTIVATED') self.assertTrue(user.is_disabled)
def test_disable_account(self): """ Going to the disabled account view disables the account, meaning that (1) a new activation key is created, (2) User is set to not active and (3) User is set to disabled. """ user = User.objects.get(id=self.user.id) custom_signals.create_activation_profile(sender=self, user=user, email=user.email) profile = ActivationProfile.objects.get(user=user) ActivationProfile.objects.activate_user(profile.activation_key) profile = ActivationProfile.objects.get(user=user) self.assertEqual(profile.activation_key, 'ALREADY ACTIVATED') resp = self.client.get(reverse('disable_account'), follow=True) user = User.objects.get(id=self.user.id) profile = ActivationProfile.objects.get(user=user) self.assertNotEqual(profile.activation_key, 'ALREADY ACTIVATED') self.assertFalse(user.is_active) self.assertTrue(user.is_disabled)
def test_batch_month_and_week_old_message_digest(self): """ Posting data created a month and a week ago should result in one EmailLog instance being created per message, no emails being sent, and the user's opt-in status being set to False """ # Create activation profile for user; Used when disabling an account custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) month_and_week_ago = date.today() - timedelta(days=37) self.user.last_response = month_and_week_ago - timedelta(days=1) self.user.save() # Submit a batch of events created a month and a week ago # The owners of these addresses should no longer receive email messages = self.make_messages(month_and_week_ago) response = self.client.post(reverse('batch_message_digest'), data=messages, content_type="text/json", HTTP_AUTHORIZATION='BASIC %s' % base64.b64encode( 'accounts%40my.jobs:secret')) self.assertTrue(response.status_code, 200) self.assertEqual(EmailLog.objects.count(), 3) self.assertEqual( EmailLog.objects.filter( received__lte=(date.today() - timedelta(days=37)) ).count(), 3 ) process_batch_events() self.assertEqual(len(mail.outbox), 0) user = User.objects.get(pk=self.user.pk) self.assertFalse(user.opt_in_myjobs) self.assertTrue(user.last_response, month_and_week_ago)
def test_batch_month_old_message_digest_with_searhes(self): """ Posting data created a month ago should result in one EmailLog instance being created per message and one email being sent per user """ # Create activation profile for user; Used when disabling an account custom_signals.create_activation_profile(sender=self, user=self.user, email=self.user.email) now = date.today() month_ago = date.today() - timedelta(days=30) self.user.last_response = month_ago - timedelta(days=1) self.user.save() SavedSearch(user=self.user).save() # Submit a batch of events created a month ago # The owners of these addresses should be sent an email messages = self.make_messages(month_ago) response = self.client.post(reverse('batch_message_digest'), data=messages, content_type="text/json", HTTP_AUTHORIZATION='BASIC %s' % base64.b64encode( 'accounts%40my.jobs:secret')) self.assertTrue(response.status_code, 200) self.assertEqual(EmailLog.objects.count(), 3) self.assertEqual( EmailLog.objects.filter( received=month_ago ).count(), 3 ) process_batch_events() self.assertEqual(len(mail.outbox), 1) user = User.objects.get(pk=self.user.pk) self.assertEqual(user.last_response, month_ago)