Skip to content

Commit

Permalink
Update/simplify tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrubinsk committed Dec 5, 2014
1 parent 26a7447 commit c0b1471
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 84 deletions.
6 changes: 5 additions & 1 deletion framework/ActiveSync/package.xml
Expand Up @@ -10,7 +10,7 @@
<email>mrubinsk@horde.org</email>
<active>yes</active>
</lead>
<date>2014-12-04</date>
<date>2014-12-05</date>
<version>
<release>2.20.5</release>
<api>2.20.0</api>
Expand Down Expand Up @@ -227,6 +227,9 @@
<dir name="test">
<dir name="Horde">
<dir name="ActiveSync">
<dir name="Factory">
<file name="TestServer.php" role="test" />
</dir> <!-- /test/Horde/ActiveSync/Factory -->
<dir name="fixtures">
<file name="appointment.wbxml" role="test" />
<file name="default_policies.wbxml" role="test" />
Expand Down Expand Up @@ -555,6 +558,7 @@
<install as="Horde/ActiveSync/Rfc822Test.php" name="test/Horde/ActiveSync/Rfc822Test.php" />
<install as="Horde/ActiveSync/ServerTest.php" name="test/Horde/ActiveSync/ServerTest.php" />
<install as="Horde/ActiveSync/UtilsTest.php" name="test/Horde/ActiveSync/UtilsTest.php" />
<install as="Horde/ActiveSync/Factory/TestServer.php" name="test/Horde/ActiveSync/Factory/TestServer.php" />
<install as="Horde/ActiveSync/fixtures/appointment.wbxml" name="test/Horde/ActiveSync/fixtures/appointment.wbxml" />
<install as="Horde/ActiveSync/fixtures/default_policies.wbxml" name="test/Horde/ActiveSync/fixtures/default_policies.wbxml" />
<install as="Horde/ActiveSync/fixtures/default_policies.xml" name="test/Horde/ActiveSync/fixtures/default_policies.xml" />
Expand Down
60 changes: 21 additions & 39 deletions framework/ActiveSync/test/Horde/ActiveSync/AutodiscoverTest.php
Expand Up @@ -8,32 +8,15 @@
*/
class Horde_ActiveSync_AutoDiscoverTest extends Horde_Test_Case
{

protected static $_server;
protected static $_input;
protected static $_driver;
protected static $_request;

public function setup()
{
self::$_driver = $this->getMockSkipConstructor('Horde_ActiveSync_Driver_Base');
self::$_input = fopen('php://memory', 'wb+');
$decoder = new Horde_ActiveSync_Wbxml_Decoder(self::$_input);
$output = fopen('php://memory', 'wb+');
$encoder = new Horde_ActiveSync_Wbxml_Encoder($output);
$state = $this->getMockSkipConstructor('Horde_ActiveSync_State_Base');
self::$_request = $this->getMockSkipConstructor('Horde_Controller_Request_Http');
self::$_server = new Horde_ActiveSync(self::$_driver, $decoder, $encoder, $state, self::$_request);
}


/**
* Tests autodiscover functionality when passed a proper XML data structure
* containing an email address that needs to be mapped to a username.
*
*/
public function testAutodiscoverWithProperXML()
{
$factory = new Horde_ActiveSync_Factory_TestServer();

$request = <<<EOT
<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/mobilesync/requestschema/2006">
Expand All @@ -45,22 +28,22 @@ public function testAutodiscoverWithProperXML()
</Request>
</Autodiscover>
EOT;
fwrite(self::$_input, $request);
rewind(self::$_input);
fwrite($factory->input, $request);
rewind($factory->input);

// Mock the getUsernameFromEmail method to return 'mike' when 'mike@example.com'
// is passed.
self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('getUsernameFromEmail')
->will($this->returnValueMap(array(array('mike@example.com', 'mike'))));

// Mock authenticate to return true only if mike is passed as username.
self::$_driver->expects($this->any())
$factory->driver->expects($this->any())
->method('authenticate')
->will($this->returnValueMap(array(array('mike', '', null, true))));

// Setup is called once, and must return true.
self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('setup')
->will($this->returnValue(true));

Expand All @@ -78,11 +61,11 @@ public function testAutodiscoverWithProperXML()
'url' => 'https://example.com/Microsoft-Server-ActiveSync'
);

self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('autoDiscover')
->will($this->returnValueMap(array(array($mock_driver_parameters, $mock_driver_results))));

self::$_server->handleRequest('Autodiscover', 'testdevice');
$factory->server->handleRequest('Autodiscover', 'testdevice');

// Test the results
$expected = <<<EOT
Expand All @@ -106,9 +89,8 @@ public function testAutodiscoverWithProperXML()
</Response>
</Autodiscover>
EOT;
self::$_server->encoder->getStream()->rewind();
$this->assertEquals($expected, self::$_server->encoder->getStream()->getString());

$factory->server->encoder->getStream()->rewind();
$this->assertEquals($expected, $factory->server->encoder->getStream()->getString());
}

