class Horde_Itip_Integration_ItipTest
extends PHPUnit_Framework_TestCase
{
- public function testMinimalItipHandlingSteps()
+ public function setUp()
{
- $iTip = $this->_getItip();
- $reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
- );
- $this->assertEquals($reply->getAttribute('ATTENDEE'), 'MAILTO:test@example.org');
+ $this->_transport = new Horde_Mail_Transport_Mock();
}
- public function testDefaultSequenceIdSetToZero()
+ public function testMinimalItipHandlingSteps()
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
- $this->assertSame($reply->getAttribute('SEQUENCE'), 0);
+ $this->assertEquals($reply->getAttribute('ATTENDEE'), 'mailto:test@example.org');
}
public function testForCopiedSequenceIdFromRequestToResponse()
$inv->setAttribute('SEQUENCE', 555);
$iTip = $this->_getItip($inv);
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('SEQUENCE'), 555);
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertEquals(1222419600, $reply->getAttribute('DTSTART'));
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertEquals(1222423200, $reply->getAttribute('DTEND'));
}
$inv->setAttribute('DURATION', 3600);
$iTip = $this->_getItip($inv);
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('DURATION'), 3600);
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('ORGANIZER'), 'orga@example.org');
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('LOCATION'), 'Somewhere');
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('DESCRIPTION'), 'You are invited');
}
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept()
+ new Horde_Itip_Response_Type_Accept($this->_getResource())
);
$this->assertSame($reply->getAttribute('UID'), '1');
}
{
$iTip = $this->_getItip();
$reply = $iTip->getIcalendarResponse(
- new Horde_Itip_Response_Type_Accept(), ''
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab()
);
$this->assertEquals($reply->getAttribute('METHOD'), 'REPLY');
}
- public function testIcalendarResponseAllowsSettingTheProductId()
+ public function testMessageResponseHasFromAddress()
{
+ $_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getIcalendarResponse(
- new Horde_Itip_Response_Type_Accept(), 'My product'
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+
+ $this->assertContains(
+ 'From: Mister Test <test@example.org>',
+ $this->_transport->sentMessages[0]['header_text']
);
- $this->assertEquals($reply->getAttribute('PRODID'), 'My product');
}
- public function testMessageResponseHasFromAddress()
+ public function testMessageResponseWithIdentityResourceHasFromAddress()
{
$_SERVER['SERVER_NAME'] = 'localhost';
- $iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(
- new Horde_Itip_Response_Type_Accept(), '', ''
+ $invitation = $this->_getInvitation();
+ $resource = new Horde_Itip_Resource_Identity(
+ new Horde_Itip_Stub_Identity(),
+ 'mailto:test@example.org',
+ 'test'
+ );
+ $iTip = Horde_Itip::factory(
+ $invitation,
+ $resource
+ );
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($resource),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+
+ $this->assertContains(
+ 'From: "Mr. Test" <test@example.org>',
+ $this->_transport->sentMessages[0]['header_text']
+ );
+ }
+
+ public function testMessageResponseWithDefaultIdentityResourceHasDefaultFromAddress()
+ {
+ $_SERVER['SERVER_NAME'] = 'localhost';
+ $invitation = $this->_getInvitation();
+ $resource = new Horde_Itip_Resource_Identity(
+ new Horde_Itip_Stub_Identity(),
+ 'mailto:default@example.org',
+ 'default'
+ );
+ $iTip = Horde_Itip::factory(
+ $invitation,
+ $resource
+ );
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($resource),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+
+ $this->assertContains(
+ 'From: default@example.org',
+ $this->_transport->sentMessages[0]['header_text']
);
-
- $this->assertContains('From: Mister Test <test@example.org>', $reply[0]->toString());
}
public function testMessageResponseHasToAddress()
{
$_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(
- new Horde_Itip_Response_Type_Accept(), '', ''
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
);
- $this->assertContains('To: orga@example.org', $reply[0]->toString());
+ $this->assertContains(
+ 'To: orga@example.org',
+ $this->_transport->sentMessages[0]['header_text']
+ );
}
public function testMessageAcceptResponseHasAcceptSubject()
{
$_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(new Horde_Itip_Response_Type_Accept(), '');
- $this->assertContains('Subject: Accepted: Test', $reply[0]->toString());
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Accepted: Test',
+ $this->_transport->sentMessages[0]['header_text']
+ );
}
public function testMessageDeclineResponseHasDeclineSubject()
{
$_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(new Horde_Itip_Response_Type_Decline(), '');
- $this->assertContains('Subject: Declined: Test', $reply[0]->toString());
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Decline($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Declined: Test',
+ $this->_transport->sentMessages[0]['header_text']
+ );
}
public function testMessageTentativeResponseHasTentativeSubject()
{
$_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(new Horde_Itip_Response_Type_Tentative(), '');
- $this->assertContains('Subject: Tentative: Test', $reply[0]->toString());
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Tentative($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Tentative: Test',
+ $this->_transport->sentMessages[0]['header_text']
+ );
}
public function testMessageResponseAllowsAddingCommentsToTheSubject()
{
$_SERVER['SERVER_NAME'] = 'localhost';
$iTip = $this->_getItip();
- $reply = $iTip->getMessageResponse(
- new Horde_Itip_Response_Type_Accept(), '', 'info'
+ $reply = $iTip->sendSinglepartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource(), 'info'),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Accepted [info]: Test',
+ $this->_transport->sentMessages[0]['header_text']
);
- $this->assertContains('Subject: Accepted [info]: Test', $reply[0]->toString());
}
public function testAttendeeHoldsInformationAboutMailAddress()
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept(), ''
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab()
);
- $this->assertEquals($reply->getAttribute('ATTENDEE'), 'MAILTO:test@example.org');
+ $this->assertEquals($reply->getAttribute('ATTENDEE'), 'mailto:test@example.org');
}
public function testAttendeeHoldsInformationAboutCommonNameAndStatus()
{
$iTip = $this->_getItip();
$reply = $iTip->getVeventResponse(
- new Horde_Itip_Response_Type_Accept(), ''
+ new Horde_Itip_Response_Type_Accept($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab()
);
$parameters = $reply->getAttribute('ATTENDEE', true);
$this->assertEquals(
);
}
+ public function testMultipartMessageResponseHoldsMultipleParts()
+ {
+ $_SERVER['SERVER_NAME'] = 'localhost';
+ $iTip = $this->_getItip();
+ $reply = $iTip->sendMultipartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource(), 'info'),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $mail = '';
+ $mail .= $this->_transport->sentMessages[0]['header_text'] . "\n\n";
+ $body = $this->_transport->sentMessages[0]['body'];
+ while (!feof($body)) {
+ $mail .= fread($body, 8192);
+ }
+ $part = Horde_Mime_Part::parseMessage($mail);
+ $this->assertEquals(2, count($part->getParts()));
+ }
+
+ public function testMultipartMessageDeclineResponseHasDeclineSubject()
+ {
+ $_SERVER['SERVER_NAME'] = 'localhost';
+ $iTip = $this->_getItip();
+ $reply = $iTip->sendMultipartResponse(
+ new Horde_Itip_Response_Type_Decline($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Declined: Test',
+ $this->_transport->sentMessages[0]['header_text']
+ );
+ }
+
+ public function testMultipartMessageTentativeResponseHasTentativeSubject()
+ {
+ $_SERVER['SERVER_NAME'] = 'localhost';
+ $iTip = $this->_getItip();
+ $reply = $iTip->sendMultipartResponse(
+ new Horde_Itip_Response_Type_Tentative($this->_getResource()),
+ new Horde_Itip_Response_Options_Kolab(),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Subject: Tentative: Test',
+ $this->_transport->sentMessages[0]['header_text']
+ );
+ }
+
+ public function testMultipartMessageWithHordeOptionsHasMessageId()
+ {
+ $_SERVER['REMOTE_ADDR'] = 'none';
+ $_SERVER['SERVER_NAME'] = 'localhost';
+ $iTip = $this->_getItip();
+ $reply = $iTip->sendMultipartResponse(
+ new Horde_Itip_Response_Type_Accept($this->_getResource(), 'info'),
+ new Horde_Itip_Response_Options_Horde('UTF-8', array()),
+ $this->_transport
+ );
+ $this->assertContains(
+ 'Message-ID:',
+ $this->_transport->sentMessages[0]['header_text']
+ );
+ }
private function _getItip($invitation = null)
{