/** * testXMozSnooze * * @see 0007682: CalDav - Tine - Thunderbird - Palm Pre */ public function testXMozSnooze() { $vcalendarStream = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/../../../Import/files/lightning_snooze.ics'); $converter = Tasks_Convert_Task_VCalendar_Factory::factory(Tasks_Convert_Task_VCalendar_Factory::CLIENT_THUNDERBIRD); $event = $converter->toTine20Model($vcalendarStream); $this->assertTrue(isset($event->attendee[0]->alarm_snooze_time)); $this->assertEquals('2013-04-12 06:24:46', $event->attendee[0]->alarm_snooze_time->toString()); }
/** * testXMozAckExdate * * @see 0009396: alarm_ack_time and alarm_snooze_time are not updated */ public function testXMozAckExdate() { $vcalendarStream = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/../../../Import/files/lightning_repeating_exdate_mozlastack.ics'); $converter = Calendar_Convert_Event_VCalendar_Factory::factory(Calendar_Convert_Event_VCalendar_Factory::CLIENT_THUNDERBIRD); $event = $converter->toTine20Model($vcalendarStream); $this->assertEquals(1, count($event->alarms)); $alarmOptions = Zend_Json::decode($event->alarms->getFirstRecord()->options); $alarmAckIndex = 'acknowledged-' . Tinebase_Core::getUser()->contact_id; $this->assertTrue(array_key_exists($alarmAckIndex, $alarmOptions), 'did not find index ' . $alarmAckIndex . ' in ' . print_r($alarmOptions, true)); $this->assertEquals('2014-01-08 15:01:54', $alarmOptions[$alarmAckIndex]); }
/** * save ics test event * * @param string $filename * @param string $client * @return Calendar_Model_Event */ protected function _saveIcsEvent($filename, $client = Calendar_Convert_Event_VCalendar_Factory::CLIENT_GENERIC) { $vcalendarStream = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/../../../Import/files/' . $filename, 'r'); $this->_converter = Calendar_Convert_Event_VCalendar_Factory::factory($client); $event = $this->_converter->toTine20Model($vcalendarStream); return Calendar_Controller_MSEventFacade::getInstance()->create($event); }
/** * createRecurringCalDavEvent * * @return Calendar_Frontend_WebDAV_Event */ protected function _createRecurringCalDavEvent() { $_SERVER['HTTP_USER_AGENT'] = 'Mac_OS_X/10.9 (13A603) CalendarAgent/174'; self::flushMailer(); $vcalendar = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/../Import/files/apple_ical_remind_part1.ics'); $id = Tinebase_Record_Abstract::generateUID(); $event = Calendar_Frontend_WebDAV_Event::create($this->_getTestCalendar(), "{$id}.ics", $vcalendar); return $event; }
/** * testExternalInvitationRequestProcess */ public function testExternalInvitationRequestProcess() { $ics = Calendar_Frontend_WebDAV_EventTest::getVCalendar(dirname(__FILE__) . '/files/invitation_request_external.ics'); $ics = preg_replace('#DTSTART;VALUE=DATE-TIME;TZID=Europe/Berlin:20111121T130000#', 'DTSTART;VALUE=DATE-TIME;TZID=Europe/Berlin:' . Tinebase_DateTime::now()->addHour(1)->format('Ymd\\THis'), $ics); $ics = preg_replace('#DTEND;VALUE=DATE-TIME;TZID=Europe/Berlin:20111121T140000#', 'DTEND;VALUE=DATE-TIME;TZID=Europe/Berlin:' . Tinebase_DateTime::now()->addHour(2)->format('Ymd\\THis'), $ics); $iMIP = new Calendar_Model_iMIP(array('id' => Tinebase_Record_Abstract::generateUID(), 'ics' => $ics, 'method' => 'REQUEST', 'originator' => '*****@*****.**')); Calendar_Controller_EventNotificationsTests::flushMailer(); $result = $this->_iMIPFrontendMock->process($iMIP, Calendar_Model_Attender::STATUS_ACCEPTED); $this->_iMIPFrontend->prepareComponent($iMIP); $this->_eventIdsToDelete[] = $iMIP->event->getId(); // assert external organizer $this->assertEquals('*****@*****.**', $iMIP->event->organizer->email, 'wrong organizer'); $this->assertTrue(empty($iMIP->event->organizer->account_id), 'organizer must not have an account'); // assert attendee $ownAttendee = Calendar_Model_Attender::getOwnAttender($iMIP->event->attendee); $this->assertTrue(!!$ownAttendee, 'own attendee missing'); $this->assertEquals(5, count($iMIP->event->attendee), 'all attendee must be keeped'); $this->assertEquals(Calendar_Model_Attender::STATUS_ACCEPTED, $ownAttendee->status, 'must be ACCEPTED'); // assert no status authkey for external attendee foreach ($iMIP->event->attendee as $attendee) { if (!$attendee->user_id->account_id) { $this->assertFalse(!!$attendee->user_id->status_authkey, 'authkey should be skipped'); } } // assert REPLY message to organizer only $smtpConfig = Tinebase_Config::getInstance()->get(Tinebase_Config::SMTP); if (isset($smtpConfig->from) && !empty($smtpConfig->from)) { $messages = Calendar_Controller_EventNotificationsTests::getMessages(); $this->assertEquals(1, count($messages), 'exactly one mail should be send'); $this->assertTrue(in_array('*****@*****.**', $messages[0]->getRecipients()), 'organizer is not a receipient'); $this->assertContains('accepted', $messages[0]->getSubject(), 'wrong subject'); $this->assertContains('METHOD:REPLY', var_export($messages[0], TRUE), 'method missing'); $this->assertContains('SEQUENCE:0', var_export($messages[0], TRUE), 'external sequence has not been keepted'); } }