Browse Source

Rackspace Service

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24491 44c647ce-9c0f-0410-b52a-842ac1e357ba
ezimuel 14 years ago
parent
commit
2fa22039b6
100 changed files with 2598 additions and 0 deletions
  1. 36 0
      library/Zend/Service/Rackspace/Exception.php
  2. 36 0
      library/Zend/Service/Rackspace/Files/Exception.php
  3. 36 0
      library/Zend/Service/Rackspace/Servers/Exception.php
  4. 20 0
      tests/TestConfiguration.php.dist
  5. 268 0
      tests/Zend/Service/Rackspace/Files/OfflineTest.php
  6. 267 0
      tests/Zend/Service/Rackspace/Files/OnlineTest.php
  7. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testCopyObject.request
  8. 18 0
      tests/Zend/Service/Rackspace/Files/_files/testCopyObject.response
  9. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testCreateContainer.request
  10. 12 0
      tests/Zend/Service/Rackspace/Files/_files/testCreateContainer.response
  11. 8 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteContainer.request
  12. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteContainer.response
  13. 8 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteObject.request
  14. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteObject.response
  15. 8 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteObject2.request
  16. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testDeleteObject2.response
  17. 9 0
      tests/Zend/Service/Rackspace/Files/_files/testEnableCdnContainer.request
  18. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testEnableCdnContainer.response
  19. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCdnContainers.request
  20. 11 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCdnContainers.response
  21. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetContainer.request
  22. 11 0
      tests/Zend/Service/Rackspace/Files/_files/testGetContainer.response
  23. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetContainers.request
  24. 12 0
      tests/Zend/Service/Rackspace/Files/_files/testGetContainers.response
  25. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCountContainers.request
  26. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCountContainers.response
  27. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCountObjects.request
  28. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testGetCountObjects.response
  29. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetInfoAccount.request
  30. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testGetInfoAccount.response
  31. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetMetadataContainer.request
  32. 11 0
      tests/Zend/Service/Rackspace/Files/_files/testGetMetadataContainer.response
  33. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetMetadataObject.request
  34. 11 0
      tests/Zend/Service/Rackspace/Files/_files/testGetMetadataObject.response
  35. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetObject.request
  36. 13 0
      tests/Zend/Service/Rackspace/Files/_files/testGetObject.response
  37. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetObjects.request
  38. 13 0
      tests/Zend/Service/Rackspace/Files/_files/testGetObjects.response
  39. 7 0
      tests/Zend/Service/Rackspace/Files/_files/testGetSizeContainers.request
  40. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testGetSizeContainers.response
  41. 9 0
      tests/Zend/Service/Rackspace/Files/_files/testSetMetadataObject.request
  42. 12 0
      tests/Zend/Service/Rackspace/Files/_files/testSetMetadataObject.response
  43. 14 0
      tests/Zend/Service/Rackspace/Files/_files/testStoreObject.request
  44. 14 0
      tests/Zend/Service/Rackspace/Files/_files/testStoreObject.response
  45. 9 0
      tests/Zend/Service/Rackspace/Files/_files/testUpdateCdnContainer.request
  46. 10 0
      tests/Zend/Service/Rackspace/Files/_files/testUpdateCdnContainer.response
  47. 187 0
      tests/Zend/Service/Rackspace/OfflineTest.php
  48. 384 0
      tests/Zend/Service/Rackspace/Servers/OfflineTest.php
  49. 435 0
      tests/Zend/Service/Rackspace/Servers/OnlineTest.php
  50. 1 0
      tests/Zend/Service/Rackspace/Servers/_files/test.txt
  51. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testAuthentication.request
  52. 14 0
      tests/Zend/Service/Rackspace/Servers/_files/testAuthentication.response
  53. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeBackupSchedule.request
  54. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeBackupSchedule.response
  55. 10 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeServerName.request
  56. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeServerName.response
  57. 10 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeServerPassword.request
  58. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testChangeServerPassword.response
  59. 10 0
      tests/Zend/Service/Rackspace/Servers/_files/testConfirmResizeServer.request
  60. 12 0
      tests/Zend/Service/Rackspace/Servers/_files/testConfirmResizeServer.response
  61. 10 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateImage.request
  62. 14 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateImage.response
  63. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateServer.request
  64. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateServer.response
  65. 10 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateSharedIpGroup.request
  66. 14 0
      tests/Zend/Service/Rackspace/Servers/_files/testCreateSharedIpGroup.response
  67. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteImage.request
  68. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteImage.response
  69. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteServer.request
  70. 12 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteServer.response
  71. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteSharedIpGroup.request
  72. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testDeleteSharedIpGroup.response
  73. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testDisableBackupSchedule.request
  74. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testDisableBackupSchedule.response
  75. 8 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetBackupSchedule.request
  76. 11 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetBackupSchedule.response
  77. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetFlavor.request
  78. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetFlavor.response
  79. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetImage.request
  80. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetImage.response
  81. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetImageInfo.request
  82. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetImageInfo.response
  83. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServer.request
  84. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServer.response
  85. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerIp.request
  86. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerIp.response
  87. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerPrivateIp.request
  88. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerPrivateIp.response
  89. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerPublicIp.request
  90. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetServerPublicIp.response
  91. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetSharedIpGroup.request
  92. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testGetSharedIpGroup.response
  93. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testHardRebootServer.request
  94. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testHardRebootServer.response
  95. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testListFlavors.request
  96. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testListFlavors.response
  97. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testListImages.request
  98. 15 0
      tests/Zend/Service/Rackspace/Servers/_files/testListImages.response
  99. 7 0
      tests/Zend/Service/Rackspace/Servers/_files/testListServers.request
  100. 16 0
      tests/Zend/Service/Rackspace/Servers/_files/testListServers.response

+ 36 - 0
library/Zend/Service/Rackspace/Exception.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service
+ * @subpackage Rackspace
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Service_Exception
+ */
+require_once 'Zend/Service/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service
+ * @subpackage Rackspace
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Service_Rackspace_Exception extends Zend_Service_Exception
+{}

+ 36 - 0
library/Zend/Service/Rackspace/Files/Exception.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage Files
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Service_Rackspace_Exception
+ */
+require_once 'Zend/Service/Rackspace/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage Files
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Service_Rackspace_Files_Exception extends Zend_Service_Rackspace_Exception
+{}

+ 36 - 0
library/Zend/Service/Rackspace/Servers/Exception.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage Files
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Service_Rackspace_Exception
+ */
+require_once 'Zend/Service/Rackspace/Exception.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage Files
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Service_Rackspace_Servers_Exception extends Zend_Service_Rackspace_Exception
+{}

+ 20 - 0
tests/TestConfiguration.php.dist

@@ -604,6 +604,9 @@ define('TESTS_ZEND_SERIALIZER_ADAPTER_IGBINARY_ENABLED', false);
 define('TESTS_ZEND_SERVICE_AMAZON_ONLINE_ENABLED', false);
 define('TESTS_ZEND_SERVICE_AMAZON_ONLINE_ACCESSKEYID', 'Enter AWSAccessKeyId here');
 define('TESTS_ZEND_SERVICE_AMAZON_ONLINE_SECRETKEY', 'Enter AWSSecretKey here');
+define('TESTS_ZEND_SERVICE_AMAZON_EC2_IMAGE_ID', 'zftestamazonimageid');
+define('TESTS_ZEND_SERVICE_AMAZON_EC2_ZONE', 'us-east-1');
+define('TESTS_ZEND_SERVICE_AMAZON_EC2_SECURITY_GROUP', 'default');
 define('TESTS_ZEND_SERVICE_AMAZON_S3_BUCKET', 'zftestamazons3bucket');
 define('TESTS_ZEND_SERVICE_AMAZON_SQS_QUEUE', 'zftestamazonsqsqueuename');
 
@@ -644,6 +647,23 @@ define('TESTS_ZEND_SERVICE_LIVEDOCX_USERNAME', false);
 define('TESTS_ZEND_SERVICE_LIVEDOCX_PASSWORD', false);
 
 /**
+ * Zend_Service_Rackspace tests
+ */
+define ('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_ENABLED', false);
+define ('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_USER', 'Enter user here');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_KEY', 'Enter key here');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_REGION', 'USA');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME', 'zf-unit-test');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME','zf-object-test');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME', 'zf-unit-test');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGEID', '49');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NEW_IMAGEID', '49');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_FLAVORID', '1');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGE_NAME', 'ZFunitTestImage');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_SERVER_SHARED_IP_GROUP_NAME', 'ZFgroupIP');
+define ('TESTS_ZEND_SERVICE_RACKSPACE_TIMEOUT', 60);
+
+/**
  * Zend_Service_Nirvanix online tests 
  */
 define('TESTS_ZEND_SERVICE_NIRVANIX_ONLINE_ENABLED', false);

+ 268 - 0
tests/Zend/Service/Rackspace/Files/OfflineTest.php

