/** * @test */ public function testConstruction() { $authToken = AuthToken::loadJson('{"access":{"token":{"expires": "2012-09-14T15:11:57.585-05:00","id": "858fb4c2-bf15-4dac-917d-8ec750ae9baa","tenant": {"id": "010101","name": "0101012"}}}}'); $this->checkToken($authToken); $d = $authToken->getAuthDocument(); $authToken = new AuthToken(); $authToken->setExpires(new \DateTime('2012-09-14T15:11:57.585-05:00'))->setId('858fb4c2-bf15-4dac-917d-8ec750ae9baa')->setTenantId('010101')->setTenantName('0101012')->setAuthDocument($d)->setRegionEndpoints(array())->setZones(array()); $this->checkToken($authToken); unset($authToken); unset($authToken); }
/** * @test */ public function testConstruction() { $authToken = LoaderFactory::makeToken(new RestClientResponse(new HttpMessage('HTTP/1.1 200 OK Content-Type: application/json; charset utf-8 {"access":{"token":{"expires": "2012-09-14T15:11:57.585-05:00","id": "858fb4c2-bf15-4dac-917d-8ec750ae9baa","tenant": {"id": "010101","name": "0101012"}}}}'), AppFormat::json())); $this->checkToken($authToken); $d = $authToken->getAuthDocument(); $authToken = new AuthToken(); $authToken->setExpires(new \DateTime('2012-09-14T15:11:57.585-05:00'))->setId('858fb4c2-bf15-4dac-917d-8ec750ae9baa')->setTenantId('010101')->setTenantName('0101012')->setAuthDocument($d)->setRegionEndpoints(array())->setZones(array()); $this->checkToken($authToken); unset($authToken); unset($authToken); }
/** * {@inheritdoc} * @see LoaderInterface::loadJson() */ public static function loadJson(ClientResponseInterface $response) { $token = $response->getHeader('X-Subject-Token'); $jsonString = $response->getContent(); $obj = json_decode($jsonString); if (empty($token)) { $invalid = true; } if (isset($invalid) || !isset($obj->token->expires_at)) { throw new InvalidArgumentException("Malformed JSON document " . (string) $jsonString); } $regions = $services = []; if (!empty($obj->token->catalog)) { foreach ($obj->token->catalog as $srv) { foreach ($srv->endpoints as $srvEndpoint) { $url = $srvEndpoint->url; $srvVersion = OpenStackConfig::parseIdentityVersion($url); if (isset($srvEndpoint->region)) { $regions[$srvEndpoint->region] = true; $endpointRegion = $srvEndpoint->region; } else { $endpointRegion = ''; } if (!isset($services[$srv->type][$endpointRegion][$srvVersion])) { $services[$srv->type][$endpointRegion][$srvVersion] = []; } $srvEndpoint->publicURL = $url; //Interface - can be public, internal or admin $services[$srv->type][$endpointRegion][$srvVersion][$srvEndpoint->interface] = $srvEndpoint; } } } $regions = array_keys($regions); $ret = new AuthToken(); $ret->setExpires(new DateTime($obj->token->expires_at))->setId($token)->setAuthDocument($obj)->setRegionEndpoints($services)->setZones($regions); if (isset($obj->token->project->id)) { $ret->setTenantId($obj->token->project->id); } if (isset($obj->token->project->name)) { $ret->setTenantName($obj->token->project->name); } return $ret; }
/** * {@inheritdoc} * @see LoaderInterface::loadJson() */ public static function loadJson(ClientResponseInterface $response) { $jsonString = $response->getContent(); $obj = json_decode($jsonString); if (!isset($obj->access->token)) { $invalid = true; } if (isset($invalid) || !isset($obj->access->token->expires) || !isset($obj->access->token->id)) { throw new InvalidArgumentException("Malformed JSON document " . (string) $jsonString); } $services = array(); $regions = array(); if (!empty($obj->access->serviceCatalog)) { foreach ($obj->access->serviceCatalog as $srv) { foreach ($srv->endpoints as $srvEndpoint) { $srvVersion = isset($srvEndpoint->versionId) ? $srvEndpoint->versionId . '' : ''; if (isset($srvEndpoint->region)) { $regions[$srvEndpoint->region] = true; $endpointRegion = $srvEndpoint->region; } else { $endpointRegion = ''; } if (!isset($services[$srv->type][$endpointRegion][$srvVersion])) { $services[$srv->type][$endpointRegion][$srvVersion] = array(); } $services[$srv->type][$endpointRegion][$srvVersion][] = $srvEndpoint; } } } $regions = array_keys($regions); $ret = new AuthToken(); $ret->setExpires(new DateTime($obj->access->token->expires))->setId($obj->access->token->id)->setAuthDocument($obj)->setRegionEndpoints($services)->setZones($regions); if (isset($obj->access->token->tenant->id)) { $ret->setTenantId($obj->access->token->tenant->id); } if (isset($obj->access->token->tenant->name)) { $ret->setTenantName($obj->access->token->tenant->name); } return $ret; }