Ejemplo n.º 1
0
 /**
  * @test
  */
 public function it_can_send_a_payload()
 {
     $self = $this;
     $token = 'fake-token';
     $mockRequestData = ['fruit' => 'apple', 'token' => $token];
     $mockResponseData = ['ok' => true, 'fruit' => 'apple'];
     $handler = HandlerStack::create(new MockHandler([new Response(200, [], json_encode($mockResponseData))]));
     $historyContainer = [];
     $history = Middleware::history($historyContainer);
     $handler->push($history);
     $apiClient = new ApiClient($token, new Client(['handler' => $handler]));
     $apiClient->addRequestListener(function (RequestEvent $event) use(&$eventsDispatched, $mockRequestData, $self) {
         $eventsDispatched[ApiClient::EVENT_REQUEST] = true;
         $self->assertEquals($mockRequestData, $event->getRawPayload());
     });
     $apiClient->addResponseListener(function (ResponseEvent $event) use(&$eventsDispatched, $mockResponseData, $self) {
         $eventsDispatched[ApiClient::EVENT_RESPONSE] = true;
         $self->assertEquals($mockResponseData, $event->getRawPayloadResponse());
     });
     $payload = new PayloadMock();
     $payload->setFruit($mockRequestData['fruit']);
     $apiClient->send($payload);
     $transaction = $historyContainer[0];
     $requestUrl = (string) $transaction['request']->getUri();
     $requestContentType = $transaction['request']->getHeader('content-type')[0];
     parse_str($transaction['request']->getBody(), $requestBody);
     $responseBody = json_decode($transaction['response']->getBody(), true);
     $this->assertEquals(ApiClient::API_BASE_URL . 'mock', $requestUrl);
     $this->assertEquals('application/x-www-form-urlencoded', $requestContentType);
     $this->assertEquals($mockRequestData, $requestBody);
     $this->assertEquals($mockResponseData, $responseBody);
     $this->assertArrayHasKey(ApiClient::EVENT_REQUEST, $eventsDispatched);
     $this->assertArrayHasKey(ApiClient::EVENT_RESPONSE, $eventsDispatched);
 }
Ejemplo n.º 2
0
 /**
  * @test
  */
 public function it_can_be_serialized()
 {
     $payload = new PayloadMock();
     $payload->setFruit('apple');
     $serializedPayload = $this->payloadSerializer->serialize($payload);
     $this->assertInternalType('array', $serializedPayload);
     $this->assertArrayHasKey('fruit', $serializedPayload);
     $this->assertEquals($payload->getFruit(), $serializedPayload['fruit']);
 }