/**
Expand All @@ -120,25 +102,25 @@ public function testAutodiscoverWithMissingXML()
{
// Basic auth: mike:password
$auth = 'Basic bWlrZTpwYXNzd29yZA==';

self::$_request->expects($this->any())
$factory = new Horde_ActiveSync_Factory_TestServer();
$factory->request->expects($this->any())
->method('getServerVars')
->will($this->returnValue(array('HTTP_AUTHORIZATION' => $auth)));

// Mock the getUsernameFromEmail method to return 'mike' when 'mike'
// Mock the getUsernameFromEmail method to return 'mike' when 'mike'
// is passed.
self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('getUsernameFromEmail')
->will($this->returnValueMap(array(array('mike', 'mike'))));

// Mock authenticate to return true only if 'mike' is passed as username
// and 'password' is passed as the password.
self::$_driver->expects($this->any())
$factory->driver->expects($this->any())
->method('authenticate')
->will($this->returnValueMap(array(array('mike', 'password', null, true))));

// Setup is called once, and must return true.
self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('setup')
->will($this->returnValue(true));

Expand All @@ -156,11 +138,11 @@ public function testAutodiscoverWithMissingXML()
'url' => 'https://example.com/Microsoft-Server-ActiveSync'
);

self::$_driver->expects($this->once())
$factory->driver->expects($this->once())
->method('autoDiscover')
->will($this->returnValueMap(array(array($mock_driver_parameters, $mock_driver_results))));

self::$_server->handleRequest('Autodiscover', 'testdevice');
$factory->server->handleRequest('Autodiscover', 'testdevice');

// Test the results
$expected = <<<EOT
Expand All @@ -184,8 +166,8 @@ public function testAutodiscoverWithMissingXML()
</Response>
</Autodiscover>
EOT;
self::$_server->encoder->getStream()->rewind();
$this->assertEquals($expected, self::$_server->encoder->getStream()->getString());
$factory->server->encoder->getStream()->rewind();
$this->assertEquals($expected, $factory->server->encoder->getStream()->getString());
}

}
57 changes: 57 additions & 0 deletions framework/ActiveSync/test/Horde/ActiveSync/Factory/TestServer.php
@@ -0,0 +1,57 @@
<?php
/**
* Copyright 2014 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Horde
* @copyright 2011-2014 Horde LLC
* @license http://www.horde.org/licenses/gpl GPLv2
* NOTE: According to sec. 8 of the GENERAL PUBLIC LICENSE (GPL),
* Version 2, the distribution of the Horde_ActiveSync module in or
* to the United States of America is excluded from the scope of this
* license.
* @package Horde_ActiveSync
* @subpackage UnitTests
*/

