public function testGetUrlFormatsAUrl()
 {
     $request = new Request();
     $request->setHost('http://example.com');
     $request->setResource('/resource/123');
     $this->assertEquals('http://example.com/resource/123', $request->getUrl());
 }
 /**
  * @param ConfigurationInterface $configuration
  * @param PayURequestInterface   $request
  *
  * @return Request
  */
 public function build(ConfigurationInterface $configuration, PayURequestInterface $request)
 {
     $curlRequest = new Request();
     if (PayURequestInterface::METHOD_POST === $request->getMethod()) {
         $curlRequest->setContent($this->serializer->toJson($request->getDataObject()));
     }
     $curlRequest->setHost(sprintf('%s://%s/', $configuration->getProtocol(), $configuration->getDomain()));
     $curlRequest->setResource(sprintf('%s/%s/%s', $configuration->getPath(), $configuration->getVersion(), $request->getPath()));
     $curlRequest->setMethod($request->getMethod());
     $this->addHeaders($curlRequest, $configuration);
     return $curlRequest;
 }
 /**
  * @test
  */
 public function shouldAllowFactoryHttpExceptionFromRequestAndResponse()
 {
     $request = new Request();
     $request->setHost('http://example.com');
     $request->setResource('/foobar');
     $response = new Response();
     $response->setHeaders(array('HTTP/1.1 404 Not Found'));
     $httpException = HttpException::factory($request, $response);
     $this->assertInstanceOf('Payum\\Core\\Exception\\Http\\HttpException', $httpException);
     $this->assertSame($request, $httpException->getRequest());
     $this->assertSame($response, $httpException->getResponse());
     $this->assertEquals("Client error response\n[status code] 404\n[reason phrase] Not Found\n[url] http://example.com/foobar", $httpException->getMessage());
     $this->assertEquals(404, $httpException->getCode());
 }
示例#4
0
 /**
  * Helper to send requests to Metrics API.
  *
  * @param string $path Path after metrics api version.
  * @param string $method HTTP Mthod, 'GET' or 'POST'.
  * @param array<string,array> $data Metrics data.
  *
  * @return stdClass
  */
 protected function request($path, $method, array $data = array())
 {
     $request = new Request();
     $response = new Response();
     $transport = $this->getTransport();
     $request->setMethod($method);
     $request->setResource($this->buildPath($path));
     $request->setHost(self::URI);
     $request->addHeader('Authorization: Basic ' . base64_encode($this->getAuthCredentials()));
     $request->addHeader('User-Agent: ' . $this->getUserAgent());
     if (count($data)) {
         $request->addHeader('Content-Type: application/json');
         $request->setContent(json_encode($data));
     }
     $transport->send($request, $response);
     return json_decode($response->getContent());
 }
示例#5
0
 public function testDigestAuthHeader()
 {
     $request = new Message\Request();
     $request->setMethod('GET');
     $request->setResource('/auth-digest');
     $request->setHost('http://test.webdav.org');
     $request->setProtocolVersion('1.1');
     $response = new Message\Response();
     $response->setHeaders(array("Date: Wed, 24 Jun 2015 21:49:39 GMT", "Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.3.2", "WWW-Authenticate: Digest realm=\"test\", nonce=\"5PvRe0oZBQA=874ad6aea3519069f30dfc704e594dde6e01b2a6\", algorithm=MD5, domain=\"/auth-digest/\", qop=\"auth\"", "Content-Length: 401", "Content-Type: text/html; charset=iso-8859-1"));
     $response->setContent("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>401 Authorization Required</title>\n</head><body>\n<h1>Authorization Required</h1>\n<p>This server could not verify that you\nare authorized to access the document\nrequested.  Either you supplied the wrong\ncredentials (e.g., bad password), or your\nbrowser doesn\\'t understand how to supply\nthe credentials required.</p>\n</body></html>");
     // Simulate the First Request/Response, where the server returns 401
     $listener = new DigestAuthListener('user1', 'user1');
     $listener->preSend($request);
     $listener->postSend($request, $response);
     // Simulate sending the second Request using the calculated Authorization Header
     $request = new Message\Request();
     $request->setMethod('GET');
     $request->setResource('/auth-digest');
     $request->setHost('http://test.webdav.org');
     $request->setProtocolVersion('1.1');
     $this->assertEmpty($request->getHeader('Authorization'));
     $listener->preSend($request);
     $this->assertEquals('Digest username="******", realm="test", nonce="5PvRe0oZBQA=874ad6aea3519069f30dfc704e594dde6e01b2a6", response="b2cf05a5d3f51d84a8866309aed6cb5d", uri="/auth-digest"', $request->getHeader('Authorization'));
 }
示例#6
0
 /**
  * Gets an info of user by the access token.
  *
  * @param string $token The access token
  *
  * @return UserInfo
  *
  * @throws Exception\AuthException
  * @throws Exception\NetworkException
  */
 public function getUserInfo($token)
 {
     if (empty($token)) {
         throw new \InvalidArgumentException('The access token cannot be empty.');
     }
     $request = new Request();
     $response = new Response();
     $request->setHost('https://login.yandex.ru');
     $request->setResource('/info?format=json');
     $request->addHeader('Authorization: OAuth ' . $token);
     try {
         $this->client->send($request, $response);
     } catch (ClientException $ex) {
         throw new Exception\NetworkException($ex, $request, $response);
     }
     if ($response->getStatusCode() === 200) {
         return new UserInfo($this->jsonDecode($response->getContent()));
     }
     throw new Exception\AuthException('Could not fetch user info. Reason: ' . $response->getContent(), $response->getStatusCode());
 }
示例#7
0
 public function testMatchesRequestChecksPath()
 {
     $request = new Message\Request();
     $request->setHost('http://example.com');
     $request->setResource('/foo/bar');
     $cookie = new Cookie();
     $cookie->setAttribute(Cookie::ATTR_DOMAIN, 'example.com');
     $cookie->setAttribute(Cookie::ATTR_PATH, '/foo');
     $this->assertTrue($cookie->matchesRequest($request));
     $cookie = new Cookie();
     $cookie->setAttribute(Cookie::ATTR_DOMAIN, 'example.com');
     $cookie->setAttribute(Cookie::ATTR_PATH, '/foo/bar/baz');
     $this->assertFalse($cookie->matchesRequest($request));
 }