Exemplo n.º 1
0
 protected function validateScenarioNameOrThrowException(Expectation $expectation, LoggerInterface $logger)
 {
     if (!$expectation->getScenarioName() && ($expectation->getScenarioStateIs() || $expectation->getNewScenarioState())) {
         $logger->error('Scenario name related misconfiguration');
         throw new \RuntimeException('Expecting or trying to set scenario state without specifying scenario name');
     }
 }
Exemplo n.º 2
0
 /**
  *
  * @param \Mcustiel\Phiremock\Domain\Expectation $foundExpectation
  */
 private function processScenario($foundExpectation)
 {
     if ($foundExpectation->getNewScenarioState()) {
         if (!$foundExpectation->getScenarioName()) {
             throw new \RuntimeException('Expecting scenario state without specifying scenario name');
         }
         $this->scenarioStorage->setScenarioState($foundExpectation->getScenarioName(), $foundExpectation->getNewScenarioState());
     }
 }
Exemplo n.º 3
0
 public function createResponse(Expectation $expectation, TransactionData $transactionData)
 {
     $responseConfig = $expectation->getResponse();
     $httpResponse = $transactionData->getResponse();
     $httpResponse = $this->getResponseWithBody($responseConfig, $httpResponse);
     $httpResponse = $this->getResponseWithStatusCode($responseConfig, $httpResponse);
     $httpResponse = $this->getResponseWithHeaders($responseConfig, $httpResponse);
     $this->processDelay($responseConfig);
     return $httpResponse;
 }
Exemplo n.º 4
0
 private function getResponseWithBody(Expectation $expectation, ResponseInterface $httpResponse, ServerRequestInterface $httpRequest)
 {
     $responseBody = $expectation->getResponse()->getBody();
     if ($responseBody) {
         $responseBody = $this->fillWithUrlMatches($expectation, $httpRequest, $responseBody);
         $responseBody = $this->fillWithBodyMatches($expectation, $httpRequest, $responseBody);
         $httpResponse = $httpResponse->withBody(new StringStream($responseBody));
     }
     return $httpResponse;
 }
 public function failOnEmptyHeadersInspecificationTest(AcceptanceTester $I)
 {
     $I->wantTo('fail when creating a specification with invalid headers');
     $request = new Request();
     $request->setUrl(new Condition('isEqualTo', '/the/request/url'));
     $response = (new Response())->setHeaders('potato');
     $specification = new Expectation();
     $specification->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $specification);
     $I->seeResponseCodeIs(500);
 }
Exemplo n.º 6
0
 public function failWhenInvalidValueSpecifiedTest(AcceptanceTester $I)
 {
     $I->wantTo('create an expectation that checks url using matches');
     $request = new Request();
     $request->setUrl(new Condition('isEqualTo', null));
     $response = new Response();
     $response->setStatusCode(201);
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(500);
     $I->seeResponseIsJson();
     $I->seeResponseEquals('{"result" : "ERROR", "details" : ["Condition value can not be null"]}');
 }
 public function useDefaultWhenNoStatusCodeIsSetTest(AcceptanceTester $I)
 {
     $I->wantTo('fail when the status code is not set');
     $request = new Request();
     $request->setUrl(new Condition('isEqualTo', '/the/request/url'));
     $response = (new Response())->setStatusCode(null);
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(201);
     $I->sendGET('/__phiremock/expectations');
     $I->seeResponseCodeIs(200);
     $I->seeResponseIsJson();
     $I->seeResponseEquals('[{"scenarioName":null,"scenarioStateIs":null,"newScenarioState":null,' . '"request":{"method":null,"url":{"isEqualTo":"\\/the\\/request\\/url"},"body":null,"headers":null},' . '"response":{"statusCode":200,"body":null,"headers":null,"delayMillis":null},' . '"proxyTo":null,"priority":0}]');
 }
Exemplo n.º 8
0
 public function returnCreatedExpectationTest(AcceptanceTester $I)
 {
     $request = new Request();
     $urlCondition = new Condition('isEqualTo', '/the/request/url');
     $request->setUrl($urlCondition);
     $response = new Response();
     $response->setStatusCode(201);
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->sendGET('/__phiremock/expectations');
     $I->seeResponseCodeIs('200');
     $I->seeResponseIsJson();
     $I->seeResponseEquals('[{"scenarioName":null,"scenarioStateIs":null,"newScenarioState":null,' . '"request":{"method":null,"url":{"isEqualTo":"\\/the\\/request\\/url"},"body":null,"headers":null},' . '"response":{"statusCode":201,"body":null,"headers":null,"delayMillis":null},' . '"proxyTo":null,"priority":0}]');
 }
Exemplo n.º 9
0
 public function mockRequestWithDelayTest(AcceptanceTester $I)
 {
     $I->wantTo('mock a request with delay');
     $request = new Request();
     $request->setUrl(new Condition('isEqualTo', '/the/request/url'))->setMethod('GET');
     $response = new Response();
     $response->setDelayMillis(2000);
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(201);
     $start = microtime(true);
     $I->sendGET('/the/request/url');
     $I->seeResponseCodeIs(200);
     $I->assertGreaterThan(2000, (microtime(true) - $start) * 1000);
 }
 private function checkScenarioNameOrThrowException(Expectation $expectation)
 {
     if (!$expectation->getScenarioName()) {
         throw new \RuntimeException('Expecting scenario state without specifying scenario name');
     }
 }
