/**
* Test for user Api endpoints
* Data provider prepares data for Api request
* UserSpec get responses definition from user specifications for each endpoint
* ResponseBodyConstraint compares Api definition with request
*
* @param string $path Api endpoint
* @param string $method HTTP method
* @param int $responseCode HTTP code
* @param array $params Array of path parameters
* @param array $filterable Array of GET parameters
* @param array $body Array of POST parameters
* @param string $entityClass Entity class name
* @test
*/
public function testApiV2User($path = null, $method = null, $responseCode = null, $params = null, $filterable = null, $body = null, $entityClass = null)
{
$this->markTestSkipped('Fixtures don\'t implemented yet');
$method = strtoupper($method);
$params['envId'] = self::$testEnvId;
$requestUrl = '/api/' . static::$apiVersion . '/user' . $this->matchApiUrl($path, $params);
$response = $this->request($requestUrl, $method, $filterable, $body);
$apiResp = static::$userSpec->getResponse($path, $method, $responseCode);
// delete created object
if (Request::METHOD_POST === $method && isset($response->getBody()->data)) {
self::toDelete($entityClass, $response->getBody()->data->id);
}
if (Request::METHOD_GET === $method && 200 == $response) {
$objects = $this->assertGetEndpoint($requestUrl, $apiResp);
foreach ($objects as $object) {
foreach ($filterable as $property) {
$filterValue = $object->{$property};
$this->assertGetEndpoint($requestUrl, $apiResp, [$property => $filterValue]);
}
}
} else {
$this->assertEquals($responseCode, $response->status, $this->printResponseError($response));
$this->assertThat($response->getBody(), new ResponseBodyConstraint($apiResp));
}
}