def test_matchCalendarUserAddress(self): # iMIP not sensitive to case: self.patch(config.Scheduling[ScheduleViaIMip.serviceType()], "AddressPatterns", ["mailto:.*"]) result = yield ScheduleViaIMip.matchCalendarUserAddress("mailto:[email protected]") self.assertTrue(result) result = ScheduleViaIMip.matchCalendarUserAddress("MAILTO:[email protected]") self.assertTrue(result)
def test_no_freebusy(self): data = """BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN BEGIN:VFREEBUSY UID:12345-67890 DTSTART:20080601T120000Z DTEND:20080601T130000Z ORGANIZER;CN="User 01":mailto:[email protected] ATTENDEE:mailto:[email protected] ATTENDEE:mailto:[email protected] END:VFREEBUSY END:VCALENDAR """ scheduler = iMIPProcessing.FakeSchedule( LocalCalendarUser("mailto:[email protected]", None), Component.fromString(data) ) recipients = (RemoteCalendarUser("mailto:[email protected]"),) responses = ScheduleResponseQueue("REQUEST", responsecode.OK) delivery = ScheduleViaIMip(scheduler, recipients, responses, True) yield delivery.generateSchedulingResponses() self.assertEqual(len(responses.responses), 1) self.assertEqual(str(responses.responses[0].reqstatus), iTIPRequestStatus.SERVICE_UNAVAILABLE)
def generateIMIPSchedulingResponses(self, recipients, responses, freebusy): """ Generate scheduling responses for iMIP recipients. """ # Create the scheduler and run it. requestor = ScheduleViaIMip(self, recipients, responses, freebusy) return requestor.generateSchedulingResponses()
def test_iMIP_delivery(self): data = """BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN BEGIN:VEVENT UID:12345-67890 DTSTART:20080601T120000Z DTEND:20080601T130000Z ORGANIZER;CN="User 01":mailto:[email protected] ATTENDEE:mailto:[email protected] ATTENDEE:mailto:[email protected] END:VEVENT END:VCALENDAR """ results = [] class FakeSender(object): def outbound(self, txn, fromAddr, toAddr, calendar): results.append((fromAddr, toAddr)) return succeed(None) self.patch(IMIPInvitationWork, "mailSender", FakeSender()) scheduler = iMIPProcessing.FakeSchedule( LocalCalendarUser("mailto:[email protected]", None), Component.fromString(data) ) scheduler.txn = self.transactionUnderTest() recipients = (RemoteCalendarUser("mailto:[email protected]"),) responses = ScheduleResponseQueue("REQUEST", responsecode.OK) delivery = ScheduleViaIMip(scheduler, recipients, responses, False) yield delivery.generateSchedulingResponses() self.assertEqual(len(responses.responses), 1) self.assertEqual(str(responses.responses[0].reqstatus), iTIPRequestStatus.MESSAGE_SENT) yield JobItem.waitEmpty(self.store.newTransaction, reactor, 60) self.assertEqual(len(results), 1) self.assertEqual(results[0], ("mailto:[email protected]", "mailto:[email protected]",))