Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.8.0
-
Component/s: Zend_Service_Amazon
-
Labels:None
Description
Create an abstract class to set a standard way for to handle the access and secret keys with all the AWS components.
AbstractClass
<?php require_once 'Zend/Service/Abstract.php'; abstract class Zend_Service_Amazon_Abstract extends Zend_Service_Abstract { /** * @var string Amazon Access Key */ protected static $defaultAccessKey = null; /** * @var string Amazon Secret Key */ protected static $defaultSecretKey = null; /** * @var string Amazon Secret Key */ protected $secretKey; /** * @var string Amazon Access Key */ protected $accessKey; /** * Set the keys to use when accessing SQS. * * @param string $access_key * @param string $secret_key * @return void */ public static function setKeys($accessKey, $secretKey) { self::$defaultAccessKey = $accessKey; self::$defaultSecretKey = $secretKey; } /** * Create Amazon Sqs client. * * @param string $access_key * @param string $secret_key * @return void */ public function __construct($accessKey=null, $secretKey=null) { if(!$accessKey) { $accessKey = self::$defaultAccessKey; } if(!$secretKey) { $secretKey = self::$defaultSecretKey; } if(!$accessKey || !$secretKey) { require_once 'Zend/Service/Amazon/Exception.php'; throw new Zend_Service_Amazon_Exception("AWS keys were not supplied"); } $this->accessKey = $accessKey; $this->secretKey = $secretKey; } /** * Method to fetch the Access Key * * @return string */ protected function getAccessKey() { return $this->accessKey; } /** * Method to fetch the Secret AWS Key * * @return string */ protected function getSecretKey() { return $this->secretKey; } }
TestCase
<?php require_once 'Zend/Service/Amazon/Abstract.php'; require_once 'PHPUnit/Framework/TestCase.php'; /** * Zend_Service_Amazon_Sqs_Queue test case. */ class AmamzonAbstract extends PHPUnit_Framework_TestCase { /** * Prepares the environment before running a test. */ protected function setUp() { parent::setUp(); } /** * Cleans up the environment after running a test. */ protected function tearDown() { parent::tearDown(); } public function testNoKeysThrowException() { try { $class = new TestAmamzonAbstract(); $this->fail('Exception should be thrown when no keys are passed in.'); } catch(Zend_Service_Amazon_Exception $zsae) {} } public function testConstructorWithKeysDoesNotThrowException() { try { $class = new TestAmamzonAbstract('TestAccessKey', 'TestSecretKey'); } catch(Zend_Service_Amazon_Exception $zsae) { $this->fail('Exception should be thrown when no keys are passed in.'); } } public function testSetStaticKeys() { TestAmamzonAbstract::setKeys('TestAccessKey', 'TestSecretKey'); $class = new TestAmamzonAbstract(); $this->assertEquals('TestAccessKey', $class->returnAccessKey()); $this->assertEquals('TestSecretKey', $class->returnSecretKey()); } public function testPassKeysIntoConstructor() { $class = new TestAmamzonAbstract('TestAccessKey', 'TestSecretKey'); $this->assertEquals('TestAccessKey', $class->returnAccessKey()); $this->assertEquals('TestSecretKey', $class->returnSecretKey()); } public function testPassedInKeysOverrideStaticSetKeys() { TestAmamzonAbstract::setKeys('TestStaticAccessKey', 'TestStaticSecretKey'); $class = new TestAmamzonAbstract('TestAccessKey', 'TestSecretKey'); $this->assertEquals('TestAccessKey', $class->returnAccessKey()); $this->assertEquals('TestSecretKey', $class->returnSecretKey()); } } class TestAmamzonAbstract extends Zend_Service_Amazon_Abstract { public function returnAccessKey() { return $this->accessKey; } public function returnSecretKey() { return $this->secretKey; } }
Attachments
Issue Links
| This issue is related to: | ||||
| ZF-8536 | Zend_Service_Amazon_Abstract is only capable of handling EC2 requests. |
|
|
|
Abstract Class for use with Amazon Aws Services.