/**
* Factory to provide various test servers.
*
* @author Michael J Rubinsky <mrubinsk@horde.org>
* @category Horde
* @copyright 2014 Horde LLC
* @ignore
* @license http://www.horde.org/licenses/gpl GPLv2
* NOTE: According to sec. 8 of the GENERAL PUBLIC LICENSE (GPL),
* Version 2, the distribution of the Horde_ActiveSync module in or
* to the United States of America is excluded from the scope of this
* license.
* @package Horde_ActiveSync
* @subpackage UnitTests
*/
class Horde_ActiveSync_Factory_TestServer extends Horde_Test_Case
{
public $server;
public $driver;
public $input;
public $output;
public $request;

public function __construct($params = array())
{
$this->driver = $this->getMockSkipConstructor('Horde_ActiveSync_Driver_Base');
$this->input = fopen('php://memory', 'wb+');
$decoder = new Horde_ActiveSync_Wbxml_Decoder($this->input);
$this->output = fopen('php://memory', 'wb+');
$encoder = new Horde_ActiveSync_Wbxml_Encoder($this->output);
$state = $this->getMockSkipConstructor('Horde_ActiveSync_State_Base');
$this->request = $this->getMockSkipConstructor('Horde_Controller_Request_Http');
$this->request->expects($this->any())
->method('getHeader')
->will($this->returnValue('14.1'));
$this->server = new Horde_ActiveSync($this->driver, $decoder, $encoder, $state, $this->request);
}

}
27 changes: 4 additions & 23 deletions framework/ActiveSync/test/Horde/ActiveSync/ImapAdapterTest.php
Expand Up @@ -8,36 +8,17 @@
*/
class Horde_ActiveSync_ImapAdapterTest extends Horde_Test_Case
{
protected static $_server;
protected static $_input;
protected static $_driver;
protected static $_request;

public function setup()
{
self::$_driver = $this->getMockSkipConstructor('Horde_ActiveSync_Driver_Base');
self::$_input = fopen('php://memory', 'wb+');
$decoder = new Horde_ActiveSync_Wbxml_Decoder(self::$_input);
$output = fopen('php://memory', 'wb+');
$encoder = new Horde_ActiveSync_Wbxml_Encoder($output);
$state = $this->getMockSkipConstructor('Horde_ActiveSync_State_Base');
self::$_request = $this->getMockSkipConstructor('Horde_Controller_Request_Http');
self::$_request->expects($this->any())
->method('getHeader')
->will($this->returnValue('14.1'));
self::$_server = new Horde_ActiveSync(self::$_driver, $decoder, $encoder, $state, self::$_request);
}

public function testBug13711()
{
$factory = new Horde_ActiveSync_Factory_TestServer();
$imap_client = $this->getMockSkipConstructor('Horde_Imap_Client_Socket');
$imap_client->expects($this->any())
->method('fetch')
->will($this->_getFixturesFor13711());

$factory = new Horde_ActiveSync_Stub_ImapFactory();
$factory->fixture = $imap_client;
$adapter = new Horde_ActiveSync_Imap_Adapter(array('factory' => $factory));
$imap_factory = new Horde_ActiveSync_Stub_ImapFactory();
$imap_factory->fixture = $imap_client;
$adapter = new Horde_ActiveSync_Imap_Adapter(array('factory' => $imap_factory));

$adapter->getMessages(
'INBOX',
Expand Down
31 changes: 10 additions & 21 deletions framework/ActiveSync/test/Horde/ActiveSync/ServerTest.php
Expand Up @@ -8,35 +8,24 @@
*/
class Horde_ActiveSync_ServerTest extends Horde_Test_Case
{
protected static $_server;
public function setup()
{
$driver = $this->getMockSkipConstructor('Horde_ActiveSync_Driver_Base');
$input = fopen('php://memory', 'wb+');
$decoder = new Horde_ActiveSync_Wbxml_Decoder($input);
$output = fopen('php://memory', 'wb+');
$encoder = new Horde_ActiveSync_Wbxml_Encoder($output);
$state = $this->getMockSkipConstructor('Horde_ActiveSync_State_Base');
$request = $this->getMockSkipConstructor('Horde_Controller_Request_Http');
self::$_server = new Horde_ActiveSync($driver, $decoder, $encoder, $state, $request);
}

public function testSupportedVersions()
{
$this->assertEquals('2.5,12.0,12.1,14.0,14.1', self::$_server->getSupportedVersions());
$factory = new Horde_ActiveSync_Factory_TestServer();

self::$_server->setSupportedVersion(Horde_ActiveSync::VERSION_TWELVEONE);
$this->assertEquals('2.5,12.0,12.1', self::$_server->getSupportedVersions());
$this->assertEquals('2.5,12.0,12.1,14.0,14.1', $factory->server->getSupportedVersions());
$factory->server->setSupportedVersion(Horde_ActiveSync::VERSION_TWELVEONE);
$this->assertEquals('2.5,12.0,12.1', $factory->server->getSupportedVersions());

self::$_server->setSupportedVersion(Horde_ActiveSync::VERSION_FOURTEEN);
$this->assertEquals('2.5,12.0,12.1,14.0', self::$_server->getSupportedVersions());
$factory->server->setSupportedVersion(Horde_ActiveSync::VERSION_FOURTEEN);
$this->assertEquals('2.5,12.0,12.1,14.0', $factory->server->getSupportedVersions());
}

public function testSupportedCommands()
{
$this->assertEquals('Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,Provision,ResolveRecipients,ValidateCert', self::$_server->getSupportedCommands());
self::$_server->setSupportedVersion(Horde_ActiveSync::VERSION_TWOFIVE);
$this->assertEquals('Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Ping', self::$_server->getSupportedCommands());
$factory = new Horde_ActiveSync_Factory_TestServer();
$this->assertEquals('Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,Provision,ResolveRecipients,ValidateCert', $factory->server->getSupportedCommands());
$factory->server->setSupportedVersion(Horde_ActiveSync::VERSION_TWOFIVE);
$this->assertEquals('Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Ping', $factory->server->getSupportedCommands());
}

}

0 comments on commit c0b1471

Please sign in to comment.