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.'], )
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))
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.'], )
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))
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))
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 __getitem__(self, key): user = User.by_id(key) if user: user.__parent__ = self user.__name__ = key return user else: raise KeyError
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)
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'])
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)
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)
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
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'])
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')
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')
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)
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
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.'])
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.'])
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.'])
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.'])