def test_confirm(self): subscribe.register('*****@*****.**', {'foo': 'bar'}) subscriber = subscribe.get_subscriber('*****@*****.**') self.request.form.update({ 'confirmed_email': u'*****@*****.**', 'confirmed_code': subscriber['code'] }) form = SubscribeForm(self.portal, self.request) form() self.assertTrue(form.subscribed) mailhost = self.portal.MailHost self.assertEqual(len(mailhost.messages), 0) self.assertEquals(len([i for i in subscribe.all()]), 1) subscriber = subscribe.get_subscriber('*****@*****.**') self.assertTrue(subscriber['confirmed'])
def test_user_exists(self): subscribe.register('*****@*****.**', {'foo': 'bar'}) responses.add(responses.POST, "https://www.google.com/recaptcha/api/siteverify", body='{"success": true}', content_type="application/json") self.request.form.update({ 'form.widgets.name': u'Foobar', 'form.widgets.email': u'*****@*****.**', 'g-recaptcha-response': u'foobar', 'form.buttons.subscribe': 'Subscribe' }) form = SubscribeForm(self.portal, self.request) form() mailhost = self.portal.MailHost self.assertEqual(len(mailhost.messages), 0) self.assertEquals(len(subscribe.SubscriptionStorage()._data), 1)
def test_get_phone_numbers(self): data = subscribe.register('*****@*****.**', { 'foo': 'bar', 'phone_number': '15555555555' }) subscribe.confirm('*****@*****.**', data['code']) subscribe.confirm_phone_number('*****@*****.**', data['code']) self.assertEquals(len(subscribe.get_phone_numbers()), 1)
def handle_export(self, action): data, errors = self.extractData() if not errors: lines = data['csv_upload'].split('\n') columns = lines[0].split(',') categoryindex = columns.index('categories') emailindex = columns.index('email') for line in lines[1:]: cols = line.split(',') if len(cols) <= 1: continue subscriber = { 'categories': map(safe_unicode, cols[categoryindex].strip('"').split(';')), 'email': cols[emailindex] } match = subscribe.get_subscriber(subscriber['email']) if match is not None: for cat in subscriber['categories']: if cat not in match['categories']: match['categories'].append(cat) else: for index, col in enumerate(cols): if (index == categoryindex): continue if col == '': subscriber[columns[index]] = None elif col == 'True' or col == 'False': subscriber[columns[index]] = col == 'True' else: try: subscriber[columns[index]] = float(col) except ValueError: subscriber[columns[index]] = col subscribe.register(subscriber['email'], subscriber) allcategories = api.portal.get_registry_record(reg_key) for cat in subscriber['categories']: if cat not in allcategories: allcategories.append(cat) api.portal.set_registry_record(reg_key, allcategories)
def test_category_match(self): subscribe.register('*****@*****.**', {'categories': [u'A']}) subscriber = subscribe.get('*****@*****.**') subscribe.confirm('*****@*****.**', subscriber['code']) responses.add(responses.POST, "https://www.google.com/recaptcha/api/siteverify", body='{"success": true}', content_type="application/json") self.request.form.update({ 'form.widgets.subject': u'TEST', 'form.widgets.send_to_categories': [u'A'], 'form.widgets.body': 'Words words words', 'form.widgets.body_plain': 'Words words words', 'form.buttons.send2': 'Send' }) form = SendEmailSubscribersForm(self.portal, self.request) form() mailhost = self.portal.MailHost self.assertEqual(len(mailhost.messages), 1) self.assertEquals(len(subscribe.SubscriptionStorage()._data), 1)
def action_subscribe(self, action): data, errors = self.extractData() if self.has_captcha and self.isAnon: if not verify_recaptcha(self.request): notify( ActionErrorOccurred( action, WidgetActionExecutionError('captcha', Invalid('Invalid Recaptcha')))) return subsciber = subscribe.get_subscriber(data.get('email')) if subsciber: notify( ActionErrorOccurred( action, WidgetActionExecutionError('email', Invalid('User already subscribed')))) return if not errors: item = subscribe.register(data['email'], data) self.send_mail(data['email'], item) self.sent = True api.portal.show_message( 'Verification email has been sent to your email', request=self.request, type='info') if self.has_texting and data.get('phone_number'): if not self.send_text_message(item): api.portal.show_message('Error sending code', request=self.request, type='error') else: api.portal.show_message('Code texted to your number to verify', request=self.request, type='info') self.request.response.redirect('%s/@@subscribe-phone?%s' % ( self.context.absolute_url(), urlencode({ 'form.widgets.email': item['email'], 'form.widgets.phone_number': item.get('phone_number', '') }) ))
def test_categories(self): data = subscribe.register('*****@*****.**', {'categories': [u'A']}) subscribe.confirm('*****@*****.**', data['code']) user = subscribe.get('*****@*****.**') self.assertEquals(user['categories'], [u'A']) self.assertFalse(user['categories'] == [])
def test_get_email_address(self): data = subscribe.register('*****@*****.**', {'foo': 'bar'}) subscribe.confirm('*****@*****.**', data['code']) self.assertEquals(len(subscribe.get_email_addresses()), 1)
def test_adds_code(self): subscribe.register('*****@*****.**', {'foo': 'bar'}) item = subscribe.get_subscriber('*****@*****.**') self.assertTrue('code' in item)
def test_add_subscriber(self): data = subscribe.register('*****@*****.**', {'foo': 'bar'}) subscribe.confirm('*****@*****.**', data['code']) self.assertEquals(len([i for i in subscribe.all()]), 1)