def test_tags(self): from karl.testing import DummyUsers self._registerTagbox() self._registerCatalogSearch() testing.registerDummySecurityPolicy('eddie') TAGS = {'beaver': 1, 'wally': 3} context = DummyProfile() context.title = "Eddie" context.__name__ = "eddie" users = context.users = DummyUsers() users.add("eddie", "eddie", "password", []) tags = context.tags = testing.DummyModel() def _getTags(items=None, users=None, community=None): assert items is None assert list(users) == ['eddie'] assert community is None return TAGS.keys() tags.getTags = _getTags def _getFrequency(tags=None, community=None, user=None): assert community is None assert tags is not None assert user == 'eddie' return TAGS.items() tags.getFrequency = _getFrequency request = testing.DummyRequest() renderer = testing.registerDummyRenderer('templates/profile.pt') response = self._callFUT(context, request) self.assertEqual(len(renderer.tags), 2) self.failUnless(renderer.tags[0], {'name': 'wally', 'count': 3}) self.failUnless(renderer.tags[1], {'name': 'beaver', 'count': 1})
def test_not_editable(self): self._registerTagbox() self._registerCatalogSearch() from karl.testing import DummyUsers testing.registerDummySecurityPolicy('userid') renderer = testing.registerDummyRenderer('templates/profile.pt') request = testing.DummyRequest() context = DummyProfile() context.__name__ = 'chris' context.users = DummyUsers() context.users.add("userid", "userlogin", "password", []) context.users.add("chris", "chrislogin", "password", []) self._callFUT(context, request) self.assertEqual(len(renderer.actions), 1) self.assertEqual(renderer.actions[0][1], 'admin_edit_profile.html')
def test_new_password_mismatch(self): from karl.testing import DummyUsers context = DummyProfile() context.__name__ = 'me' context.users = DummyUsers() context.users.add('me', 'me', self._old_password(), []) request = testing.DummyRequest({ 'form.submitted': 1, 'old_password': '******', 'password': '******', 'password_confirm': 'winwinwin', }) renderer = testing.registerDummyRenderer('templates/change_password.pt') self._callFUT(context, request) self.failUnless(renderer.fielderrors)
def test_tags_capped_at_ten(self): from karl.testing import DummyUsers self._registerTagbox() self._registerCatalogSearch() testing.registerDummySecurityPolicy('eddie') TAGS = {'alpha': 1, 'bravo': 2, 'charlie': 3, 'delta': 4, 'echo': 5, 'foxtrot': 6, 'golf': 7, 'hotel': 8, 'india': 9, 'juliet': 10, 'kilo': 11, } context = DummyProfile() context.title = "Eddie" context.__name__ = "eddie" users = context.users = DummyUsers() users.add("eddie", "eddie", "password", []) tags = context.tags = testing.DummyModel() def _getTags(items=None, users=None, community=None): assert items is None assert list(users) == ['eddie'] assert community is None return TAGS.keys() tags.getTags = _getTags def _getFrequency(tags=None, community=None, user=None): assert community is None assert tags is not None assert user == 'eddie' return TAGS.items() tags.getFrequency = _getFrequency request = testing.DummyRequest() renderer = testing.registerDummyRenderer('templates/profile.pt') response = self._callFUT(context, request) self.assertEqual(len(renderer.tags), 10) self.failUnless(renderer.tags[0], {'name': 'kilo', 'count': 11}) self.failUnless(renderer.tags[1], {'name': 'juliet', 'count': 10}) self.failUnless(renderer.tags[9], {'name': 'bravo', 'count': 2})
def test_success(self): from karl.testing import DummyUsers context = DummyProfile() context.__name__ = 'me' parent = testing.DummyModel() parent.__name__ = '' parent.__parent__ = None context.__parent__ = parent context.title = 'Me' context.email = '*****@*****.**' parent.users = DummyUsers() parent.users.add('me', 'me', self._old_password(), []) request = testing.DummyRequest({ 'form.submitted': 1, 'old_password': '******', 'password': '******', 'password_confirm': 'newnewnew', }) renderer = testing.registerDummyRenderer( 'templates/change_password.pt') from repoze.sendmail.interfaces import IMailDelivery from karl.testing import DummyMailer mailer = DummyMailer() testing.registerUtility(mailer, IMailDelivery) response = self._callFUT(context, request) from repoze.who.plugins.zodb.users import get_sha_password new_enc = get_sha_password('newnewnew') self.assertEqual(parent.users.get_by_id('me')['password'], new_enc) self.assertEqual(response.location, 'http://example.com/me/?status_message=Password%20changed') self.assertEqual(len(mailer), 1) msg = mailer.pop() self.assertEqual(msg.mto, ['*****@*****.**']) self.assertEqual(msg.mfrom, "*****@*****.**")
def test_show_recently_added(self): self._registerTagbox() search_args = {} def searcher(context): def search(**args): search_args.update(args) doc1 = testing.DummyModel(title='doc1') doc2 = testing.DummyModel(title='doc2') docids = [doc1, None, doc2] return len(docids), docids, lambda docid: docid return search from karl.models.interfaces import ICatalogSearch from repoze.bfg.testing import registerAdapter from zope.interface import Interface registerAdapter(searcher, (Interface,), ICatalogSearch) from karl.models.interfaces import IGridEntryInfo testing.registerAdapter(DummyGridEntryAdapter, (Interface, Interface), IGridEntryInfo) from karl.testing import DummyUsers testing.registerDummySecurityPolicy('userid') renderer = testing.registerDummyRenderer('templates/profile.pt') request = testing.DummyRequest() context = DummyProfile() context.__name__ = 'chris' context.users = DummyUsers() context.users.add("userid", "userid", "password", []) context.users.add("chris", "chris", "password", []) self._callFUT(context, request) self.assertEqual(search_args['limit'], 5) self.assertEqual(search_args['creator'], 'chris') self.assertEqual(search_args['sort_index'], 'creation_date') self.assertEqual(search_args['reverse'], True) self.assertEqual(len(renderer.recent_items), 2) self.assertEqual(renderer.recent_items[0].context.title, 'doc1') self.assertEqual(renderer.recent_items[1].context.title, 'doc2')