def test_index(self): index = SubscriptionIndex('test_index') uid = str(uuid.uuid4()) sub = MockSub() assert not index.item_uids_for(sub) assert not index.item_uids_for(sub.signature()) assert not index.subscribers_for(uid) #try twice, will not duplicate index: for i in range(0, 2): index.index(sub, uid) result_uids = index.item_uids_for(sub) result_subs = index.subscribers_for(uid) assert len(result_uids) == 1 assert len(result_subs) == 1 assert uid in result_uids assert sub.signature() in result_subs #index same intem, another sub: sub2 = MockSub() sub2.email = '*****@*****.**' sub2.namespace = 'email' assert sub2.signature() == ('email', '*****@*****.**') index.index(sub2, uid) result_uids = index.item_uids_for(sub2) result_subs = index.subscribers_for(uid) assert len(result_uids) == 1 assert len(result_subs) == 2 assert uid in result_uids assert sub2.signature() in result_subs assert sub.signature() in result_subs # return locals for continued use by other tests: return locals()
def test_unindex(self): idx_locals = self.test_index() index = idx_locals['index'] uid = idx_locals['uid'] sub = MockSub() index.unindex(sub, uid) result_uids = index.item_uids_for(sub) result_subs = index.subscribers_for(uid) assert len(result_uids) == 0 assert len(result_subs) == 1 assert uid not in result_uids assert sub.signature() not in result_subs sub2sig = ('email', '*****@*****.**') assert sub2sig in result_subs # sub2 from above index.unindex(sub2sig, uid) # unindex sub2 result_uids = index.item_uids_for(sub2sig) result_subs = index.subscribers_for(uid) assert len(result_uids) == 0 assert len(result_subs) == 0
import base64 import unittest2 as unittest import uuid from hashlib import md5 from collective.subscribe.interfaces import ISubscriptionKeys from collective.subscribe.tests.common import MockSub from collective.subscribe.keys import SubscriptionKeys SUB = MockSub() UID = str(uuid.uuid4()) NAME = 'invited' VALID = (NAME, SUB.signature(), UID) INVALID = ( (NAME, (), UID), ((), SUB.signature(), UID), (NAME, SUB.signature), ) EXPECTED = base64.urlsafe_b64encode( md5('%s/%s/%s' % (NAME, hash(SUB.signature()), UID)).digest())[:22] class KeysTest(unittest.TestCase): """Test subscription keys mapping without a ZODB fixture""" def setUp(self): self.subkeys = SubscriptionKeys() assert len(self.subkeys) == 0 def test_iface(self):