@@ -0,0 +1,268 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend\Service\Rackspace
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Files.php';
+require_once 'Zend/Http/Client/Adapter/Test.php';
+
+/**
+ * Test helper
+ */
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Files
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service_Rackspace_Files
+ */
+class Zend_Service_Rackspace_Files_OfflineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Reference to RackspaceFiles
+     *
+     * @var Zend_Service_Rackspace_Files
+     */
+    protected $rackspace;
+    /**
+     * HTTP client adapter for testing
+     *
+     * @var Zend_Http_Client_Adapter_Test
+     */
+    protected $httpClientAdapterTest;
+    /**
+     * Metadata for container/object test
+     * 
+     * @var array 
+     */
+    protected $metadata;
+    /**
+     * Another metadata for container/object test
+     * 
+     * @var array 
+     */
+    protected $metadata2;  
+    /**
+     * Set up the test case
+     *
+     * @return void
+     */
+    public function setUp()
+    {  
+        $this->rackspace = new Zend_Service_Rackspace_Files('foo','bar');
+        
+        $this->httpClientAdapterTest = new Zend_Http_Client_Adapter_Test();
+        
+        $this->rackspace->getHttpClient()->setAdapter($this->httpClientAdapterTest);
+        
+        // authentication (from a file)
+        $this->httpClientAdapterTest->setResponse(self::loadResponse('../../_files/testAuthenticate'));
+        $this->assertTrue($this->rackspace->authenticate(),'Authentication failed'); 
+        
+        $this->metadata =  array (
+            'foo'  => 'bar',
+            'foo2' => 'bar2'
+        );
+        
+        $this->metadata2 = array (
+            'hello' => 'world'
+        );
+        
+        // load the HTTP response (from a file)
+        $this->httpClientAdapterTest->setResponse($this->loadResponse($this->getName()));    
+    }
+    
+    /**
+     * Utility method for returning a string HTTP response, which is loaded from a file
+     *
+     * @param  string $name
+     * @return string
+     */
+    protected function loadResponse($name)
+    {
+        return file_get_contents(__DIR__ . '/_files/' . $name . '.response');
+    }
+    
+    public function testCreateContainer()
+    {
+        $container= $this->rackspace->createContainer('zf-unit-test',$this->metadata);
+        $this->assertTrue($container!==false);
+        $this->assertEquals($container->getName(),'zf-unit-test');
+    }
+
+    public function testGetCountContainers()
+    {
+        $num= $this->rackspace->getCountContainers();
+        $this->assertTrue($num>0);
+    }
+    
+    public function testGetContainer()
+    {
+        $container= $this->rackspace->getContainer('zf-unit-test');
+        $this->assertTrue($container!==false);
+        $this->assertEquals($container->getName(),'zf-unit-test');
+    }
+    
+    public function testGetContainers()
+    {
+        $containers= $this->rackspace->getContainers();
+        $this->assertTrue($containers!==false);
+        $found=false;
+        foreach ($containers as $container) {
+            if ($container->getName()=='zf-unit-test') {
+                $found=true;
+                break;
+            }
+        } 
+        $this->assertTrue($found);
+    }
+    
+    public function testGetMetadataContainer()
+    {
+        $data= $this->rackspace->getMetadataContainer('zf-unit-test');
+        $this->assertTrue($data!==false);
+        $this->assertEquals($data['name'],'zf-unit-test');
+        $this->assertEquals($data['metadata'],$this->metadata);
+    }
+    
+    public function testGetInfoAccount()
+    {
+        $data= $this->rackspace->getInfoAccount();
+        $this->assertTrue($data!==false);
+        $this->assertTrue($data['tot_containers']>0);
+    }
+    
+    public function testStoreObject()
+    {
+        $content= 'This is a test!';
+        $result= $this->rackspace->storeObject('zf-unit-test', 
+                                               'zf-object-test',
+                                               $content,
+                                               $this->metadata);
+        $this->assertTrue($result);
+    }
+    
+    public function testGetObject()
+    {
+        $object= $this->rackspace->getObject('zf-unit-test', 
+                                             'zf-object-test');
+        $this->assertTrue($object!==false);
+        $this->assertEquals($object->getName(),'zf-object-test');
+        $this->assertEquals($object->getSize(),15);
+        $this->assertEquals($object->getMetadata(),$this->metadata);
+    }
+
+    public function testCopyObject()
+    {
+        $result= $this->rackspace->copyObject('zf-unit-test',
+                                              'zf-object-test',
+                                              'zf-unit-test',
+                                              'zf-object-test'.'-copy');
+        $this->assertTrue($result);
+    }
+
+    public function testGetObjects()
+    {
+        $objects= $this->rackspace->getObjects('zf-unit-test');
+        $this->assertTrue($objects!==false);
+        
+        $this->assertEquals($objects[0]->getName(),'zf-object-test');
+        $this->assertEquals($objects[1]->getName(),'zf-object-test'.'-copy');
+    }
+    
+    public function testGetSizeContainers()
+    {
+        $size= $this->rackspace->getSizeContainers();
+        $this->assertTrue($size!==false);
+        $this->assertTrue(is_numeric($size));
+    }
+    
+    public function testGetCountObjects()
+    {
+        $count= $this->rackspace->getCountObjects();
+        $this->assertTrue($count!==false);
+        $this->assertTrue(is_numeric($count));
+    }
+    
+    public function testSetMetadataObject()
+    {
+        $result= $this->rackspace->setMetadataObject('zf-unit-test',
+                                                     'zf-object-test',
+                                                     $this->metadata2);
+        $this->assertTrue($result);
+    }
+    
+    public function testGetMetadataObject()
+    {
+        $data= $this->rackspace->getMetadataObject('zf-unit-test',
+                                                   'zf-object-test');
+        $this->assertTrue($data!==false);
+        $this->assertEquals($data['metadata'],$this->metadata2);
+    }
+    
+    public function testEnableCdnContainer()
+    {
+        $data= $this->rackspace->enableCdnContainer('zf-unit-test');
+        $this->assertTrue($data!==false);
+        $this->assertTrue(is_array($data));
+        $this->assertTrue(!empty($data['cdn_uri']));
+        $this->assertTrue(!empty($data['cdn_uri_ssl']));
+    }
+    
+    public function testGetCdnContainers()
+    {
+        $containers= $this->rackspace->getCdnContainers();
+        $this->assertTrue($containers!==false);
+        $found= false;
+        foreach ($containers as $container) {
+            if ($container->getName()=='zf-unit-test') {
+                $found= true;
+                break;
+            }
+        }
+        $this->assertTrue($found);
+    }
+    
+    public function testUpdateCdnContainer()
+    {
+        $data= $this->rackspace->updateCdnContainer('zf-unit-test',null,false);
+        $this->assertTrue($data!==false);
+    }
+
+    
+    public function testDeleteObject()
+    {
+        $this->assertTrue($this->rackspace->deleteObject('zf-unit-test',
+                                                         'zf-object-test'));
+    }
+    
+    public function testDeleteObject2()
+    {
+        $this->assertTrue($this->rackspace->deleteObject('zf-unit-test',
+                                                         'zf-object-test'.'-copy'));
+    }
+    
+    public function testDeleteContainer()
+    {
+        $this->assertTrue($this->rackspace->deleteContainer('zf-unit-test'));
+    }
+  
+}

+ 267 - 0
tests/Zend/Service/Rackspace/Files/OnlineTest.php

