Пример #1
0
    def test_save_success(self):
        self.request.context = User.by_id(2)

        # add a property that will get updated on save_success()
        self.request.context.set_property(key=u'foo', value=u'var')

        result = self.view.save_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/user/2/')

        user = User.by_id(2)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertTrue(verify('new_secret', user.password))
        self.assertEqual(user.fullname, u'Foö Bar')
        self.assertEqual(user.affiliate, u'Aff')
        self.assertEqual(user.billing_email, '*****@*****.**')
        self.assertEqual(user.valid_to, date(2014, 2, 1))
        self.assertEqual(user.last_payment, date(2014, 1, 1))
        self.assertEqual(user.groups,
                         [Group.by_id(1), Group.by_id(3)
                          ])  # enabled user stays enabled  # noqa
        self.assertEqual(user.get_property('foo'), 'bar')
        self.assertEqual(user.get_property('baz'), 'bam')
        self.assertEqual(user.get_property('empty'), None)
        with self.assertRaises(KeyError):
            user.get_property('bimt')  # removed property

        self.assertEqual(
            self.request.session.pop_flash(),
            [u'User "*****@*****.**" modified.'],
        )
Пример #2
0
    def test_empty_password_field(self):
        self.request.context = User.by_id(2)

        # simulate that password field was left empty
        appstruct = copy.deepcopy(self.APPSTRUCT)
        appstruct['password'] = ''

        # submit form
        self.view.save_success(appstruct)

        # assert that secret fields remained unchanged
        user = User.by_id(2)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertTrue(verify('secret', user.password))
Пример #3
0
    def test_save_success_disabled_stays_disabled(self):
        self.request.context = User.by_id(2)
        self.request.context.disable()

        result = self.view.save_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/user/2/')

        user = User.by_id(2)

        self.assertEqual(user.groups, [Group.by_id(1)])
        self.assertEqual(
            self.request.session.pop_flash(),
            [u'User "*****@*****.**" modified.'],
        )
Пример #4
0
    def save_success(self, appstruct):
        group = self.request.context

        group.name = appstruct.get('name')
        group.product_id = appstruct.get('product_id')
        group.validity = appstruct.get('validity')
        group.trial_validity = appstruct.get('trial_validity')
        group.addon = appstruct.get('addon')
        group.forward_ipn_to_url = appstruct.get('forward_ipn_to_url')

        group.users = [
            User.by_id(user_id) for user_id in appstruct.get('users', [])
        ]  # noqa
        group.upgrade_groups = [
            Group.by_id(group_id)
            for group_id in appstruct.get('upgrade_groups', [])
        ]  # noqa

        # remove properties that are not present in appstruct
        for prop in copy.copy(group.properties):
            if prop.key not in [p['key'] for p in appstruct['properties']]:
                group.properties.remove(prop)

        # update/create properties present in appstruct
        for prop in appstruct['properties']:
            if group.get_property(prop['key'], None) is not None:
                group.set_property(key=prop['key'], value=prop['value'])
            else:
                group.properties.append(
                    GroupProperty(key=prop['key'], value=prop['value']))

        self.request.session.flash(u'Group "{}" modified.'.format(group.name))
        return HTTPFound(
            location=self.request.route_path('group_edit', group_id=group.id))
Пример #5
0
    def submit_success(self, appstruct):
        group = Group(
            name=appstruct.get('name'),
            product_id=appstruct.get('product_id'),
            validity=appstruct.get('validity'),
            trial_validity=appstruct.get('trial_validity'),
            addon=appstruct.get('addon'),
            forward_ipn_to_url=appstruct.get('forward_ipn_to_url'),
            users=[
                User.by_id(user_id) for user_id in appstruct.get('users', [])
            ],  # noqa
            upgrade_groups=[
                Group.by_id(group_id)
                for group_id in appstruct.get('upgrade_groups', [])
            ],  # noqa
            properties=[
                GroupProperty(key=prop['key'], value=prop['value'])
                for prop in appstruct.get('properties', [])
            ],
        )

        Session.add(group)
        Session.flush()
        self.request.session.flash(u'Group "{}" added.'.format(group.name))
        return HTTPFound(
            location=self.request.route_path('group_edit', group_id=group.id))
Пример #6
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)
Пример #7
0
 def __getitem__(self, key):
     user = User.by_id(key)
     if user:
         user.__parent__ = self
         user.__name__ = key
         return user
     else:
         raise KeyError
