예제 #1
0
 def test_bad_lang_welcome(self, apply_updates, send_message):
     """Test sending welcome in english if user wants a lang that
     our newsletter doesn't support"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'fr'
     format = 'H'
     # User who prefers French HTML messages
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token, user_data)
     # They're getting English. And we don't append anything for HTML.
     expected_welcome = "en_%s" % welcome
     send_message.assert_called_with(expected_welcome, email, token, format)
예제 #2
0
 def test_one_lang_welcome(self, send_message, get_user_data):
     """If a newsletter only has one language, the welcome message
     still gets a language prefix"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'pt-Br'
     format = 'H'
     get_user_data.return_value = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token)
     expected_welcome = 'en_' + welcome
     send_message.delay.assert_called_with(expected_welcome, email, token, format)
예제 #3
0
 def test_html_welcome(self, apply_updates, send_message):
     """Test sending the right welcome message"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'RU'  # This guy had an uppercase lang code for some reason
     format = 'H'
     # User who prefers Russian HTML messages
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token, user_data)
     # Lang code is lowercased. And we don't append anything for HTML.
     expected_welcome = "%s_%s" % (lang.lower(), welcome)
     send_message.assert_called_with(expected_welcome, email, token, format)
예제 #4
0
 def test_text_welcome(self, send_message, get_user_data):
     """Test sending the right welcome message"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'ru'
     format = 'T'
     # User who prefers Russian Text messages
     get_user_data.return_value = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token)
     expected_welcome = "%s_%s_%s" % (lang, welcome, format)
     send_message.delay.assert_called_with(expected_welcome, email, token, format)
예제 #5
0
 def test_text_welcome(self, apply_updates, send_message):
     """Test sending the right welcome message"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'ru'
     format = 'T'
     # User who prefers Russian Text messages
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token, user_data)
     expected_welcome = "%s_%s_%s" % (lang, welcome, format)
     send_message.assert_called_with(expected_welcome, email, token, format)
예제 #6
0
 def test_html_welcome(self, send_message, get_user_data):
     """Test sending the right welcome message"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'RU'  # This guy had an uppercase lang code for some reason
     format = 'H'
     # User who prefers Russian HTML messages
     get_user_data.return_value = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token)
     # Lang code is lowercased. And we don't append anything for HTML.
     expected_welcome = "%s_%s" % (lang.lower(), welcome)
     send_message.delay.assert_called_with(expected_welcome, email, token, format)
예제 #7
0
 def test_bad_lang_welcome(self, send_message, get_user_data):
     """Test sending welcome in english if user wants a lang that
     our newsletter doesn't support"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'fr'
     format = 'H'
     # User who prefers French HTML messages
     get_user_data.return_value = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token)
     # They're getting English. And we don't append anything for HTML.
     expected_welcome = "en_%s" % welcome
     send_message.delay.assert_called_with(expected_welcome, email, token, format)
예제 #8
0
 def test_other_long_lang_welcome(self, send_message, get_user_data):
     """Test sending welcome in pt if the user wants pt-Br and the
     newsletter supports pt"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru,pt',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'pt-Br'
     format = 'H'
     get_user_data.return_value = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token)
     # They're getting pt. And we don't append anything for HTML.
     expected_welcome = "pt_%s" % welcome
     send_message.delay.assert_called_with(expected_welcome, email, token, format)
예제 #9
0
 def test_one_lang_welcome(self, apply_updates, send_message):
     """If a newsletter only has one language, the welcome message
     still gets a language prefix"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'pt-Br'
     format = 'H'
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token, user_data)
     expected_welcome = 'en_' + welcome
     send_message.assert_called_with(expected_welcome, email, token, format)
예제 #10
0
 def test_other_long_lang_welcome(self, apply_updates, send_message):
     """Test sending welcome in pt if the user wants pt-Br and the
     newsletter supports pt"""
     welcome = u'welcome'
     Newsletter.objects.create(
         slug='slug',
         vendor_id='VENDOR',
         welcome=welcome,
         languages='en,ru,pt',
     )
     token = "TOKEN"
     email = '*****@*****.**'
     lang = 'pt-Br'
     format = 'H'
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': ['slug'],
         'format': format,
         'lang': lang,
         'token': token,
         'email': email,
     }
     confirm_user(token, user_data)
     # They're getting pt. And we don't append anything for HTML.
     expected_welcome = "pt_%s" % welcome
     send_message.assert_called_with(expected_welcome, email, token, format)
예제 #11
0
 def test_user_not_found(self, get_user_data, apply_updates, send_welcomes):
     """If we can't find the user, raise exception"""
     get_user_data.return_value = None
     token = "TOKEN"
     with self.assertRaises(BasketError):
         confirm_user(token)
     self.assertFalse(apply_updates.called)
     self.assertFalse(send_welcomes.called)