@@ -0,0 +1,267 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Files.php';
+require_once 'Zend/Http/Client/Adapter/Socket.php';
+
+
+/**
+ * Test helper
+ */
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Files
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service_Rackspace_Files
+ */
+class Zend_Service_Rackspace_Files_OnlineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Reference to Rackspace Files object
+     *
+     * @var Zend_Service_Rackspace_Files
+     */
+    protected static $rackspace;
+    /**
+     * Socket based HTTP client adapter
+     *
+     * @var Zend_Http_Client_Adapter_Socket
+     */
+    protected static $httpClientAdapterSocket;
+    /**
+     * Metadata for container/object test
+     * 
+     * @var array 
+     */
+    protected static $metadata;
+    /**
+     * Another metadata for container/object test
+     * 
+     * @var array 
+     */
+    protected static $metadata2;
+    /**
+     * SetUpBerofeClass
+     */
+    public static function setUpBeforeClass()
+    {
+        if (!constant('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_ENABLED')) {
+            self::markTestSkipped('Zend_Service_Rackspace_Files_OnlineTest tests are not enabled');
+        }
+        if(!defined('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_USER') || !defined('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_KEY')) {
+            self::markTestSkipped('Constants User and Key have to be set.');
+        }
+
+        self::$rackspace = new Zend_Service_Rackspace_Files(TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_USER,
+                                       TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_KEY);
+
+        self::$httpClientAdapterSocket = new Zend_Http_Client_Adapter_Socket();
+
+        self::$rackspace->getHttpClient()
+                        ->setAdapter(self::$httpClientAdapterSocket);
+        
+        self::$metadata =  array (
+            'foo'  => 'bar',
+            'foo2' => 'bar2'
+        );
+        
+        self::$metadata2 = array (
+            'hello' => 'world'
+        );
+    }
+    /**
+     * Set up the test case
+     *
+     * @return void
+     */
+    public function setUp()
+    {
+        // terms of use compliance: safe delay between each test
+        sleep(1);
+    }
+    
+    public function testCreateContainer()
+    {
+        $container= self::$rackspace->createContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,self::$metadata);
+        $this->assertTrue($container!==false);
+        $this->assertEquals($container->getName(),TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+    }
+
+    public function testGetCountContainers()
+    {
+        $num= self::$rackspace->getCountContainers();
+        $this->assertTrue($num>0);
+    }
+    
+    public function testGetContainer()
+    {
+        $container= self::$rackspace->getContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+        $this->assertTrue($container!==false);
+        $this->assertEquals($container->getName(),TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+    }
+    
+    public function testGetContainers()
+    {
+        $containers= self::$rackspace->getContainers();
+        $this->assertTrue($containers!==false);
+        $found=false;
+        foreach ($containers as $container) {
+            if ($container->getName()==TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME) {
+                $found=true;
+                break;
+            }
+        } 
+        $this->assertTrue($found);
+    }
+    
+    public function testGetMetadataContainer()
+    {
+        $data= self::$rackspace->getMetadataContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+        $this->assertTrue($data!==false);
+        $this->assertEquals($data['name'],TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+        $this->assertEquals($data['metadata'],self::$metadata);
+        
+    }
+    
+    public function testGetInfoAccount()
+    {
+        $data= self::$rackspace->getInfoAccount();
+        $this->assertTrue($data!==false);
+        $this->assertTrue($data['tot_containers']>0);
+    }
+    
+    public function testStoreObject()
+    {
+        $content= 'This is a test!';
+        $result= self::$rackspace->storeObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME, 
+                                               TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME,
+                                               $content,
+                                               self::$metadata);
+        $this->assertTrue($result);
+    }
+    
+    public function testGetObject()
+    {
+        $object= self::$rackspace->getObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME, 
+                                             TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME);
+        $this->assertTrue($object!==false);
+        $this->assertEquals($object->getName(),TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME);
+    }
+
+    public function testCopyObject()
+    {
+        $result= self::$rackspace->copyObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                              TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME,
+                                              TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                              TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME.'-copy');
+        $this->assertTrue($result);
+    }
+
+    public function testGetObjects()
+    {
+        $objects= self::$rackspace->getObjects(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+        $this->assertTrue($objects!==false);
+        
+        $this->assertEquals($objects[0]->getName(),TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME);
+        $this->assertEquals($objects[1]->getName(),TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME.'-copy');
+    }
+    
+    public function testGetSizeContainers()
+    {
+        $size= self::$rackspace->getSizeContainers();
+        $this->assertTrue($size!==false);
+        $this->assertTrue(is_numeric($size));
+    }
+    
+    public function testGetCountObjects()
+    {
+        $count= self::$rackspace->getCountObjects();
+        $this->assertTrue($count!==false);
+        $this->assertTrue(is_numeric($count));
+    }
+    
+    public function testSetMetadataObject()
+    {
+        $result= self::$rackspace->setMetadataObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                                     TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME,
+                                                     self::$metadata2);
+        $this->assertTrue($result);
+    }
+    
+    public function testGetMetadataObject()
+    {
+        $data= self::$rackspace->getMetadataObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                                   TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME);
+        $this->assertTrue($data!==false);
+        $this->assertEquals($data['metadata'],self::$metadata2);
+    }
+    
+    public function testEnableCdnContainer()
+    {
+        $data= self::$rackspace->enableCdnContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME);
+        $this->assertTrue($data!==false);
+        $this->assertTrue(is_array($data));
+        $this->assertTrue(!empty($data['cdn_uri']));
+        $this->assertTrue(!empty($data['cdn_uri_ssl']));
+    }
+    
+    public function testGetCdnContainers()
+    {
+        $containers= self::$rackspace->getCdnContainers();
+        $this->assertTrue($containers!==false);
+        $found= false;
+        foreach ($containers as $container) {
+            if ($container->getName()==TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME) {
+                $found= true;
+                break;
+            }
+        }
+        $this->assertTrue($found);
+    }
+    
+    public function testUpdateCdnContainer()
+    {
+        $data= self::$rackspace->updateCdnContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,null,false);
+        $this->assertTrue($data!==false);
+    }
+
+    
+    public function testDeleteObject()
+    {
+        $this->assertTrue(self::$rackspace->deleteObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                                         TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME));
+    }
+    
+    public function testDeleteObject2()
+    {
+        $this->assertTrue(self::$rackspace->deleteObject(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME,
+                                                         TESTS_ZEND_SERVICE_RACKSPACE_OBJECT_NAME.'-copy'));
+    }
+    
+    public function testDeleteContainer()
+    {
+        $this->assertTrue(self::$rackspace->deleteContainer(TESTS_ZEND_SERVICE_RACKSPACE_CONTAINER_NAME));
+    }
+  
+}

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testCopyObject.request

@@ -0,0 +1,10 @@
+PUT /v1/test/zf-unit-test/zf-object-test-copy?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Copy-From: /zf-unit-test/zf-object-test
+Content-length: 0
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 18 - 0
tests/Zend/Service/Rackspace/Files/_files/testCopyObject.response

@@ -0,0 +1,18 @@
+HTTP/1.1 201 Created
+X-Copied-From-Last-Modified: Fri, 23 Sep 2011 10:31:33 GMT
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:37 GMT
+Etag: 702edca0b2181c15d457eacac39de39b
+X-Trans-Id: txd96aa5fe584e4217bfe85216e62727c3
+Connection: close
+X-Copied-From: zf-unit-test/zf-object-test
+Last-Modified: Fri, 23 Sep 2011 10:31:37 GMT
+X-Object-Meta-Foo: bar
+Content-Length: 18
+X-Object-Meta-Foo2: bar2
+
+201 Created
+
+
+
+   

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testCreateContainer.request

@@ -0,0 +1,10 @@
+PUT /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Container-Meta-foo: bar
+X-Container-Meta-foo2: bar2
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 12 - 0
tests/Zend/Service/Rackspace/Files/_files/testCreateContainer.response

@@ -0,0 +1,12 @@
+HTTP/1.1 201 Created
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:17 GMT
+X-Trans-Id: txf183928a548d4a769b0b39e84b4e83a9
+Connection: close
+Content-Length: 18
+
+201 Created
+
+
+
+   

+ 8 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteContainer.request

@@ -0,0 +1,8 @@
+DELETE /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteContainer.response

@@ -0,0 +1,7 @@
+HTTP/1.1 204 No Content
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:58 GMT
+X-Trans-Id: tx7393313497b849f7b492a7fa42d8d6df
+Connection: close
+Content-Length: 0
+

+ 8 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteObject.request

@@ -0,0 +1,8 @@
+DELETE /v1/test/zf-unit-test/zf-object-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteObject.response

@@ -0,0 +1,7 @@
+HTTP/1.1 204 No Content
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:54 GMT
+X-Trans-Id: tx503537124a194a3a8fa905955f62986e
+Connection: close
+Content-Length: 0
+

+ 8 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteObject2.request

@@ -0,0 +1,8 @@
+DELETE /v1/test/zf-unit-test/zf-object-test-copy?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testDeleteObject2.response

@@ -0,0 +1,7 @@
+HTTP/1.1 204 No Content
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:56 GMT
+X-Trans-Id: tx711cfcc7a0ec41409a9ca80d6bf368dd
+Connection: close
+Content-Length: 0
+

+ 9 - 0
tests/Zend/Service/Rackspace/Files/_files/testEnableCdnContainer.request

@@ -0,0 +1,9 @@
+PUT /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: cdn2.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-TTL: 900
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testEnableCdnContainer.response

@@ -0,0 +1,10 @@
+HTTP/1.1 202 Accepted
+Date: Fri, 23 Sep 2011 10:31:49 GMT
+Server: Apache
+X-CDN-URI: http://c754396.r96.cf2.rackcdn.com
+X-CDN-SSL-URI: https://c754396.ssl.cf2.rackcdn.com
+X-CDN-STREAMING-URI: http://c754396.r96.stream.cf2.rackcdn.com
+Content-Length: 0
+Connection: close
+Content-Type: text/plain; charset=UTF-8
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCdnContainers.request

@@ -0,0 +1,7 @@
+GET /v1/test?enabled_only=1&format=json HTTP/1.1
+Host: cdn2.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 11 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCdnContainers.response

@@ -0,0 +1,11 @@
+HTTP/1.1 200 OK
+Date: Fri, 23 Sep 2011 10:31:50 GMT
+Server: Apache
+Connection: close
+Transfer-Encoding: chunked
+Content-Type: application/json
+
+1f0
+[{"cdn_streaming_uri": "http://c555003.r3.stream.cf2.rackcdn.com", "cdn_uri": "http://c555003.r3.cf2.rackcdn.com", "cdn_ssl_uri": "https://c555003.ssl.cf2.rackcdn.com", "cdn_enabled": true, "ttl": 86400, "log_retention": true, "name": "test"}, {"cdn_streaming_uri": "http://c754396.r96.stream.cf2.rackcdn.com", "cdn_uri": "http://c754396.r96.cf2.rackcdn.com", "cdn_ssl_uri": "https://c754396.ssl.cf2.rackcdn.com", "cdn_enabled": false, "ttl": 900, "log_retention": false, "name": "zf-unit-test"}]
+0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetContainer.request

@@ -0,0 +1,7 @@
+HEAD /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 11 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetContainer.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:21 GMT
+X-Container-Meta-Foo: bar
+X-Container-Meta-Foo2: bar2
+X-Container-Bytes-Used: 0
+X-Container-Object-Count: 0
+Accept-Ranges: bytes
+X-Trans-Id: tx7e0f8074f11540cc90ef594f60faa6c5
+Connection: close
+Content-Length: 0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetContainers.request

@@ -0,0 +1,7 @@
+GET /v1/test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 12 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetContainers.response

