def test_normalize_key_invalid(self): key = "somestring" self.assertRaises(KeyError, self.container.add, key) badsub = ItemSubscriber() badsub.email = None badsub.user = None self.assertRaises(Invalid, self.container.add, badsub)
def test_normalize_key_email(self): expected = ("email", "*****@*****.**") sub = ItemSubscriber() sub.email = expected[1] assert self.container._normalize_key(sub) == expected k, v = self.container.add(sub) assert k == expected assert expected in self.container
def test_invariants(self): """Test interface invariants for IItemSubscriber""" verify = lambda sub: IItemSubscriber.validateInvariants(sub) # test empty email and user subscriber = ItemSubscriber() self.assertRaises(Invalid, verify, subscriber) # test email only subscriber.email = "*****@*****.**" self.fail_on_err(Invalid, verify, subscriber) # test both user and email subscriber.user = "******" self.fail_on_err(Invalid, verify, subscriber) # test user only subscriber.email = None self.fail_on_err(Invalid, verify, subscriber)
def update(self): context = self.context mtool = getToolByName(context, 'portal_membership') self.uid = IUIDStrategy(context).getuid() self.container = queryUtility(ISubscribers) self.utility = getUtility(IDigestUtility) self.catalog = queryUtility(ISubscriptionCatalog) self.user = mtool.getAuthenticatedMember() self.user_id = self.user.getId() self.subscriber = ItemSubscriber(user=self.user_id) self.subscribed_daily = ('member', self.user_id) in self.catalog.search({'daily-digest': self.uid}) self.subscribed_weekly = ('member', self.user_id) in self.catalog.search({'weekly-digest': self.uid}) self.subscribed_nothing = not (self.subscribed_daily or self.subscribed_weekly)
def test_signature(self): key1 = ("email", "*****@*****.**") sub1 = ItemSubscriber() self.assertRaises(Invalid, sub1.signature) # no email, no user sub1.email = "*****@*****.**" assert sub1.signature() == key1 key2 = ("member", "here") sub2 = ItemSubscriber() sub2.user = "******" # default namespace is 'member' assert sub2.signature() == key2