def test_matchCalendarUserAddress(self): """ Make sure we do an exact comparison on EmailDomain """ self.patch(config.Scheduling.iSchedule, "Enabled", True) self.patch(config.Scheduling.iSchedule, "RemoteServers", "") # Only mailtos: result = yield ScheduleViaISchedule.matchCalendarUserAddress("http://example.com/principal/user") self.assertFalse(result) # Need to setup a fake resolver module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child("db.example.com") self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() result = yield ScheduleViaISchedule.matchCalendarUserAddress("mailto:[email protected]") self.assertTrue(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress("mailto:[email protected]") self.assertFalse(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress("mailto:[email protected]?subject=foobar") self.assertFalse(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress("mailto:user") self.assertFalse(result) # Test when not enabled ScheduleViaISchedule.domainServerMap = {} self.patch(config.Scheduling.iSchedule, "Enabled", False) result = yield ScheduleViaISchedule.matchCalendarUserAddress("mailto:[email protected]") self.assertFalse(result)
def test_HTTP_URI_key(self): # Need to setup a fake resolver module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child("db.example.com") self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() for d, s, result in ( ("example.com", "_ischedule", "https://key.example.com:8443/.well-known/domainkey/example.com/_ischedule" ), ("www.example.com", "_ischedule", "http://key.example.com/.well-known/domainkey/www.example.com/_ischedule" ), ("example.org", "_ischedule", "https://example.org/.well-known/domainkey/example.org/_ischedule" ), ): dkim = "v=1; d=%s; s = %s; t = 1234; a=rsa-sha1; q=http/well-known ; http=UE9TVDov; c=relaxed/simple; h=Content-Type:Originator:Recipient:Recipient:iSchedule-Version:iSchedule-Message-ID; bh=abc; b=" % ( d, s, ) tester = PublicKeyLookup_HTTP_WellKnown( DKIMUtils.extractTags(dkim)) uri = (yield tester._getURI()) self.assertEqual(uri, result)
def test_HTTP_URI_key(self): # Need to setup a fake resolver module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child("db.example.com") self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() for d, s, result in ( ("example.com", "_ischedule", "https://key.example.com:8443/.well-known/domainkey/example.com/_ischedule"), ("www.example.com", "_ischedule", "http://key.example.com/.well-known/domainkey/www.example.com/_ischedule"), ("example.org", "_ischedule", "https://example.org/.well-known/domainkey/example.org/_ischedule"), ): dkim = "v=1; d=%s; s = %s; t = 1234; a=rsa-sha1; q=http/well-known ; http=UE9TVDov; c=relaxed/simple; h=Content-Type:Originator:Recipient:Recipient:iSchedule-Version:iSchedule-Message-ID; bh=abc; b=" % (d, s,) tester = PublicKeyLookup_HTTP_WellKnown(DKIMUtils.extractTags(dkim)) uri = (yield tester._getURI()) self.assertEqual(uri, result)
def test_initResolver(self): """ Test L{lookupServerViaSRV} with a local Bind find """ # Default resolver utils.DebugResolver = None utils._initResolver() self.assertNotEqual(utils.DebugResolver, None) self.assertFalse(isinstance(utils.DebugResolver, BindAuthority)) # Patch config for Bind resolver for zonefile in ("db.example.com", "db.two.zones",): module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child(zonefile) self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() self.assertNotEqual(utils.DebugResolver, None) self.assertTrue(isinstance(utils.DebugResolver, BindAuthority))
def test_TXT_key(self): # Need to setup a fake resolver module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child("db.example.com") self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() for d, s, result in ( ("example.com", "_ischedule", True), ("example.com", "_revoked", False), ("example.com", "dkim", False), ("calendar.example.com", "_ischedule", False), ("example.org", "_ischedule", False), ): dkim = "v=1; d=%s; s = %s; t = 1234; a=rsa-sha1; q=dns/txt ; http=UE9TVDov; c=relaxed/simple; h=Content-Type:Originator:Recipient:Recipient:iSchedule-Version:iSchedule-Message-ID; bh=abc; b=" % (d, s,) tester = PublicKeyLookup_DNSTXT(DKIMUtils.extractTags(dkim)) pkey = yield tester.getPublicKey(False) self.assertEqual(pkey is not None, result)
def test_matchCalendarUserAddress(self): """ Make sure we do an exact comparison on EmailDomain """ self.patch(config.Scheduling.iSchedule, "Enabled", True) self.patch(config.Scheduling.iSchedule, "RemoteServers", "") # Only mailtos: result = yield ScheduleViaISchedule.matchCalendarUserAddress( "http://example.com/principal/user") self.assertFalse(result) # Need to setup a fake resolver module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child("db.example.com") self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() result = yield ScheduleViaISchedule.matchCalendarUserAddress( "mailto:[email protected]") self.assertTrue(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress( "mailto:[email protected]") self.assertFalse(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress( "mailto:[email protected]?subject=foobar") self.assertFalse(result) result = yield ScheduleViaISchedule.matchCalendarUserAddress( "mailto:user") self.assertFalse(result) # Test when not enabled ScheduleViaISchedule.domainServerMap = {} self.patch(config.Scheduling.iSchedule, "Enabled", False) result = yield ScheduleViaISchedule.matchCalendarUserAddress( "mailto:[email protected]") self.assertFalse(result)
def test_initResolver(self): """ Test L{lookupServerViaSRV} with a local Bind find """ # Default resolver utils.DebugResolver = None utils._initResolver() self.assertNotEqual(utils.DebugResolver, None) self.assertFalse(isinstance(utils.DebugResolver, BindAuthority)) # Patch config for Bind resolver for zonefile in ( "db.example.com", "db.two.zones", ): module = getModule(__name__) dataPath = module.filePath.sibling("data") bindPath = dataPath.child(zonefile) self.patch(config.Scheduling.iSchedule, "DNSDebug", bindPath.path) utils.DebugResolver = None utils._initResolver() self.assertNotEqual(utils.DebugResolver, None) self.assertTrue(isinstance(utils.DebugResolver, BindAuthority))