@@ -0,0 +1,12 @@
+HTTP/1.1 200 OK
+Content-Type: application/json; charset=utf-8
+Date: Fri, 23 Sep 2011 10:31:22 GMT
+X-Account-Container-Count: 1
+Accept-Ranges: bytes
+X-Trans-Id: tx81b3a5f7d64946df8e58b46dded3b3a2
+Connection: close
+X-Account-Object-Count: 0
+X-Account-Bytes-Used: 0
+Content-Length: 45
+
+[{"name":"zf-unit-test","count":0,"bytes":0}]

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCountContainers.request

@@ -0,0 +1,7 @@
+HEAD /v1/test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCountContainers.response

@@ -0,0 +1,10 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:19 GMT
+X-Account-Container-Count: 1
+Accept-Ranges: bytes
+X-Trans-Id: tx705290d7f73f4aaa821eba6b71251e43
+Connection: close
+X-Account-Object-Count: 0
+X-Account-Bytes-Used: 0
+Content-Length: 0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCountObjects.request

@@ -0,0 +1,7 @@
+HEAD /v1/test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetCountObjects.response

@@ -0,0 +1,10 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:43 GMT
+X-Account-Container-Count: 1
+Accept-Ranges: bytes
+X-Trans-Id: tx183c441329c24cad935a5e1c856d8992
+Connection: close
+X-Account-Object-Count: 0
+X-Account-Bytes-Used: 0
+Content-Length: 0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetInfoAccount.request

@@ -0,0 +1,7 @@
+HEAD /v1/test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetInfoAccount.response

@@ -0,0 +1,10 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:26 GMT
+X-Account-Container-Count: 1
+Accept-Ranges: bytes
+X-Trans-Id: tx1482c048607b495da5472ce2c8ea0d7f
+Connection: close
+X-Account-Object-Count: 0
+X-Account-Bytes-Used: 0
+Content-Length: 0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetMetadataContainer.request

@@ -0,0 +1,7 @@
+HEAD /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 11 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetMetadataContainer.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:24 GMT
+X-Container-Meta-Foo: bar
+X-Container-Meta-Foo2: bar2
+X-Container-Bytes-Used: 0
+X-Container-Object-Count: 0
+Accept-Ranges: bytes
+X-Trans-Id: tx33698bd0f7774a6184882ae37c3d9a36
+Connection: close
+Content-Length: 0
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetMetadataObject.request

@@ -0,0 +1,7 @@
+HEAD /v1/test/zf-unit-test/zf-object-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 11 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetMetadataObject.response

@@ -0,0 +1,11 @@
+HTTP/1.1 200 OK
+Content-Type: application/x-www-form-urlencoded
+Date: Fri, 23 Sep 2011 10:31:47 GMT
+Accept-Ranges: bytes
+Etag: 702edca0b2181c15d457eacac39de39b
+X-Trans-Id: tx2f237ee9337d4ad1b2919ac2cea27f02
+Connection: close
+Last-Modified: Fri, 23 Sep 2011 10:31:45 GMT
+X-Object-Meta-Hello: world
+Content-Length: 15
+

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetObject.request

@@ -0,0 +1,7 @@
+GET /v1/test/zf-unit-test/zf-object-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 13 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetObject.response

@@ -0,0 +1,13 @@
+HTTP/1.1 200 OK
+Content-Type: application/json
+Date: Fri, 23 Sep 2011 10:31:35 GMT
+Accept-Ranges: bytes
+Etag: 702edca0b2181c15d457eacac39de39b
+X-Trans-Id: txf1550b683c804e49a65927b876b50d89
+Connection: close
+Last-Modified: Fri, 23 Sep 2011 10:31:33 GMT
+X-Object-Meta-Foo: bar
+X-Object-Meta-Foo2: bar2
+Content-Length: 15
+
+This is a test!

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetObjects.request

@@ -0,0 +1,7 @@
+GET /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 13 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetObjects.response

@@ -0,0 +1,13 @@
+HTTP/1.1 200 OK
+Content-Type: application/json; charset=utf-8
+Date: Fri, 23 Sep 2011 10:31:39 GMT
+X-Container-Meta-Foo: bar
+X-Container-Meta-Foo2: bar2
+X-Container-Bytes-Used: 30
+X-Container-Object-Count: 2
+Accept-Ranges: bytes
+X-Trans-Id: tx990e3e7b061547e893430be682ad1e14
+Connection: close
+Content-Length: 341
+
+[{"name":"zf-object-test","hash":"702edca0b2181c15d457eacac39de39b","bytes":15,"content_type":"application/json", "last_modified":"2011-09-23T10:31:33.748950"},{"name":"zf-object-test-copy","hash":"702edca0b2181c15d457eacac39de39b","bytes":15,"content_type":"application/x-www-form-urlencoded", "last_modified":"2011-09-23T10:31:37.545410"}]

+ 7 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetSizeContainers.request

@@ -0,0 +1,7 @@
+HEAD /v1/test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testGetSizeContainers.response

@@ -0,0 +1,10 @@
+HTTP/1.1 204 No Content
+Date: Fri, 23 Sep 2011 10:31:41 GMT
+X-Account-Container-Count: 1
+Accept-Ranges: bytes
+X-Trans-Id: txcafe1fcb5bdd4d9e97248c98f3447412
+Connection: close
+X-Account-Object-Count: 0
+X-Account-Bytes-Used: 0
+Content-Length: 0
+

+ 9 - 0
tests/Zend/Service/Rackspace/Files/_files/testSetMetadataObject.request

@@ -0,0 +1,9 @@
+POST /v1/test/zf-unit-test/zf-object-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Object-Meta-hello: world
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 12 - 0
tests/Zend/Service/Rackspace/Files/_files/testSetMetadataObject.response

@@ -0,0 +1,12 @@
+HTTP/1.1 202 Accepted
+Content-Type: text/plain; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:45 GMT
+X-Trans-Id: tx769b8c0b7ddc4b82a80ff503a4e2eff9
+Connection: close
+Content-Length: 58
+
+202 Accepted
+
+The request is accepted for processing.
+
+   

+ 14 - 0
tests/Zend/Service/Rackspace/Files/_files/testStoreObject.request

@@ -0,0 +1,14 @@
+PUT /v1/test/zf-unit-test/zf-object-test?format=json HTTP/1.1
+Host: storage101.ord1.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 15
+X-Object-Meta-foo: bar
+X-Object-Meta-foo2: bar2
+Etag: 702edca0b2181c15d457eacac39de39b
+Content-length: 15
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+
+This is a test!

+ 14 - 0
tests/Zend/Service/Rackspace/Files/_files/testStoreObject.response

@@ -0,0 +1,14 @@
+HTTP/1.1 201 Created
+Content-Type: text/html; charset=UTF-8
+Date: Fri, 23 Sep 2011 10:31:33 GMT
+Etag: 702edca0b2181c15d457eacac39de39b
+X-Trans-Id: txbb6064c15cc14cc187602e6053086c40
+Connection: close
+Last-Modified: Fri, 23 Sep 2011 10:31:33 GMT
+Content-Length: 18
+
+201 Created
+
+
+
+   

+ 9 - 0
tests/Zend/Service/Rackspace/Files/_files/testUpdateCdnContainer.request

@@ -0,0 +1,9 @@
+POST /v1/test/zf-unit-test?format=json HTTP/1.1
+Host: cdn2.clouddrive.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-CDN-Enabled: false
+X-Auth-Token: 0f0223cd-f157-4d04-bb2d-ccda1a5643af
+

+ 10 - 0
tests/Zend/Service/Rackspace/Files/_files/testUpdateCdnContainer.response

@@ -0,0 +1,10 @@
+HTTP/1.1 202 Accepted
+Date: Fri, 23 Sep 2011 10:31:52 GMT
+Server: Apache
+X-CDN-URI: http://c754396.r96.cf2.rackcdn.com
+X-CDN-SSL-URI: https://c754396.ssl.cf2.rackcdn.com
+X-CDN-STREAMING-URI: http://c754396.r96.stream.cf2.rackcdn.com
+Content-Length: 0
+Connection: close
+Content-Type: text/plain; charset=UTF-8
+

+ 187 - 0
tests/Zend/Service/Rackspace/OfflineTest.php

