wrote this file. * As long as you retain this notice you can do whatever you want with * this stuff. If we meet some day, and you think this stuff is worth it, * you can buy me a beer in return. * * @author Sven Strittmatter * @copyright Copyright (c) 2010, Sven Strittmatter. * @version 0.2.2 * @license http://www.weltraumschaf.de/the-beer-ware-license.txt */ /** * Test helper */ require_once dirname(dirname(__DIR__)) . DIRECTORY_SEPARATOR . 'TestHelper.php'; require_once 'Api/Kwick/Config.php'; require_once 'Api/Kwick/Request.php'; class Api_Kwick_RequestTest extends PHPUnit_Framework_TestCase { public function testGetQualifiedMethod() { $request = new Api_Kwick_Request(new Api_Kwick_Config(array())); $expected = Api_Kwick_Request::DEFAULT_SERVICE . '.' . Api_Kwick_Request::DEFAULT_METHOD; $this->assertEquals($expected, $request->getQualifiedMethod()); $request->setService('foo'); $this->assertEquals('foo.' . Api_Kwick_Request::DEFAULT_METHOD, $request->getQualifiedMethod()); $request->setMethod('bar'); $this->assertEquals('foo.bar', $request->getQualifiedMethod()); $request->setService('blub'); $request->setMethod('test'); $this->assertEquals('blub.test', $request->getQualifiedMethod()); } public function testGenerateParamString() { $conf = array( 'apiKey' => 'sjkdhfgalksdhfkjashdf', 'secret' => 'jadshfkshdfkjasdhfhsa', 'version' => Api_Kwick_Request::VERSION_20, ); $request = new Api_Kwick_Request(new Api_Kwick_Config($conf)); $expected = 'api_key=' . $conf['apiKey']; $expected .= 'method=' . $request->getQualifiedMethod(); $expected .= 'v=' . $conf['version']; $this->assertEquals($expected, $request->generateParamString()); $request->setParameter('d', 4); $request->setParameter('b', 2); $request->setParameter('a', 1); $request->setParameter('c', 3); $expected = 'a=1'; $expected .= 'api_key=' . $conf['apiKey']; $expected .= 'b=2'; $expected .= 'c=3'; $expected .= 'd=4'; $expected .= 'method=' . $request->getQualifiedMethod(); $expected .= 'v=' . $conf['version']; $this->assertEquals($expected, $request->generateParamString()); } public function testGenerateSignature() { $conf = array( 'apiKey' => 'sjkdhfgalksdhfkjashdf', 'secret' => 'jadshfkshdfkjasdhfhsa', 'version' => Api_Kwick_Request::VERSION_20, ); $request = new Api_Kwick_Request(new Api_Kwick_Config($conf)); $this->assertEquals(md5($request->generateParamString() . $conf['secret']), $request->generateSignature()); $request->setParameter('d', 4); $request->setParameter('b', 2); $request->setParameter('a', 1); $request->setParameter('c', 3); $this->assertEquals(md5($request->generateParamString() . $conf['secret']), $request->generateSignature()); } public function testGenerateUrl() { $conf = array( 'baseUri' => 'http://www.foobar.de/', 'apiKey' => 'sjkdhfgalksdhfkjashdf', 'secret' => 'jadshfkshdfkjasdhfhsa', 'version' => Api_Kwick_Request::VERSION_20, ); $request = new Api_Kwick_Request(new Api_Kwick_Config($conf)); $expected = $conf['baseUri'] . '?'; $expected .= 'api_key=' . $conf['apiKey'] . '&'; $expected .= 'v=' . $conf['version'] . '&'; $expected .= 'method=' . $request->getQualifiedMethod() . '&'; $expected .= 'sig=' . $request->generateSignature(); $this->assertEquals($expected, $request->generateUrl()); $this->markTestIncomplete('Test with additional parameters.'); } public function testSend() { $conf = array( 'baseUri' => 'http://www.foobar.de/' ); $request = new Api_Kwick_Request(new Api_Kwick_Config($conf)); $httpMock = $this->getMock('HttpRequest', array( 'setUrl', 'setMethod', 'send', 'getResponseCode', 'getResponseBody')); $httpMock->expects($this->once()) ->method('setUrl') ->with($this->equalTo($request->generateUrl())); $httpMock->expects($this->once()) ->method('setMethod') ->with($this->equalTo(HttpRequest::METH_POST)); $httpMock->expects($this->once()) ->method('send'); $httpMock->expects($this->atLeastOnce()) ->method('getResponseCode') ->will($this->returnValue(200)); $responseBody = 'The respinded string'; $httpMock->expects($this->once()) ->method('getResponseBody') ->will($this->returnValue($responseBody)); $this->assertEquals($responseBody, $request->send($httpMock)); } public function testThrowExceptionOnSend() { $request = new Api_Kwick_Request(new Api_Kwick_Config(array())); $httpMock = $this->getMock('HttpRequest', array( 'send', 'getResponseCode')); $httpMock->expects($this->once()) ->method('send'); $httpMock->expects($this->exactly(2)) ->method('getResponseCode') ->will($this->returnValue(404)); try { $request->send($httpMock); $this->fail('Excepted runtime exception not thrown!'); } catch (RuntimeException $re) { $this->assertEquals(404, $re->getCode()); } } }