예제 #12
0
 def test_user_not_found(self, doi_mock, get_user_data, sfdc_mock):
     """If we can't find the user, try SFMC"""
     get_user_data.return_value = None
     doi_mock.return_value = None
     token = "TOKEN"
     confirm_user(token)
     doi_mock.assert_called_with(token)
     self.assertFalse(sfdc_mock.add.called)
     self.assertFalse(sfdc_mock.update.called)
예제 #13
0
 def test_error(self, get_user_data, sfdc_mock):
     """
     If user_data shows an error talking to ET, the task raises
     an exception so our task logic will retry
     """
     get_user_data.side_effect = NewsletterException('Stuffs broke yo.')
     with self.assertRaises(NewsletterException):
         confirm_user('token')
     self.assertFalse(sfdc_mock.update.called)
예제 #14
0
 def test_error(self, get_user_data, apply_updates, send_welcomes):
     """
     If user_data shows an error talking to ET, the task raises
     an exception so our task logic will retry
     """
     get_user_data.side_effect = NewsletterException('Stuffs broke yo.')
     with self.assertRaises(NewsletterException):
         confirm_user('token')
     self.assertFalse(apply_updates.called)
     self.assertFalse(send_welcomes.called)
예제 #15
0
 def test_already_confirmed(self, get_user_data, sfdc_mock):
     """If user_data already confirmed, task does nothing"""
     user_data = {
         'status': 'ok',
         'optin': True,
         'newsletters': Mock(),
         'format': 'ZZ',
     }
     get_user_data.return_value = user_data
     token = "TOKEN"
     confirm_user(token)
     self.assertFalse(sfdc_mock.update.called)
예제 #16
0
 def test_already_confirmed(self, apply_updates, send_welcomes):
     """If user_data already confirmed, task does nothing"""
     user_data = {
         'status': 'ok',
         'confirmed': True,
         'newsletters': Mock(),
         'format': 'ZZ',
     }
     token = "TOKEN"
     confirm_user(token, user_data)
     self.assertFalse(apply_updates.called)
     self.assertFalse(send_welcomes.called)
예제 #17
0
 def test_normal(self, get_user_data, apply_updates, send_welcomes):
     """If user_data is okay, and not yet confirmed, the task calls
      the right stuff"""
     user_data = {'status': 'ok', 'confirmed': False, 'newsletters': Mock(), 'format': 'ZZ',
                  'email': '*****@*****.**', }
     get_user_data.return_value = user_data
     token = "TOKEN"
     confirm_user(token)
     apply_updates.assert_called_with(settings.EXACTTARGET_CONFIRMATION,
                                      {'TOKEN': token})
     send_welcomes.assert_called_with(user_data, user_data['newsletters'],
                                      user_data['format'])
예제 #18
0
 def test_user_not_found(self, apply_updates, send_welcomes):
     """If we can't find the user, raise exception"""
     # Can't patch get_user_data because confirm_user imports it
     # internally. But we can patch look_for_user, which get_user_data
     # will call
     with patch('news.views.look_for_user') as look_for_user:
         look_for_user.return_value = None
         user_data = None
         token = "TOKEN"
         with self.assertRaises(BasketError):
             confirm_user(token, user_data)
     self.assertFalse(apply_updates.called)
     self.assertFalse(send_welcomes.called)
예제 #19
0
 def test_error(self, apply_updates, send_welcomes):
     """
     If user_data shows an error talking to ET, the task raises
     an exception so our task logic will retry
     """
     user_data = {
         'status': 'error',
         'desc': 'TESTERROR',
     }
     token = "TOKEN"
     with self.assertRaises(NewsletterException):
         confirm_user(token, user_data)
     self.assertFalse(apply_updates.called)
     self.assertFalse(send_welcomes.called)
예제 #20
0
 def test_normal(self, get_user_data, sfdc_mock):
     """If user_data is okay, and not yet confirmed, the task calls
      the right stuff"""
     token = "TOKEN"
     user_data = {
         'status': 'ok',
         'optin': False,
         'newsletters': Mock(),
         'format': 'ZZ',
         'email': '*****@*****.**',
         'token': token
     }
     get_user_data.return_value = user_data
     confirm_user(token)
     sfdc_mock.update.assert_called_with(user_data, {'optin': True})
예제 #21
0
 def test_normal(self, apply_updates, send_welcomes):
     """If user_data is okay, and not yet confirmed, the task calls
      the right stuff"""
     user_data = {
         'status': 'ok',
         'confirmed': False,
         'newsletters': Mock(),
         'format': 'ZZ',
         'email': '*****@*****.**',
     }
     token = "TOKEN"
     confirm_user(token, user_data)
     apply_updates.assert_called_with(settings.EXACTTARGET_CONFIRMATION,
                                      {'TOKEN': token})
     send_welcomes.assert_called_with(user_data, user_data['newsletters'],
                                      user_data['format'])