@@ -0,0 +1,187 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Files.php';
+require_once 'Zend/Http/Client/Adapter/Test.php';
+
+
+/**
+ * Test helper
+ */
+
+/**
+ * @category   Zend
+ * @package    Zend\Service\Rackspace\Files
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend\Service
+ * @group      Zend\Service\Rackspace
+ * @group      Zend\Service\Rackspace\Files
+ */
+ class Zend_Service_Rackspace_OfflineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Reference to RackspaceFiles
+     *
+     * @var Zend_Service_Rackspace_Files
+     */
+    protected $_files;
+    /**
+     * HTTP client adapter for testing
+     *
+     * @var Zend_Http_Client_Adapter_Test
+     */
+    protected $_httpClientAdapterTest;
+    /**
+     * Path to test data files
+     *
+     * @var string
+     */
+    protected $_filesPath;
+    /**
+     * Sets up this test case
+     *
+     * @return void
+     */
+    public function setUp()
+    {
+        $this->_files = new Zend_Service_Rackspace_Files('foo','bar');
+        $this->_filesPath   = dirname(__FILE__) . '/_files';
+        $this->_httpClientAdapterTest = new Zend_Http_Client_Adapter_Test();
+    }
+    /**
+     * Utility method for returning a string HTTP response, which is loaded from a file
+     *
+     * @param  string $name
+     * @return string
+     */
+    protected function _loadResponse($name)
+    {
+        return file_get_contents("$this->_filesPath/$name.response");
+    }
+    /**
+     * Ensures that __construct() throws an exception when given an empty key attribute
+     *
+     * @return void
+     */
+    public function testConstructExceptionMissingUserAttribute()
+    {
+        $this->setExpectedException(
+            'Zend_Service_Rackspace_Exception',
+            'The user cannot be empty'
+        );
+        $file= new Zend_Service_Rackspace_Files(null,'bar');
+    }
+    /**
+     * Ensures that __construct() throws an exception when given an empty secret attribute
+     *
+     * @return void
+     */
+    public function testConstructExceptionMissingKeyAttribute()
+    {
+        $this->setExpectedException(
+            'Zend_Service_Rackspace_Exception',
+            'The key cannot be empty'
+        );
+        $file= new Zend_Service_Rackspace_Files('foo',null);
+    }
+    /**
+     * Test the default authentication URL
+     *
+     * @return void
+     */
+    public function testDefaultAuthUrl()
+    {
+        $this->assertEquals($this->_files->getAuthUrl(),Zend_Service_Rackspace_Files::US_AUTH_URL,'The default Authentication URL is changed');
+    }
+    /**
+     * Test the set of the key
+     * 
+     * @return void
+     */
+    public function testSetKey()
+    {
+        $key= '1234567890';
+        $this->_files->setKey($key);
+        $this->assertEquals($this->_files->getKey(),$key);
+    }
+    /**
+     * Test the set of the user
+     *
+     * @return void
+     */
+    public function testSetUser()
+    {
+        $user= 'test';
+        $this->_files->setUser($user);
+        $this->assertEquals($this->_files->getUser(),$user);
+    }
+    /**
+     * Test the set of an invalid authentication URL
+     *
+     * @return void
+     */
+    public function testSetInvalidAuthUrl()
+    {
+        $this->setExpectedException(
+            'Zend_Service_Rackspace_Exception',
+            'The authentication URL is not valid'
+        );
+        $this->_files->setAuthUrl('http://test');
+    }
+    /**
+     * Check the authentication and the results (token, storage_url, cdn_url)
+     *
+     * @return void
+     */
+    public function testAuthenticate()
+    {
+        $this->_files->getHttpClient()
+                    ->setAdapter($this->_httpClientAdapterTest);
+
+        $this->_httpClientAdapterTest->setResponse($this->_loadResponse(__FUNCTION__));
+
+        $this->assertTrue($this->_files->authenticate(),'Authentication failed');
+        $this->assertTrue($this->_files->isSuccessful(),'Authentication call failed');
+        $this->assertEquals($this->_files->getToken(),'0f0223cd-f157-4d04-bb2d-ccda1a5643af','The token is not valid');
+        $this->assertEquals($this->_files->getStorageUrl(),'https://storage101.ord1.clouddrive.com/v1/test','The storage URL is not valid');
+        $this->assertEquals($this->_files->getCdnUrl(),'https://cdn2.clouddrive.com/v1/test','The CDN URL is not valid');
+    }
+    /**
+     * Test the authentication error (401 Unauthorized - Bad username or password)
+     *
+     * @return void
+     */
+    public function testAuthenticateError()
+    {
+        $this->_files->getHttpClient()
+                    ->setAdapter($this->_httpClientAdapterTest);
+
+        $this->_httpClientAdapterTest->setResponse($this->_loadResponse(__FUNCTION__));
+
+        $this->assertFalse($this->_files->authenticate());
+        $this->assertFalse($this->_files->isSuccessful());
+        $this->assertEquals($this->_files->getErrorCode(),'401');
+        $this->assertEquals($this->_files->getErrorMsg(),'Bad username or password');
+
+    }
+}

+ 384 - 0
tests/Zend/Service/Rackspace/Servers/OfflineTest.php

@@ -0,0 +1,384 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend\Service\Rackspace\Servers
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Servers.php';
+require_once 'Zend/Http/Client/Adapter/Test.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Servers
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service_Rackspace_Servers
+ */
+class Zend_Service_Rackspace_Servers_OfflineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Reference to Rackspace Servers object
+     *
+     * @var Zend_Service_Rackspace_Servers
+     */
+    protected $rackspace;
+    /**
+     * Check if the resize was successfully done
+     * 
+     * @var boolean 
+     */
+    protected static $resize;
+    /**
+     * List of flavors available
+     * 
+     * @var array
+     */
+    protected static $flavors;
+    /**
+     * List of images available
+     * 
+     * @var Zend_Service_Rackspace_Servers_ImageList 
+     */
+    protected static $images;
+    /**
+     * Id of the image created
+     * 
+     * @var string
+     */
+    protected static $imageId;
+    /**
+     * Server id of testing
+     * 
+     * @var integer 
+     */
+    protected static $serverId;
+    /**
+     * Admin password of the server
+     * 
+     * @var string 
+     */
+    protected static $adminPass;
+    /**
+     * Shared Ip group
+     * 
+     * @var Zend_Service_Rackspace_Servers_SharedIpGroup
+     */
+    protected static $sharedIpGroup;
+    /**
+     * Socket based HTTP client adapter
+     *
+     * @var Zend_Http_Client_Adapter_Test
+     */
+    protected $httpClientAdapterTest;
+    /**
+     * SetUpBerofeClass
+     */
+    public function setUp()
+    {
+        $this->rackspace= new Zend_Service_Rackspace_Servers('foo','bar');
+        
+        $this->httpClientAdapterTest = new Zend_Http_Client_Adapter_Test();
+
+        $this->rackspace->getHttpClient()
+                        ->setAdapter($this->httpClientAdapterTest);
+        
+        // authentication (from a file)
+        $this->httpClientAdapterTest->setResponse(self::loadResponse('../../_files/testAuthenticate'));
+        $this->assertTrue($this->rackspace->authenticate(),'Authentication failed'); 
+        
+        // load the HTTP response (from a file)
+        $this->httpClientAdapterTest->setResponse($this->loadResponse($this->getName()));   
+       
+    }
+    /**
+     * Utility method for returning a string HTTP response, which is loaded from a file
+     *
+     * @param  string $name
+     * @return string
+     */
+    protected function loadResponse($name)
+    {
+        return @file_get_contents(__DIR__ . '/_files/' . $name . '.response');
+    }
+    
+    /**
+     * Test constants
+     */
+    public function testConstants()
+    {
+        $this->assertEquals(10240, Zend_Service_Rackspace_Servers::LIMIT_FILE_SIZE);
+        $this->assertEquals(5, Zend_Service_Rackspace_Servers::LIMIT_NUM_FILE);
+        $this->assertEquals('json', Zend_Service_Rackspace_Servers::API_FORMAT);
+    }
+    /**
+     * Test create server
+     */
+    public function testCreateServer()
+    {       
+        $data = array (
+            'name'     => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,
+            'imageId'  => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGEID,
+            'flavorId' => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_FLAVORID
+        );
+        $server= $this->rackspace->createServer($data);
+        
+        $this->assertTrue($server!==false);
+        self::$serverId= $server->getId();
+        $this->assertEquals(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,$server->getName());
+        $this->assertEquals(self::$serverId,20247478);
+    }
+    /**
+     * Test Get Server
+     */
+    public function testGetServer()
+    {
+        $server= $this->rackspace->getServer(self::$serverId);
+        $this->assertTrue($server!==false);
+        $this->assertEquals(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,$server->getName());
+    }
+    /**
+     * Test list servers
+     */
+    public function testListServers()
+    {
+        $servers= $this->rackspace->listServers();
+        $this->assertTrue($servers!==false);
+    }
+    /**
+     * Test change server name
+     */
+    public function testChangeServerName()
+    {
+        $this->assertTrue($this->rackspace->changeServerName(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME.'_renamed'));
+    }
+    /**
+     * Test rechange server name
+     */
+    public function testRechangeServerName()
+    {
+        $this->assertTrue($this->rackspace->changeServerName(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME));
+    }
+    /**
+     * Test change admin password
+     */
+    public function testChangeServerPassword()
+    {
+        self::$adminPass= md5(time().rand());
+        $this->assertTrue($this->rackspace->changeServerPassword(self::$serverId,self::$adminPass));
+    }
+    /**
+     * Test get server IP
+     */
+    public function testGetServerIp()
+    {
+        $addresses= $this->rackspace->getServerIp(self::$serverId);
+        $this->assertTrue(!empty($addresses['public']) && is_array($addresses['public']));
+        $this->assertTrue(!empty($addresses['private']) && is_array($addresses['private']));
+    }
+    /**
+     * Test get server public IP
+     */
+    public function testGetServerPublicIp()
+    {
+        $public= $this->rackspace->getServerPublicIp(self::$serverId);
+        $this->assertTrue(!empty($public) && is_array($public));
+    }
+    /**
+     * Test get server private IP
+     */
+    public function testGetServerPrivateIp()
+    {
+        $private= $this->rackspace->getServerPrivateIp(self::$serverId);
+        $this->assertTrue(!empty($private) && is_array($private));
+    }
+    /**
+     * Test reboot the server
+     */
+    public function testSoftRebootServer()
+    {
+        $this->assertTrue($this->rackspace->rebootServer(self::$serverId));
+    }
+    /**
+     * Test hard reboot the server
+     */
+    public function testHardRebootServer()
+    {
+        $this->assertTrue($this->rackspace->rebootServer(self::$serverId,true));
+    }
+    /**
+     * Test rebuild the server image
+     */
+    public function testRebuildServer()
+    {
+        $this->assertTrue($this->rackspace->rebuildServer(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NEW_IMAGEID));
+    }
+    /**
+     * Test resize server
+     */
+    public function testResizeServer()
+    {
+         $this->markTestSkipped('Resize server skipped');
+    }
+    /**
+     * Test confirm resize server
+     */
+    public function testConfirmResizeServer()
+    {
+        $this->markTestSkipped('Confirm resize server skipped');
+    }
+    /**
+     * Test revert resize server
+     */
+    public function testRevertResizeServer()
+    {
+        $this->markTestSkipped('Revert resize server skipped');
+    }
+    /**
+     * Test list flavors
+     */
+    public function testListFlavors()
+    {
+        self::$flavors= $this->rackspace->listFlavors(true);
+        $this->assertTrue(is_array(self::$flavors) && !empty(self::$flavors));
+        $this->assertTrue(isset(self::$flavors[0]['id']));
+    }
+    /**
+     * Test get flavor
+     */
+    public function testGetFlavor()
+    {
+        $flavor= $this->rackspace->getFlavor(self::$flavors[0]['id']);
+        $this->assertTrue(is_array($flavor) && !empty($flavor));
+        $this->assertEquals($flavor['id'],self::$flavors[0]['id']);
+    }
+    /**
+     * Test list images
+     */
+    public function testListImages()
+    {
+        self::$images= $this->rackspace->listImages(true);
+        $this->assertTrue(count(self::$images)>0);
+        $image= self::$images[0];
+        $imageId= $image->getId();
+        $this->assertTrue(!empty($imageId));
+    }
+    /**
+     * Test get image
+     */
+    public function testGetImage()
+    {
+        $image= self::$images[0];
+        $getImage= $this->rackspace->getImage($image->getId());
+        $this->assertEquals($getImage->getId(),$image->getId());
+    }
+    /**
+     * Test get image info
+     */
+    public function testGetImageInfo()
+    {
+        $image= $this->rackspace->getImage(self::$images[0]->getId())->toArray();
+        $this->assertTrue(is_array($image) && !empty($image));
+        $this->assertEquals($image['id'],self::$images[0]->getId());
+    }
+    /**
+     * Test create image
+     */
+    public function testCreateImage()
+    {
+        $image= $this->rackspace->createImage(self::$serverId, TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGE_NAME);
+        if ($image!==false) {
+            self::$imageId= $image->getId();
+        }
+        $this->assertTrue($image!==false);
+        $this->assertEquals($image->getName(),TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGE_NAME);
+    }
+    /**
+     * Test delete image
+     */
+    public function testDeleteImage()
+    {
+        if (isset(self::$imageId)) {
+            $this->assertTrue($this->rackspace->deleteImage(self::$imageId));
+        } else {
+            $this->markTestSkipped('Delete image skipped because the new image has not been created');
+        }
+    }
+    /**
+     * Test get backup schedule
+     */
+    public function testGetBackupSchedule()
+    {
+        $this->markTestSkipped('Get backup schedule skipped');
+    }
+    /**
+     * Test change backup schedule
+     */
+    public function testChangeBackupSchedule()
+    {
+        $this->markTestSkipped('Change backup schedule skipped');
+    }
+    /**
+     * Test disable backup schedule
+     */
+    public function testDisableBackupSchedule()
+    {
+        $this->markTestSkipped('Disable backup schedule skipped');
+    }
+    /**
+     * Test create shared Ip group
+     */
+    public function testCreateSharedIpGroup()
+    {
+        self::$sharedIpGroup= $this->rackspace->createSharedIpGroup(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_SHARED_IP_GROUP_NAME, self::$serverId);
+        $this->assertTrue(self::$sharedIpGroup!==false);
+        $this->assertEquals(self::$sharedIpGroup->getName(),TESTS_ZEND_SERVICE_RACKSPACE_SERVER_SHARED_IP_GROUP_NAME);
+    }
+    /**
+     * Test list shared ip groups
+     */
+    public function testListSharedIpGroups()
+    {
+        $groups= $this->rackspace->listSharedIpGroups(true);
+        $this->assertTrue($groups!==false);
+    }
+    /**
+     * Test get shared IP group 
+     */
+    public function testGetSharedIpGroup()
+    {
+        $groupId= self::$sharedIpGroup->getId();
+        $group= $this->rackspace->getSharedIpGroup($groupId);
+        $this->assertTrue($group!==false);
+        $this->assertEquals($group->getId(), $groupId);   
+    }
+    /**
+     * Test delete shared ip group
+     */
+    public function testDeleteSharedIpGroup()
+    {
+        $this->assertTrue($this->rackspace->deleteSharedIpGroup(self::$sharedIpGroup->getId())); 
+    }
+    /**
+     * Test delete server
+     */
+    public function testDeleteServer()
+    {
+        $this->assertTrue($this->rackspace->deleteServer(self::$serverId));
+    }
+}

