示例#1
0
 def setUp(self):
     self.request = mock.Mock()
     self.request.registry.settings = {
         'bimt.clickbank_dev_key': 'secret',
         'bimt.clickbank_api_key': 'secret'
     }
     self.view = SettingsForm(self.request)
示例#2
0
 def setUp(self):
     initTestingDB(groups=True, users=True)
     self.config = testing.setUp()
     self.request = testing.DummyRequest(
         layout_manager=mock.Mock(),
         user=User.by_id(2),
     )
     self.view = SettingsForm(self.request)
示例#3
0
    def test_regenerate_api_key_success(self, find_layout):

        self.config.testing_securitypolicy(
            userid='*****@*****.**', permissive=True)
        req = get_current_request()
        req.user = mock.Mock()
        settings_view = SettingsForm(req)
        settings_view.regenerate_api_key_success(None)
        self.assertEqual(
            settings_view.request.session['_f_'],
            [u'API key re-generated.'],
        )
示例#4
0
 def test_settings_view_trial_user(self):
     request = testing.DummyRequest()
     request.context = mock.Mock()
     request.user = mock.Mock(trial=True)
     resp = SettingsForm(request)
     self.assertEqual(resp.title, 'Settings')
     self.assertIsNone(resp.schema.get('change_subscription'))
示例#5
0
    def test_settings_view_save_success_same_email(self, find_layout):

        self.config.testing_securitypolicy(
            userid='*****@*****.**', permissive=True)
        self.request.user.email = '*****@*****.**'
        self.request.user.fullname = 'John'
        form_values = {
            'account_info': {'email': '*****@*****.**', 'fullname': 'John'},
            'affiliate_settings': {'clickbank_affiliate_id': ''}
        }
        settings_view = SettingsForm(self.request)
        settings_view.save_success(form_values)
        self.assertEqual(self.request.user.email, '*****@*****.**')
        self.assertEqual(self.request.user.fullname, 'John')
        self.request.user.get_property.assert_not_called()
        self.assertEqual(
            settings_view.request.session['_f_'],
            [u'Your changes have been saved.'],
        )
示例#6
0
    def test_settings_view_response(self, find_layout):
        self.request.registry.settings['bimt.referral_url'] = 'test_url'
        self.config.testing_securitypolicy(
            userid='*****@*****.**', permissive=True)
        find_layout.return_value = mock.Mock(spec='current_page')

        settings_view = SettingsForm(self.request)
        self.assertEqual(type(settings_view), SettingsForm)
        resp = settings_view()
        self.assertEqual('Settings', resp['title'])
示例#7
0
    def test_upgrade_subscription_success(
            self, find_layout, _change_clickbank_subscription):
        _change_clickbank_subscription.return_value = 1

        settings_view = SettingsForm(self.request)
        settings_view.upgrade_subscription_success(
            {'change_subscription': {'upgrade_subscription': self.group2.id}})
        self.assertEqual(
            settings_view.request.session['_f_'],
            [u'Your subscription (1) has been upgraded from group1 to group2.'],  # noqa
        )
        self.assertTrue(self.request.user.get_property('upgrade_completed'))

        from pyramid_bimt.models import AuditLogEntry
        entry = AuditLogEntry.get_all(security=False).first()
        self.assertEqual(
            entry.comment,
            u'Your subscription (1) has been upgraded from group1 to group2.'
        )
        self.assertEqual(entry.user.id, self.request.user.id)
示例#8
0
    def test_upgrade_subscription_exception(
            self, find_layout, _change_clickbank_subscription):
        from pyramid_bimt.clickbank import ClickbankException

        _change_clickbank_subscription.side_effect = ClickbankException()

        settings_view = SettingsForm(self.request)
        settings_view.upgrade_subscription_success(
            {'change_subscription': {'upgrade_subscription': self.group2.id}})
        self.assertEqual(
            settings_view.request.session['_f_'],
            [u'Your upgrade has not completed successfully. Support team has been notified and they are looking into the problem.'],  # noqa
        )
        self.assertIsNone(
            self.request.user.get_property('upgrade_completed', None))

        from pyramid_bimt.models import AuditLogEntry
        entry = AuditLogEntry.get_all(security=False).first()
        self.assertEqual(
            entry.comment,
            u'Your upgrade has not completed successfully. Support team has been notified and they are looking into the problem.'  # noqa
        )
        self.assertEqual(entry.user.id, self.request.user.id)
