public function testFlow() { $testCase = $this; $http = new Http(new Callback(function ($request) use($testCase) { $body = new TempStream(fopen('php://memory', 'r+')); $response = new Response(); $response->setBody($body); $testCase->loadController($request, $response); return $response; })); $oauth = new Oauth($http); // request token $response = $oauth->requestToken(new Url('http://127.0.0.1/request'), OauthTest::CONSUMER_KEY, OauthTest::CONSUMER_SECRET); $this->assertInstanceOf('PSX\\Oauth\\Provider\\Data\\Response', $response); $this->assertEquals(OauthTest::TMP_TOKEN, $response->getToken()); $this->assertEquals(OauthTest::TMP_TOKEN_SECRET, $response->getTokenSecret()); // authorize the user gets redirected and approves the application // access token $response = $oauth->accessToken(new Url('http://127.0.0.1/access'), OauthTest::CONSUMER_KEY, OauthTest::CONSUMER_SECRET, OauthTest::TMP_TOKEN, OauthTest::TMP_TOKEN_SECRET, OauthTest::VERIFIER); $this->assertInstanceOf('PSX\\Oauth\\Provider\\Data\\Response', $response); $this->assertEquals(OauthTest::TOKEN, $response->getToken()); $this->assertEquals(OauthTest::TOKEN_SECRET, $response->getTokenSecret()); // api request $url = new Url('http://127.0.0.1/api'); $auth = $oauth->getAuthorizationHeader($url, OauthTest::CONSUMER_KEY, OauthTest::CONSUMER_SECRET, OauthTest::TOKEN, OauthTest::TOKEN_SECRET, 'HMAC-SHA1', 'GET'); $request = new GetRequest($url, array('Authorization' => $auth)); $response = $http->request($request); $this->assertEquals(200, $response->getStatusCode()); $this->assertEquals('SUCCESS', (string) $response->getBody()); }
public function testCacheHit() { $request = new Request(new Url('http://localhost.com/foo/bar'), 'GET'); $response = new Response(); $response->setBody(new StringStream()); $filters = array(); $filters[] = function ($request, $response, $filterChain) { $response->getBody()->write('foobar'); $filterChain->handle($request, $response); }; $filterChain = new FilterChain($filters); $filterChain->handle($request, $response); $cache = new Cache(new CacheHandler\Memory()); $item = $cache->getItem(md5('/foo/bar')); $item->set(array('headers' => array('Last-Modified' => 'Sat, 27 Dec 2014 15:54:49 GMT', 'Content-Type' => 'text/plain'), 'body' => 'foobar')); $cache->save($item); $filter = new StaticCache($cache); $filter->handle($request, $response, $filterChain); $result = $cache->getItem(md5('/foo/bar'))->get(); $this->assertArrayHasKey('headers', $result); $this->assertArrayHasKey('Content-Type', $result['headers']); $this->assertEquals('text/plain', $result['headers']['Content-Type']); $this->assertArrayHasKey('Last-Modified', $result['headers']); $this->assertEquals('Sat, 27 Dec 2014 15:54:49 GMT', $result['headers']['Last-Modified']); $this->assertArrayHasKey('body', $result); $this->assertEquals('foobar', $result['body']); }
public function testSend() { $response = new Response(); $response->setBody(new StringStream('foobar')); $sender = new Void(); $actual = $this->captureOutput($sender, $response); $this->assertEmpty($actual); }
/** * Sends an request to the system and returns the http response * * @param string $url * @param string $method * @param array $headers * @param string $body * @return \PSX\Http\ResponseInterface */ protected function sendRequest($url, $method, $headers = array(), $body = null) { $request = new Request(is_string($url) ? new Url($url) : $url, $method, $headers, $body); $response = new Response(); $response->setBody(new TempStream(fopen('php://memory', 'r+'))); $this->loadController($request, $response); return $response; }
public function createResponse() { $version = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1'; $response = new Response(); $response->setProtocolVersion($version); $response->setHeader('X-Powered-By', 'psx'); $response->setBody(new TempStream(fopen('php://temp', 'r+'))); return $response; }
public function testFileExists() { $request = new Request(new Url('http://localhost'), 'GET', array('Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')); $response = new Response(); $response->setBody(new StringStream()); $filterChain = $this->getMockBuilder('PSX\\Dispatch\\FilterChain')->setConstructorArgs(array(array()))->setMethods(array('handle'))->getMock(); $filterChain->expects($this->never())->method('handle'); $handle = new Backstage(__DIR__ . '/backstage.htm'); $handle->handle($request, $response, $filterChain); $this->assertEquals('foobar', (string) $response->getBody()); }
public function testWrongMethod() { $request = new Request(new Url('http://localhost'), 'GET'); $response = new Response(); $response->setBody(new StringStream()); $filter = $this->getMockBuilder('PSX\\Dispatch\\FilterInterface')->setMethods(array('handle'))->getMock(); $filter->expects($this->never())->method('handle'); $filterChain = $this->getMockBuilder('PSX\\Dispatch\\FilterChain')->setConstructorArgs(array(array()))->setMethods(array('handle'))->getMock(); $filterChain->expects($this->once())->method('handle')->with($this->equalTo($request), $this->equalTo($response)); $handle = new RequestMethodChoice(array('POST', 'PUT', 'DELETE'), $filter); $handle->handle($request, $response, $filterChain); }
public function testHeaderExist() { $body = new TempStream(fopen('php://memory', 'r+')); $body->write('foobar'); $request = new Request(new Url('http://localhost'), 'GET'); $response = new Response(); $response->setHeader('Content-MD5', 'foobar'); $response->setBody($body); $filter = new ContentMd5(); $filter->handle($request, $response, $this->getMockFilterChain($request, $response)); $this->assertEquals('foobar', $response->getHeader('Content-MD5')); }
public function testToString() { $body = new StringStream(); $body->write('foobar'); $response = new Response(200); $response->setHeader('Content-Type', 'text/html; charset=UTF-8'); $response->setBody($body); $httpResponse = 'HTTP/1.1 200 OK' . Http::$newLine; $httpResponse .= 'content-type: text/html; charset=UTF-8' . Http::$newLine; $httpResponse .= Http::$newLine; $httpResponse .= 'foobar'; $this->assertEquals($httpResponse, (string) $response); }
/** * @param string $method * @param string $path * @param array|null $body * @return mixed */ public function request($method, $path, $body = null, $verbose = false) { $header = ['User-Agent' => 'Fusio-System v' . Base::getVersion(), 'Authorization' => 'Bearer ' . $this->getAccessToken()]; $body = $body !== null ? Parser::encode($body) : null; $request = new Request(new Url('http://127.0.0.1/backend/' . $path), $method, $header, $body); $response = new Response(); $response->setBody(new TempStream(fopen('php://memory', 'r+'))); $this->logger->pushHandler($verbose ? new StreamHandler(STDOUT) : new NullHandler()); $this->dispatch->route($request, $response, null, false); $this->logger->popHandler(); $body = (string) $response->getBody(); $data = Parser::decode($body, false); return $data; }
protected function execute(InputInterface $input, OutputInterface $output) { // request $baseUrl = new Url($this->config['psx_url']); $baseUrl = $baseUrl->withPath(null); $parser = new RequestParser($baseUrl, RequestParser::MODE_LOOSE); $request = $parser->parse($this->reader->read()); // response $response = new Response(); $response->setHeader('X-Powered-By', 'psx'); $response->setBody(new TempStream(fopen('php://memory', 'r+'))); // dispatch request $this->dispatch->route($request, $response); // determine return code return $response->getStatusCode() >= 400 && $response->getStatusCode() < 600 ? 1 : 0; }
public function testRequest() { $testCase = $this; $http = new Http(new Callback(function ($request) use($testCase) { $body = new TempStream(fopen('php://memory', 'r+')); $response = new Response(); $response->setBody($body); $testCase->loadController($request, $response); return $response; })); $url = new Url('http://127.0.0.1/oembed?url=http%3A%2F%2F127.0.0.1%2Fresource'); $request = new GetRequest($url); $response = $http->request($request); $expect = array('url' => 'http://127.0.0.1/resource.png', 'width' => 640, 'height' => 480, 'author_name' => 'foobar'); $this->assertEquals(200, $response->getStatusCode()); $this->assertJsonStringEqualsJsonString(json_encode($expect), (string) $response->getBody()); }
public function __doRequest($body, $location, $action, $version, $oneWay = null) { $method = parse_url($action, PHP_URL_FRAGMENT); $header = array('Content-Type' => 'application/soap+xml', 'Accept' => 'application/soap+xml'); $request = new Request(new Url($location), $method, $header, $body); $body = new TempStream(fopen('php://memory', 'r+')); $response = new Response(); $response->setBody($body); $controller = $this->testCase->doLoadController($request, $response); $body = (string) $response->getBody(); return $body; }
public function testVerify() { $request = new GetRequest(new Url('http://127.0.0.1/callback?hub.mode=subscribe&hub.topic=http%3A%2F%2F127.0.0.1%2Ftopic&hub.challenge=foobar')); $body = new TempStream(fopen('php://memory', 'r+')); $response = new Response(); $response->setBody($body); $this->loadController($request, $response); $this->assertEquals(200, $response->getStatusCode()); $this->assertEquals('foobar', (string) $response->getBody()); }
protected function doCheckAuthentication(Url $url) { $params = $url->getParams(); $params['openid_mode'] = 'check_authentication'; $data = http_build_query($params, '', '&'); $body = new TempStream(fopen('php://memory', 'r+')); $request = new Request(new Url('http://127.0.0.1/openid'), 'POST', array('Content-Type' => 'application/x-www-urlencoded'), $data); $response = new Response(); $response->setBody($body); $controller = $this->loadController($request, $response); $body = (string) $response->getBody(); $data = OpenId::keyValueDecode($body); $this->assertEquals('http://specs.openid.net/auth/2.0', $data['ns']); $this->assertEquals('true', $data['is_valid']); }
protected function submitData(InstructionAbstract $instruction, $endpoint) { $header = ['User-Agent' => 'Fusio-Installer v' . Base::getVersion(), 'Authorization' => 'Bearer ' . $this->getAccessToken()]; $body = Json::encode($this->substituteParameters($instruction->getPayload())); $request = new PostRequest(new Url('http://127.0.0.1/' . $endpoint), $header, $body); $response = new Response(); $response->setBody(new TempStream(fopen('php://memory', 'r+'))); $this->dispatch->route($request, $response); $body = (string) $response->getBody(); $data = Json::decode($body, false); if (isset($data->success) && $data->success === true) { // installation successful $message = isset($data->message) ? $data->message : 'Insert ' . $instruction->getName() . ' successful'; $this->logger->notice($message); } else { $message = isset($data->message) ? $data->message : 'Unknown error occured'; throw new RuntimeException($message); } }