Пример #8
0
 def test_no_group(self):
     group = _make_group()
     _make_user(groups=[
         group,
     ])
     _make_portlet(name='foo', groups=[], position='above_content')
     portlets = Portlet.by_user_and_position(User.by_id(1), 'above_content')
     self.assertEqual(len(portlets), 0)
Пример #9
0
    def test_populate_columns_disabled(self):
        with transaction.manager:
            User.by_id(2).disable()
        self.view.populate_columns(User.by_id(2))

        self.assertEqual(
            self.view.columns['id'],
            u'<a style="text-decoration: line-through" href="/user/2/">2</a>')
        self.assertEqual(
            self.view.columns['fullname'],
            (u'<a style="text-decoration: line-through" href="/user/2/">'
             u'Stäff Member</a>'))
        self.assertEqual(
            self.view.columns['email'],
            (u'<a style="text-decoration: line-through" href="/user/2/">'
             u'[email protected]</a>'))
        self.assertEqual(self.view.columns['groups'],
                         u'<a href="/group/2/edit/">staff</a>')
        self.assertIn('Enable', self.view.columns['enable/disable'])
Пример #10
0
 def test_populate_columns_entry_without_user(self):
     self.config.testing_securitypolicy(userid='*****@*****.**',
                                        permissive=False)
     Session.delete(User.by_id(3))
     Session.flush()
     view = self._make_view()
     self.assertEqual(view.columns['comment'], u'unread entry')
     self.assertEqual(view.columns['event_type_id'],
                      'User Changed Password')
     self.assertEqual(view.columns['user_id'], None)
     self.assertEqual(view.columns['action'], None)
Пример #11
0
    def setUp(self):
        self.config = testing.setUp()
        add_routes_user(self.config)
        initTestingDB(users=True, groups=True, auditlog_types=True)

        from pyramid_bimt.views.user import UserView
        self.context = User.by_id(2)
        self.request = testing.DummyRequest(layout_manager=mock.Mock(),
                                            user=self.context)
        self.context.request = self.request
        self.view = UserView(self.context, self.request)
Пример #12
0
    def __call__(self):
        warnings = []
        user = User.by_id(1)

        if not user:
            warnings.append('User "admin" should have id of "1".')
        if user and user.enabled:
            warnings.append('User "admin" should be disabled in production.')
        if user and Group.by_name('admins') not in user.groups:
            warnings.append('User "admin" should be in "admins" group.')
        return warnings
Пример #13
0
    def test_populate_columns_enabled(self):
        self.view.populate_columns(User.by_id(2))

        self.assertEqual(self.view.columns['id'], u'<a href="/user/2/">2</a>')
        self.assertEqual(self.view.columns['fullname'],
                         u'<a href="/user/2/">Stäff Member</a>')
        self.assertEqual(self.view.columns['email'],
                         u'<a href="/user/2/">[email protected]</a>')
        self.assertEqual(
            self.view.columns['groups'],
            u'<a href="/group/2/edit/">staff</a><span>, </span><a href="/group/3/edit/">enabled</a>'  # noqa
        )
        self.assertIn('Disable', self.view.columns['enable/disable'])
Пример #14
0
    def setUp(self):
        from pyramid_bimt.tests.test_group_model import _make_group
        initTestingDB(groups=True, users=True, auditlog_types=True)
        self.config = testing.setUp(request=testing.DummyRequest())
        configure(self.config)
        self.request = get_current_request()
        self.request.user = User.by_id(1)
        self.group1 = _make_group(name='group1', product_id='1')
        self.group2 = _make_group(name='group2', product_id='2')
        self.request.user.groups = [self.group1, ]

        from pyramid_layout.layout import LayoutManager

        self.request.layout_manager = LayoutManager('context', 'requestr')
Пример #15
0
 def test_position_filter(self):
     group = _make_group()
     _make_user(groups=[
         group,
     ])
     _make_portlet(name='foo', groups=[
         group,
     ], position='above_content')
     _make_portlet(name='bar', groups=[
         group,
     ], position='above_footer')
     portlets = Portlet.by_user_and_position(User.by_id(1), 'above_content')
     self.assertEqual(len(portlets), 1)
     self.assertEqual(portlets[0].name, 'foo')
