From c7bc48514df50d139287fe88ad43cbfaa69f50ce Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Tue, 17 Aug 2010 14:36:53 +0200
Subject: [PATCH] Complete unit testing for Horde_Itip.
---
framework/Itip/lib/Horde/Itip.php | 34 ++--
framework/Itip/lib/Horde/Itip/Response.php | 2 +-
framework/Itip/test/Horde/Itip/Autoload.php | 3 +
.../Itip/test/Horde/Itip/Integration/ItipTest.php | 226 +++++++++++++++++----
framework/Itip/test/Horde/Itip/Stub/Identity.php | 82 ++++++++
.../Horde/Itip/Unit/Response/Type/BaseTest.php | 49 +++++
6 files changed, 333 insertions(+), 63 deletions(-)
create mode 100644 framework/Itip/test/Horde/Itip/Stub/Identity.php
create mode 100644 framework/Itip/test/Horde/Itip/Unit/Response/Type/BaseTest.php
diff --git a/framework/Itip/lib/Horde/Itip.php b/framework/Itip/lib/Horde/Itip.php
index 79898a128..77e366fa7 100644
--- a/framework/Itip/lib/Horde/Itip.php
+++ b/framework/Itip/lib/Horde/Itip.php
@@ -46,16 +46,6 @@ class Horde_Itip
}
/**
- * Return the organizer mail address.
- *
- * @return string The mail address of the event organizer
- */
- public function getOrganizer()
- {
- return $this->_response->getRequest()->getOrganizer();
- }
-
- /**
* Return the response as an iCalendar vEvent object.
*
* @param Horde_Itip_Response_Type $type The response type.
@@ -89,21 +79,27 @@ class Horde_Itip
}
/**
- * Return the response as a MIME message.
+ * Send the response as a single part MIME message.
+ *
+ * @param Horde_Itip_Response_Type $type The response type.
+ * @param Horde_Itip_Response_Options $options The options for the response.
+ * @param Horde_Mail_Transport $transport The mail transport.
*
- * @param Horde_Itip_Response_Type $type The response type.
- * @param string $product_id The ID that should be set
- * as the iCalendar product
- * id.
* @return array A list of two object: The mime headers and the mime
* message.
*/
- public function getMessageResponse(
+ public function sendSinglepartResponse(
Horde_Itip_Response_Type $type,
- $product_id
+ Horde_Itip_Response_Options $options,
+ Horde_Mail_Transport $transport
) {
- return $this->_response->getMessage(
- $type, $product_id
+ list($headers, $body) = $this->_response->getMessage(
+ $type, $options
+ );
+ $body->send(
+ $this->_response->getRequest()->getOrganizer(),
+ $headers,
+ $transport
);
}
diff --git a/framework/Itip/lib/Horde/Itip/Response.php b/framework/Itip/lib/Horde/Itip/Response.php
index c17470779..940a3e134 100644
--- a/framework/Itip/lib/Horde/Itip/Response.php
+++ b/framework/Itip/lib/Horde/Itip/Response.php
@@ -157,7 +157,7 @@ class Horde_Itip_Response
$headers->addHeader('Date', date('r'));
$headers->addHeader('From', $from);
$headers->addHeader('To', $this->_request->getOrganizer());
- if ($reply_to != $from) {
+ if (!empty($reply_to) && $reply_to != $from) {
$headers->addHeader('Reply-to', $reply_to);
}
$headers->addHeader(
diff --git a/framework/Itip/test/Horde/Itip/Autoload.php b/framework/Itip/test/Horde/Itip/Autoload.php
index bd9840f5d..6115b9fff 100644
--- a/framework/Itip/test/Horde/Itip/Autoload.php
+++ b/framework/Itip/test/Horde/Itip/Autoload.php
@@ -27,3 +27,6 @@ if (!spl_autoload_functions()) {
/** Catch strict standards */
error_reporting(E_ALL | E_STRICT);
+
+/** Load dependencies from the test suite */
+require_once dirname(__FILE__) . '/Stub/Identity.php';
\ No newline at end of file
diff --git a/framework/Itip/test/Horde/Itip/Integration/ItipTest.php b/framework/Itip/test/Horde/Itip/Integration/ItipTest.php
index 2e36aa020..7f17f059c 100644
--- a/framework/Itip/test/Horde/Itip/Integration/ItipTest.php
+++ b/framework/Itip/test/Horde/Itip/Integration/ItipTest.php
@@ -36,22 +36,18 @@ require_once dirname(__FILE__) . '/../Autoload.php';
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()
@@ -60,7 +56,7 @@ extends PHPUnit_Framework_TestCase
$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);
}
@@ -69,7 +65,7 @@ extends PHPUnit_Framework_TestCase
{
$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'));
}
@@ -78,7 +74,7 @@ extends PHPUnit_Framework_TestCase
{
$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'));
}
@@ -96,7 +92,7 @@ extends PHPUnit_Framework_TestCase
$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);
}
@@ -105,7 +101,7 @@ extends PHPUnit_Framework_TestCase
{
$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');
}
@@ -114,7 +110,7 @@ extends PHPUnit_Framework_TestCase
{
$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');
}
@@ -123,7 +119,7 @@ extends PHPUnit_Framework_TestCase
{
$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');
}
@@ -132,7 +128,7 @@ extends PHPUnit_Framework_TestCase
{
$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');
}
@@ -141,90 +137,170 @@ extends PHPUnit_Framework_TestCase
{
$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