示例#9
0
class TestSubscription(unittest.TestCase):

    def setUp(self):
        initTestingDB(groups=True, users=True)
        self.config = testing.setUp()
        self.request = testing.DummyRequest(
            layout_manager=mock.Mock(),
            user=User.by_id(2),
        )
        self.view = SettingsForm(self.request)

    def tearDown(self):
        Session.remove()
        testing.tearDown()

    @mock.patch('pyramid_layout.layout.find_layout')
    def test_subscribe_to_newsletter_button_missing(self, find_layout):
        self.request.registry.settings['bimt.referral_url'] = 'test_url'
        response = self.view()
        self.assertNotIn('Subscribe to newsletter', response['form'])

    @mock.patch('pyramid_layout.layout.find_layout')
    def test_subscribe_to_newsletter_button_present(self, find_layout):
        self.request.registry.settings['bimt.referral_url'] = 'test_url'
        self.request.user.unsubscribe()
        response = self.view()
        self.assertIn('Subscribe to newsletter', response['form'])

    @mock.patch('pyramid_layout.layout.find_layout')
    def test_subscribe_to_newsletter_unsubscribed(self, find_layout):
        self.request.user.unsubscribe()
        self.view.subscribe_to_newsletter_success(None)
        self.assertEqual(
            self.request.session['_f_'],
            [u'You have been subscribed to newsletter.'],
        )
        self.assertFalse(self.request.user.unsubscribed)
示例#10
0
class TestChangeSubscription(unittest.TestCase):

    def setUp(self):
        self.request = mock.Mock()
        self.request.registry.settings = {
            'bimt.clickbank_dev_key': 'secret',
            'bimt.clickbank_api_key': 'secret'
        }
        self.view = SettingsForm(self.request)

    def test_success(self, ClickbankAPI):
        ClickbankAPI.return_value.change_user_subscription.return_value = '111'
        self.assertEqual(
            self.view._change_clickbank_subscription(mock.Mock(product_id=1)),
            '111',
        )

    def test_exception(self, ClickbankAPI):
        from pyramid_bimt.clickbank import ClickbankException
        ClickbankAPI.return_value.change_user_subscription.side_effect = ClickbankException()  # noqa
        with self.assertRaises(ClickbankException):
            self.view._change_clickbank_subscription(mock.Mock(product_id=1))

    def test_use_billing_email(self, ClickbankAPI):
        self.request.registry.settings['bimt.clickbank_dev_key'] = 'dev'
        self.request.registry.settings['bimt.clickbank_api_key'] = 'key'
        self.request.user.product_group.product_id = 'foo'

        self.request.user.email = '*****@*****.**'
        self.request.user.billing_email = None
        self.view._change_clickbank_subscription(
            Group(id=1, name='bar', product_id='baz'))
        ClickbankAPI.return_value.change_user_subscription.assert_called_with(
            '*****@*****.**', 'foo', 'baz')

        self.request.user.email = '*****@*****.**'
        self.request.user.billing_email = '*****@*****.**'
        self.view._change_clickbank_subscription(
            Group(id=1, name='bar', product_id='baz'))
        ClickbankAPI.return_value.change_user_subscription.assert_called_with(
            '*****@*****.**', 'foo', 'baz')
示例#11
0
 def test_view_csrf_token(self):
     settings_view = SettingsForm(self.request)
     csrf_token_field = settings_view.schema.get('csrf_token')
     self.assertIsNotNone(csrf_token_field)
     self.assertEqual(csrf_token_field.title, 'Csrf Token')