Scalr\Tests\Functional\Api\V2\ApiTest::assertGetEndpoint PHP Method

assertGetEndpoint() public method

Return list of Objects available in this account or environment
public assertGetEndpoint ( string $uri, ListResponse $apiResp, array $filters = [], boolean $collect = true, null | integer $maxResults = null ) : array
$uri string Request uri
$apiResp Scalr\Tests\Functional\Api\V2\SpecSchema\DataTypes\ListResponse schema current object generated of api specification
$filters array optional Filterable properties
$collect boolean optional Collect response data
$maxResults null | integer optional max list results
return array
    public function assertGetEndpoint($uri, $apiResp, array $filters = [], $collect = true, $maxResults = null)
    {
        $envelope = null;
        $objects = [];
        $constraint = new ResponseBodyConstraint($apiResp);
        if ($apiResp instanceof ListResponse) {
            do {
                $params = $filters;
                if ($maxResults) {
                    $params[ApiController::QUERY_PARAM_MAX_RESULTS] = $maxResults;
                }
                if (isset($envelope->pagination->next)) {
                    $parts = parse_url($envelope->pagination->next);
                    parse_str($parts['query'], $params);
                }
                $response = $this->request($uri, Request::METHOD_GET, $params);
                $this->assertEquals(200, $response->status, sprintf('%s. Api url %s', $this->printResponseError($response), $uri));
                /* @var  $envelope ListResultEnvelope */
                $envelope = $response->getBody();
                $this->assertNotEmpty($envelope);
                $this->assertObjectHasAttribute('meta', $envelope);
                $this->assertObjectHasAttribute('data', $envelope);
                $this->assertObjectHasAttribute('pagination', $envelope);
                $this->assertObjectNotHasAttribute('errors', $envelope);
                $this->assertThat($envelope, $constraint, "Api url {$uri}");
                if ($collect) {
                    $objects[] = $envelope->data;
                }
            } while (!empty($envelope->pagination->next) && !$maxResults);
        } else {
            $response = $this->request($uri, Request::METHOD_GET, $filters);
            $this->assertEquals(200, $response->status, sprintf('%s. Api url %s', $this->printResponseError($response), $uri));
            /* @var $envelope ResultEnvelope */
            $envelope = $response->getBody();
            $this->assertNotEmpty($envelope);
            $this->assertObjectHasAttribute('meta', $envelope);
            $this->assertObjectHasAttribute('data', $envelope);
            $this->assertObjectNotHasAttribute('errors', $envelope);
            $this->assertThat($envelope, $constraint, "Api url {$uri}");
            if ($collect) {
                $objects[] = [$envelope->data];
            }
        }
        return empty($objects) ? [] : call_user_func_array('array_merge', $objects);
    }