+ 435 - 0
tests/Zend/Service/Rackspace/Servers/OnlineTest.php

@@ -0,0 +1,435 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Servers
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Servers.php';
+require_once 'Zend/Http/Client/Adapter/Socket.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Servers
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service_Rackspace_Servers
+ */
+class Zend_Service_Rackspace_Servers_OnlineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Reference to Rackspace Servers object
+     *
+     * @var Zend_Service_Rackspace_Servers
+     */
+    protected static $rackspace;
+    /**
+     * Check if the resize was successfully done
+     * 
+     * @var boolean 
+     */
+    protected static $resize;
+    /**
+     * List of flavors available
+     * 
+     * @var array
+     */
+    protected static $flavors;
+    /**
+     * List of images available
+     * 
+     * @var Zend_Service_Rackspace_Servers_ImageList 
+     */
+    protected static $images;
+    /**
+     * Id of the image created
+     * 
+     * @var string
+     */
+    protected static $imageId;
+    /**
+     * Server id of testing
+     * 
+     * @var integer 
+     */
+    protected static $serverId;
+    /**
+     * Admin password of the server
+     * 
+     * @var string 
+     */
+    protected static $adminPass;
+    /**
+     * Shared Ip group
+     * 
+     * @var Zend_Service_Rackspace_Servers_SharedIpGroup
+     */
+    protected static $sharedIpGroup;
+    /**
+     * Socket based HTTP client adapter
+     *
+     * @var Zend_Http_Client_Adapter_Socket
+     */
+    protected static $httpClientAdapterSocket;
+    /**
+     * SetUpBerofeClass
+     */
+    public static function setUpBeforeClass()
+    {
+        if (!constant('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_ENABLED')) {
+            self::markTestSkipped('Zend_Service_Rackspace_Servers_OnlineTest tests are not enabled');
+        }
+        if(!defined('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_USER') || !defined('TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_KEY')) {
+            self::markTestSkipped('Constants User and Key have to be set.');
+        }
+
+        self::$rackspace = new Zend_Service_Rackspace_Servers(TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_USER,
+                                       TESTS_ZEND_SERVICE_RACKSPACE_ONLINE_KEY);
+
+        self::$httpClientAdapterSocket = new Zend_Http_Client_Adapter_Socket();
+
+        self::$rackspace->getHttpClient()
+                        ->setAdapter(self::$httpClientAdapterSocket);
+    }
+    /**
+     * Sets up this test case
+     *
+     * @return void
+     */
+    public function setUp()
+    {
+        // terms of use compliance: safe delay between each test
+        sleep(2);
+    }
+    
+    /**
+     * Wait n seconds for status change
+     * 
+     * @param string  $status 
+     * @param integer $timeout
+     * @return boolean
+     */
+    protected static function waitForStatus($status,$timeout=TESTS_ZEND_SERVICE_RACKSPACE_TIMEOUT)
+    {
+        $info['status']= null;
+        $i=0;
+        while ((strtoupper($info['status'])!==strtoupper($status)) && ($i<$timeout)) {
+            $info= self::$rackspace->getServer(self::$serverId)->toArray();
+            $i+=5;
+            sleep(5);
+        }
+        return ($i<$timeout);
+    }
+    /**
+     * Test constants
+     */
+    public function testConstants()
+    {
+        $this->assertEquals(10240, Zend_Service_Rackspace_Servers::LIMIT_FILE_SIZE);
+        $this->assertEquals(5, Zend_Service_Rackspace_Servers::LIMIT_NUM_FILE);
+        $this->assertEquals('json', Zend_Service_Rackspace_Servers::API_FORMAT);
+    }
+    /**
+     * Test authentication
+     */
+    public function testAuthentication()
+    {
+        $this->filename= __METHOD__;
+        $this->assertTrue(self::$rackspace->authenticate());
+    }
+    /**
+     * Test create server
+     */
+    public function testCreateServer()
+    {       
+        $data = array (
+            'name'     => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,
+            'imageId'  => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGEID,
+            'flavorId' => TESTS_ZEND_SERVICE_RACKSPACE_SERVER_FLAVORID
+        );
+        $server= self::$rackspace->createServer($data);
+        $this->assertTrue($server!==false);
+        self::$serverId= $server->getId();
+        self::$adminPass= $server->getAdminPass();
+        $this->assertEquals(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,$server->getName());
+        $this->assertTrue(self::waitForStatus('active'));
+    }
+    /**
+     * Test Get Server
+     */
+    public function testGetServer()
+    {
+        $server= self::$rackspace->getServer(self::$serverId);
+        $this->assertTrue($server!==false);
+        $this->assertEquals(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME,$server->getName());
+    }
+    /**
+     * Test list servers
+     */
+    public function testListServers()
+    {
+        $servers= self::$rackspace->listServers();
+        $this->assertTrue($servers!==false);
+    }
+    /**
+     * Test change server name
+     */
+    public function testChangeServerName()
+    {
+        $this->assertTrue(self::$rackspace->changeServerName(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME.'_renamed'));
+    }
+    /**
+     * Test rechange server name
+     */
+    public function testRechangeServerName()
+    {
+        $this->assertTrue(self::$rackspace->changeServerName(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NAME));
+    }
+    /**
+     * Test change admin password
+     */
+    public function testChangeServerPassword()
+    {
+        self::$adminPass= md5(time().rand());
+        $this->assertTrue(self::$rackspace->changeServerPassword(self::$serverId,self::$adminPass));
+    }
+    /**
+     * Test get server IP
+     */
+    public function testGetServerIp()
+    {
+        $addresses= self::$rackspace->getServerIp(self::$serverId);
+        $this->assertTrue(!empty($addresses['public']) && is_array($addresses['public']));
+        $this->assertTrue(!empty($addresses['private']) && is_array($addresses['private']));
+    }
+    /**
+     * Test get server public IP
+     */
+    public function testGetServerPublicIp()
+    {
+        $public= self::$rackspace->getServerPublicIp(self::$serverId);
+        $this->assertTrue(!empty($public) && is_array($public));
+    }
+    /**
+     * Test get server private IP
+     */
+    public function testGetServerPrivateIp()
+    {
+        $private= self::$rackspace->getServerPrivateIp(self::$serverId);
+        $this->assertTrue(!empty($private) && is_array($private));
+    }
+    /**
+     * Test reboot the server
+     */
+    public function testSoftRebootServer()
+    {
+        $this->assertTrue(self::$rackspace->rebootServer(self::$serverId));
+        $this->assertTrue(self::waitForStatus('active'));
+    }
+    /**
+     * Test hard reboot the server
+     */
+    public function testHardRebootServer()
+    {
+        $this->assertTrue(self::$rackspace->rebootServer(self::$serverId,true));
+        $this->assertTrue(self::waitForStatus('active'));
+    }
+    /**
+     * Test rebuild the server image
+     */
+    public function testRebuildServer()
+    {
+        $this->assertTrue(self::$rackspace->rebuildServer(self::$serverId,TESTS_ZEND_SERVICE_RACKSPACE_SERVER_NEW_IMAGEID));
+    }
+    /**
+     * Test resize server
+     */
+    public function testResizeServer()
+    {
+         $this->markTestSkipped('Resize server skipped');
+    }
+    /**
+     * Test confirm resize server
+     */
+    public function testConfirmResizeServer()
+    {
+        $this->markTestSkipped('Confirm resize server skipped');
+    }
+    /**
+     * Test revert resize server
+     */
+    public function testRevertResizeServer()
+    {
+        $this->markTestSkipped('Revert resize server skipped');
+    }
+    /**
+     * Test list flavors
+     */
+    public function testListFlavors()
+    {
+        self::$flavors= self::$rackspace->listFlavors(true);
+        $this->assertTrue(is_array(self::$flavors) && !empty(self::$flavors));
+        $this->assertTrue(isset(self::$flavors[0]['id']));
+    }
+    /**
+     * Test get flavor
+     */
+    public function testGetFlavor()
+    {
+        $flavor= self::$rackspace->getFlavor(self::$flavors[0]['id']);
+        $this->assertTrue(is_array($flavor) && !empty($flavor));
+        $this->assertEquals($flavor['id'],self::$flavors[0]['id']);
+    }
+    /**
+     * Test list images
+     */
+    public function testListImages()
+    {
+        self::$images= self::$rackspace->listImages(true);
+        $this->assertTrue(count(self::$images)>0);
+        $image= self::$images[0];
+        $imageId= $image->getId();
+        $this->assertTrue(!empty($imageId));
+    }
+    /**
+     * Test get image
+     */
+    public function testGetImage()
+    {
+        $image= self::$images[0];
+        $getImage= self::$rackspace->getImage($image->getId());
+        $this->assertEquals($getImage->getId(),$image->getId());
+    }
+    /**
+     * Test get image info
+     */
+    public function testGetImageInfo()
+    {
+        $image= self::$rackspace->getImage(self::$images[0]->getId())->toArray();
+        $this->assertTrue(is_array($image) && !empty($image));
+        $this->assertEquals($image['id'],self::$images[0]->getId());
+    }
+    /**
+     * Test create image
+     */
+    public function testCreateImage()
+    {
+        $image= self::$rackspace->createImage(self::$serverId, TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGE_NAME);
+        if ($image!==false) {
+            self::$imageId= $image->getId();
+        }
+        $this->assertTrue($image!==false);
+        $this->assertEquals($image->getName(),TESTS_ZEND_SERVICE_RACKSPACE_SERVER_IMAGE_NAME);
+    }
+    /**
+     * Test delete image
+     */
+    public function testDeleteImage()
+    {
+        if (isset(self::$imageId)) {
+            $this->assertTrue(self::$rackspace->deleteImage(self::$imageId));
+        } else {
+            $this->markTestSkipped('Delete image skipped because the new image has not been created');
+        }
+    }
+    /**
+     * Test get backup schedule
+     */
+    public function testGetBackupSchedule()
+    {
+        $this->markTestSkipped('Get backup schedule skipped');
+    }
+    /**
+     * Test change backup schedule
+     */
+    public function testChangeBackupSchedule()
+    {
+        $this->markTestSkipped('Change backup schedule skipped');
+    }
+    /**
+     * Test disable backup schedule
+     */
+    public function testDisableBackupSchedule()
+    {
+        $this->markTestSkipped('Disable backup schedule skipped');
+    }
+    /**
+     * Test create shared Ip group
+     */
+    public function testCreateSharedIpGroup()
+    {
+        self::$sharedIpGroup= self::$rackspace->createSharedIpGroup(TESTS_ZEND_SERVICE_RACKSPACE_SERVER_SHARED_IP_GROUP_NAME, self::$serverId);
+        $this->assertTrue(self::$sharedIpGroup!==false);
+        $this->assertEquals(self::$sharedIpGroup->getName(),TESTS_ZEND_SERVICE_RACKSPACE_SERVER_SHARED_IP_GROUP_NAME);
+    }
+    /**
+     * Test list shared ip groups
+     */
+    public function testListSharedIpGroups()
+    {
+        $groups= self::$rackspace->listSharedIpGroups(true);
+        $this->assertTrue($groups!==false);
+    }
+    /**
+     * Test get shared IP group 
+     */
+    public function testGetSharedIpGroup()
+    {
+        $groupId= self::$sharedIpGroup->getId();
+        $group= self::$rackspace->getSharedIpGroup($groupId);
+        $this->assertTrue($group!==false);
+        $this->assertEquals($group->getId(), $groupId);   
+    }
+    /**
+     * Test delete shared ip group
+     */
+    public function testDeleteSharedIpGroup()
+    {
+        $this->assertTrue(self::$rackspace->deleteSharedIpGroup(self::$sharedIpGroup->getId())); 
+    }
+    /**
+     * Test delete server
+     */
+    public function testDeleteServer()
+    {
+        $this->assertTrue(self::$rackspace->deleteServer(self::$serverId));
+    }
+}
+
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_Rackspace_Servers
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Zend_Service
+ * @group      Zend_Service_Rackspace
+ */
+class Zend_Service_Rackspace_Servers_Skip extends PHPUnit_Framework_TestCase
+{
+    public function setUp()
+    {
+        $this->markTestSkipped('Zend_Service_Rackspace_Servers_OnlineTest is not enabled with an access key ID in '
+                             . 'TestConfiguration.php');
+    }
+
+    public function testNothing()
+    {
+    }
+}

