Ejemplo n.º 1
0
 /**
  * While {@link runApiTests()} lets you run test for many API methods at once this one tests only one specific
  * API method and it goes via HTTP. While the other method lets you test only some methods starting with 'get'
  * this one lets you actually test any API method.
  */
 protected function runAnyApiTest($apiMethod, $apiId, $requestParams, $options = array())
 {
     $requestParams['module'] = 'API';
     $requestParams['format'] = 'XML';
     $requestParams['method'] = $apiMethod;
     $apiId = $apiMethod . '_' . $apiId . '.xml';
     $testName = 'test_' . static::getOutputPrefix();
     list($processedFilePath, $expectedFilePath) = $this->getProcessedAndExpectedPaths($testName, $apiId, $format = null, $compareAgainst = false);
     if (!array_key_exists('token_auth', $requestParams)) {
         $requestParams['token_auth'] = Fixture::getTokenAuth();
     }
     $response = $this->getResponseFromHttpAPI($requestParams);
     $processedResponse = new Response($response, $options, $requestParams);
     if (empty($compareAgainst)) {
         $processedResponse->save($processedFilePath);
     }
     try {
         $expectedResponse = Response::loadFromFile($expectedFilePath, $options, $requestParams);
     } catch (Exception $ex) {
         $this->handleMissingExpectedFile($expectedFilePath, $processedResponse);
         return;
     }
     try {
         $errorMessage = get_class($this) . ": Differences with expected in '{$processedFilePath}'";
         Response::assertEquals($expectedResponse, $processedResponse, $errorMessage);
     } catch (Exception $ex) {
         $this->comparisonFailures[] = $ex;
     }
     $this->printApiTestFailures();
 }