Exemplo n.º 11
0
 public function responseExpectedWhenSeveralHeadersMatchesTest(AcceptanceTester $I)
 {
     $I->wantTo('see if mocking based in several request headers works');
     $request = new Request();
     $request->setHeaders(['Content-type' => new Condition('isEqualTo', 'application/x-www-form-urlencoded'), 'X-Potato' => new Condition('matches', '/.*tomato.*/'), 'X-Tomato' => new Condition('isSameString', 'PoTaTo')]);
     $response = new Response();
     $response->setBody('Found');
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(201);
     $I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded');
     $I->sendGET('/dontcare');
     $I->seeResponseCodeIs(404);
     $I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded');
     $I->haveHttpHeader('X-potato', 'a-tomato-0');
     $I->haveHttpHeader('X-tomato', 'potato');
     $I->sendGET('/dontcare');
     $I->seeResponseEquals('Found');
 }
Exemplo n.º 12
0
 public function responseExpectedWhenRequestBodyCaseInsensitiveEqualsTest(AcceptanceTester $I)
 {
     $I->wantTo('see if mocking based in request body case insensitive equality works');
     $request = new Request();
     $request->setBody(new Condition('isSameString', 'pOtAtO'));
     $response = new Response();
     $response->setBody('Found');
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(201);
     $I->sendPOST('/dontcare', 'potato');
     $I->seeResponseCodeIs(200);
     $I->seeResponseEquals('Found');
 }
Exemplo n.º 13
0
 public function countExecutionsTest(AcceptanceTester $I)
 {
     $I->sendDELETE('/__phiremock/executions');
     $expectation = new Expectation();
     $request = new Request();
     $request->setMethod('get');
     $request->setUrl(new Condition('isEqualTo', '/potato'));
     $response = new Response();
     $response->setStatusCode(201);
     $response->setBody('Tomato!');
     $expectation->setRequest($request)->setResponse($response);
     $this->phiremock->createExpectation($expectation);
     $I->sendGET('/potato');
     $I->seeResponseCodeIs(201);
     $I->seeResponseEquals('Tomato!');
     $I->sendGET('/potato');
     $count = $this->phiremock->countExecutions(A::getRequest()->andUrl(Is::equalTo('/potato')));
     $I->assertEquals(2, $count);
 }
Exemplo n.º 14
0
 /**
  *
  * {@inheritdoc}
  *
  * @see \Mcustiel\Phiremock\Server\Utils\Strategies\ResponseCreatorInterface::createResponse()
  */
 public function createResponse(Expectation $expectation, TransactionData $transactionData)
 {
     $url = $expectation->getProxyTo();
     $this->logger->debug('Proxying request to : ' . $url);
     return $this->httpService->send($transactionData->getRequest()->withUri(new Uri($url)));
 }
Exemplo n.º 15
0
 /**
  * @param \Mcustiel\Phiremock\Domain\Expectation $expectation
  */
 private function setScenario(Expectation $expectation)
 {
     if ($this->scenarioName && $this->scenarioIs) {
         $expectation->setScenarioName($this->scenarioName)->setScenarioStateIs($this->scenarioIs);
     }
 }
Exemplo n.º 16
0
 public function failWhenInvalidMethodSpecifiedTest(AcceptanceTester $I)
 {
     $I->wantTo('create a specification that checks url using matches');
     $request = new Request();
     $request->setMethod('potato');
     $response = new Response();
     $response->setStatusCode(201);
     $expectation = new Expectation();
     $expectation->setRequest($request)->setResponse($response);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs(500);
     $I->seeResponseIsJson();
     $I->seeResponseEquals('{"result" : "ERROR", "details" : {"request":"method: Field method, was set with invalid value: \'potato\'"}}');
 }
Exemplo n.º 17
0
 private function requestBodyOrUrlAreRegexp(Expectation $expectation)
 {
     return $expectation->getRequest()->getBody() && $expectation->getRequest()->getBody()->getMatcher() == Matchers::MATCHES || $expectation->getRequest()->getUrl() && $expectation->getRequest()->getUrl()->getMatcher() == Matchers::MATCHES;
 }
Exemplo n.º 18
0
 public function useDefaultWhenEmptyResponseTest(AcceptanceTester $I)
 {
     $I->wantTo('When response is empty in request, default should be used');
     $request = new Request();
     $request->setMethod('get');
     $expectation = new Expectation();
     $expectation->setRequest($request);
     $I->haveHttpHeader('Content-Type', 'application/json');
     $I->sendPOST('/__phiremock/expectations', $expectation);
     $I->seeResponseCodeIs('201');
     $I->sendGET('/__phiremock/expectations');
     $I->seeResponseCodeIs('200');
     $I->seeResponseIsJson();
     $I->seeResponseEquals('[{"scenarioName":null,"scenarioStateIs":null,"newScenarioState":null,' . '"request":{"method":"get","url":null,"body":null,"headers":null},' . '"response":{"statusCode":200,"body":null,"headers":null,"delayMillis":null},' . '"proxyTo":null,"priority":0}]');
 }