+ 1 - 0
tests/Zend/Service/Rackspace/Servers/_files/test.txt

@@ -0,0 +1 @@
+This is a test!

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testAuthentication.request

@@ -0,0 +1,8 @@
+GET /v1.0?format=json HTTP/1.1
+Host: auth.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-User: ezimuel
+X-Auth-Key: c322b5c41f6047c83dd51e6980562912
+

+ 14 - 0
tests/Zend/Service/Rackspace/Servers/_files/testAuthentication.response

@@ -0,0 +1,14 @@
+HTTP/1.1 204 No Content
+Date: Mon, 26 Sep 2011 08:35:03 GMT
+Server: Apache/2.2.3 (Mosso Engineering)
+vary: X-Auth-Token,X-Auth-Key,X-Storage-User,X-Storage-Pass
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+X-Server-Management-Url: https://servers.api.rackspacecloud.com/v1.0/583923
+X-Storage-Url: https://storage101.ord1.clouddrive.com/v1/MossoCloudFS_2abf18d2-f3f8-45fd-940e-a7b38a195041
+X-Storage-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+X-CDN-Management-Url: https://cdn2.clouddrive.com/v1/MossoCloudFS_2abf18d2-f3f8-45fd-940e-a7b38a195041
+Cache-Control: s-maxage=86399
+Content-Length: 0
+Connection: close
+Content-Type: text/xml
+

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeBackupSchedule.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/images/14253092?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeBackupSchedule.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:37:55 GMT
+X-Varnish: 1908653404
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 10 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeServerName.request