Пример #16
0
 def test_user_in_group_and_exclude_group(self):
     group1 = _make_group()
     group2 = _make_group(name='bar')
     _make_user(groups=[
         group1,
         group2,
     ])
     _make_portlet(name='foo',
                   groups=[
                       group1,
                   ],
                   exclude_groups=[
                       group2,
                   ],
                   position='above_content')
     portlets = Portlet.by_user_and_position(User.by_id(1), 'above_content')
     self.assertEqual(len(portlets), 0)
Пример #17
0
def run_all_checks(request):
    """Find all sanity checks and run them.

    :returns: sanitycheck warnings
    :rtype: list of strings
    """
    warnings = []
    for check in request.registry.getAllUtilitiesRegisteredFor(ISanityCheck):
        warnings += check()()
    if warnings:
        comment = u', '.join(warnings)
    else:
        comment = u'Sanity check finished without any warnings.'

    request.registry.notify(
        SanityCheckDone(request, User.by_id(1), comment=comment)
    )

    return warnings
Пример #18
0
    def test_save_success_remove_properties(self):
        self.request.context = Group.by_id(1)

        self.APPSTRUCT['properties'] = []
        result = self.view(self.request).save_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/group/1/edit/')

        group = Group.by_id(1)
        self.assertEqual(group.name, 'foo')
        self.assertEqual(group.product_id, 13)
        self.assertEqual(group.validity, 31)
        self.assertEqual(group.trial_validity, 7)
        self.assertEqual(group.addon, True)
        self.assertEqual(group.forward_ipn_to_url, 'http://example.com')
        self.assertEqual(group.users, [
            User.by_id(2),
        ])
        self.assertIsNone(group.get_property('foo', None))
        self.assertEqual(self.request.session.pop_flash(),
                         [u'Group "foo" modified.'])
Пример #19
0
    def test_submit_success(self):
        result = self.view.submit_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/group/7/edit/')

        group = Group.by_id(7)
        self.assertEqual(group.name, 'foo')
        self.assertEqual(group.product_id, '13')
        self.assertEqual(group.validity, 30)
        self.assertEqual(group.trial_validity, 7)
        self.assertEqual(group.addon, False)
        self.assertEqual(group.forward_ipn_to_url, 'http://example.com')
        self.assertEqual(group.users, [
            User.by_id(1),
        ])
        self.assertEqual(group.upgrade_groups, [
            Group.by_id(1),
        ])
        self.assertEqual(group.get_property('foo'), 'bar')

        self.assertEqual(self.request.session.pop_flash(),
                         [u'Group "foo" added.'])
Пример #20
0
    def test_submit_success(self, UserCreated):
        result = self.view.submit_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/user/4/')
        self.assertTrue(self.request.registry.notify.called)

        user = User.by_id(4)
        self.assertEqual(user.email, '*****@*****.**')
        self.assertTrue(verify('secret', user.password))
        self.assertEqual(user.fullname, u'Foö Bar')
        self.assertEqual(user.affiliate, u'Aff')
        self.assertEqual(user.billing_email, '*****@*****.**')
        self.assertEqual(user.valid_to, date(2014, 2, 1))
        self.assertEqual(user.last_payment, date(2014, 1, 1))
        self.assertEqual(user.groups, [
            Group.by_id(1),
        ])
        self.assertEqual(user.get_property('foo'), 'bar')
        UserCreated.assert_called_with(self.request, user, 'secret',
                                       u'Created manually by [email protected]')

        self.assertEqual(self.request.session.pop_flash(),
                         [u'User "*****@*****.**" added.'])
Пример #21
0
    def test_save_success(self):
        self.request.context = Group.by_id(1)

        # add a property that will get updated on save_success()
        self.request.context.set_property(key=u'foo', value=u'var')

        result = self.view(self.request).save_success(self.APPSTRUCT)
        self.assertIsInstance(result, HTTPFound)
        self.assertEqual(result.location, '/group/1/edit/')

        group = Group.by_id(1)
        self.assertEqual(group.name, 'foo')
        self.assertEqual(group.product_id, 13)
        self.assertEqual(group.validity, 31)
        self.assertEqual(group.trial_validity, 7)
        self.assertEqual(group.addon, True)
        self.assertEqual(group.forward_ipn_to_url, 'http://example.com')
        self.assertEqual(group.users, [
            User.by_id(2),
        ])
        self.assertEqual(group.get_property('foo'), 'bar')
        self.assertEqual(group.get_property('baz'), 'bam')
        self.assertEqual(self.request.session.pop_flash(),
                         [u'Group "foo" modified.'])