@@ -0,0 +1,10 @@
+PUT /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 42
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+
+{"server":{"name":"zf-unit-test_renamed"}}

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeServerName.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:36:12 GMT
+X-Varnish: 1908642493
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 10 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeServerPassword.request

@@ -0,0 +1,10 @@
+PUT /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 59
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+
+{"server":{"adminPass":"1c21b99dbab33a0aa952c4e821c0c499"}}

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testChangeServerPassword.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:36:23 GMT
+X-Varnish: 1908643901
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 10 - 0
tests/Zend/Service/Rackspace/Servers/_files/testConfirmResizeServer.request

@@ -0,0 +1,10 @@
+POST /v1.0/583923/servers/20247478/action?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 26
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+
+{"rebuild":{"imageId":49}}

+ 12 - 0
tests/Zend/Service/Rackspace/Servers/_files/testConfirmResizeServer.response

@@ -0,0 +1,12 @@
+HTTP/1.1 202 Accepted
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Type: text/xml
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:37:15 GMT
+X-Varnish: 1908649367
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 10 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateImage.request

@@ -0,0 +1,10 @@
+POST /v1.0/583923/images?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 56
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+
+{"image":{"serverId":20247478,"name":"ZFunitTestImage"}}

+ 14 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateImage.response

@@ -0,0 +1,14 @@
+HTTP/1.1 202 Accepted
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Cache-Control: no-cache
+Content-Type: application/json
+Content-Length: 131
+Date: Mon, 26 Sep 2011 08:37:44 GMT
+X-Varnish: 1908652628
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"image":{"id":14253092,"status":"QUEUED","updated":"2011-09-26T03:37:43-05:00","name":"ZFunitTestImage","serverId":20247478}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateServer.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateServer.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:35:35 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 204
+Date: Mon, 26 Sep 2011 08:35:53 GMT
+X-Varnish: 1908639632
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"ACTIVE","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 10 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateSharedIpGroup.request

@@ -0,0 +1,10 @@
+POST /v1.0/583923/shared_ip_groups?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/json
+Content-Length: 56
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+
+{"sharedIpGroup":{"name":"ZFgroupIP","server":20247478}}

+ 14 - 0
tests/Zend/Service/Rackspace/Servers/_files/testCreateSharedIpGroup.response

@@ -0,0 +1,14 @@
+HTTP/1.1 201 Created
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Cache-Control: no-cache
+Content-Type: application/json
+Content-Length: 67
+Date: Mon, 26 Sep 2011 08:38:06 GMT
+X-Varnish: 1908655137
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"sharedIpGroup":{"id":12288,"name":"ZFgroupIP"}}

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteImage.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/images/14253092?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteImage.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:37:55 GMT
+X-Varnish: 1908653404
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteServer.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 12 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteServer.response

@@ -0,0 +1,12 @@
+HTTP/1.1 202 Accepted
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Type: text/xml
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:38:23 GMT
+X-Varnish: 1908656714
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteSharedIpGroup.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/shared_ip_groups/12288?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDeleteSharedIpGroup.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:38:18 GMT
+X-Varnish: 1908656340
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDisableBackupSchedule.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/images/14253092?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testDisableBackupSchedule.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:37:55 GMT
+X-Varnish: 1908653404
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 8 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetBackupSchedule.request

@@ -0,0 +1,8 @@
+DELETE /v1.0/583923/images/14253092?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+Content-Type: application/x-www-form-urlencoded
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 11 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetBackupSchedule.response

@@ -0,0 +1,11 @@
+HTTP/1.1 204 No Content
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Cache-Control: no-cache
+Content-Length: 0
+Date: Mon, 26 Sep 2011 08:37:55 GMT
+X-Varnish: 1908653404
+Age: 0
+Via: 1.1 varnish
+Connection: close
+

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetFlavor.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/flavors/1?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetFlavor.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Wed, 19 Sep 2007 18:24:59 GMT
+X-PURGE-KEY: /flavors
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 76
+Date: Mon, 26 Sep 2011 08:37:28 GMT
+X-Varnish: 1908650939
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"flavor":{"id":1,"ram":256,"disk":10,"name":"256 server"}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetImage.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/images/19?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetImage.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Tue, 15 Dec 2009 21:43:39 GMT
+X-PURGE-KEY: /583923/images/19
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 126
+Date: Mon, 26 Sep 2011 08:37:35 GMT
+X-Varnish: 1908651977
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"image":{"id":19,"status":"ACTIVE","created":"2009-12-15T06:36:24-06:00","updated":"2009-12-15T15:43:39-06:00","name":"Gentoo 10.1"}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetImageInfo.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/images/19?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetImageInfo.response

@@ -0,0 +1,16 @@
+HTTP/1.1 203 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Tue, 15 Dec 2009 21:43:39 GMT
+X-PURGE-KEY: /583923/images/19
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 126
+Date: Mon, 26 Sep 2011 08:37:39 GMT
+X-Varnish: 1908652222 1908651977
+Age: 3
+Via: 1.1 varnish
+Connection: close
+
+{"image":{"id":19,"status":"ACTIVE","created":"2009-12-15T06:36:24-06:00","updated":"2009-12-15T15:43:39-06:00","name":"Gentoo 10.1"}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServer.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServer.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:35:35 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 204
+Date: Mon, 26 Sep 2011 08:36:02 GMT
+X-Varnish: 1908641838
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"ACTIVE","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerIp.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerIp.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:36:17 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 208
+Date: Mon, 26 Sep 2011 08:36:29 GMT
+X-Varnish: 1908644209
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"PASSWORD","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerPrivateIp.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerPrivateIp.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:36:17 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 204
+Date: Mon, 26 Sep 2011 08:36:38 GMT
+X-Varnish: 1908645328
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"ACTIVE","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerPublicIp.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetServerPublicIp.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:36:17 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 204
+Date: Mon, 26 Sep 2011 08:36:34 GMT
+X-Varnish: 1908644796
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"ACTIVE","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetSharedIpGroup.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/shared_ip_groups/12288?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testGetSharedIpGroup.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:38:06 GMT
+X-PURGE-KEY: /583923/shared_ip_groups/12288
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 88
+Date: Mon, 26 Sep 2011 08:38:13 GMT
+X-Varnish: 1908655994
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"sharedIpGroup":{"id":12288,"servers":[20247478],"name":"ZFgroupIP"}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testHardRebootServer.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers/20247478?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testHardRebootServer.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:36:17 GMT
+X-PURGE-KEY: /583923/servers/20247478
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 204
+Date: Mon, 26 Sep 2011 08:37:04 GMT
+X-Varnish: 1908648305
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"server":{"progress":100,"id":20247478,"imageId":49,"flavorId":1,"status":"ACTIVE","name":"zf-unit-test","hostId":"ad9f86d14056f403153b2ee347c7ddf5","addresses":{"public":["50.57.86.26"],"private":["10.182.40.105"]},"metadata":{}}}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListFlavors.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/flavors/detail?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListFlavors.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Fri, 01 Apr 2011 00:02:01 GMT
+X-PURGE-KEY: /flavors
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 163
+Date: Mon, 26 Sep 2011 08:37:24 GMT
+X-Varnish: 1908650596
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"flavors":[{"id":1,"ram":256,"disk":10,"name":"256 server"},{"id":2,"ram":512,"disk":20,"name":"512 server"},{"id":3,"ram":1024,"disk":40,"name":"1GB server"},{"id":4,"ram":2048,"disk":80,"name":"2GB server"},{"id":5,"ram":4096,"disk":160,"name":"4GB server"},{"id":6,"ram":8192,"disk":320,"name":"8GB server"},{"id":7,"ram":15872,"disk":620,"name":"15.5GB server"}]}

+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListImages.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/images/detail?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

File diff suppressed because it is too large
+ 15 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListImages.response


+ 7 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListServers.request

@@ -0,0 +1,7 @@
+GET /v1.0/583923/servers?format=json HTTP/1.1
+Host: servers.api.rackspacecloud.com
+Connection: close
+Accept-encoding: gzip, deflate
+User-Agent: Zend\Http\Client
+X-Auth-Token: ed355855-8bfa-4716-b613-c04b606cdd8c
+

+ 16 - 0
tests/Zend/Service/Rackspace/Servers/_files/testListServers.response

@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Server: Apache-Coyote/1.1
+vary: Accept, Accept-Encoding, X-Auth-Token
+Vary: Accept-Encoding
+Last-Modified: Mon, 26 Sep 2011 08:35:35 GMT
+X-PURGE-KEY: /583923/servers
+Cache-Control: s-maxage=1800
+Content-Type: application/json
+Content-Length: 71
+Date: Mon, 26 Sep 2011 08:36:06 GMT
+X-Varnish: 1908642213
+Age: 0
+Via: 1.1 varnish
+Connection: close
+
+{"servers":[{"id":20247478,"name":"zf-unit-test"}]}

Some files were not shown because too many files changed in this diff