/** * @test */ public function destroySessionCallsServerSessionRestService() { $ssoServer = new \Flowpack\SingleSignOn\Client\Domain\Model\SsoServer(); $ssoServer->setServiceBaseUri('http://ssodemoserver/test/sso'); $mockRequestEngine = m::mock('TYPO3\\Flow\\Http\\Client\\RequestEngineInterface'); $this->inject($ssoServer, 'requestEngine', $mockRequestEngine); $mockRequestSigner = m::mock('Flowpack\\SingleSignOn\\Client\\Security\\RequestSigner'); $this->inject($ssoServer, 'requestSigner', $mockRequestSigner); $mockRequestSigner->shouldReceive('signRequest')->andReturnUsing(function ($request) { return $request; }); $mockRequestEngine->shouldReceive('sendRequest')->with(m::on(function ($request) use(&$lastRequest) { $lastRequest = $request; return TRUE; }))->once()->andReturn(m::mock('TYPO3\\Flow\\Http\\Response', array('getStatusCode' => 200))); $mockSsoClient = m::mock('Flowpack\\SingleSignOn\\Client\\Domain\\Model\\SsoClient', array('getPublicKeyFingerprint' => 'ClientPublicKeyFingerprint', 'getServiceBaseUri' => 'http://ssodemoclient/sso')); $ssoServer->destroySession($mockSsoClient, 'test-session-id'); $this->assertStringStartsWith('http://ssodemoserver/test/sso/session/test-session-id/destroy', (string) $lastRequest->getUri()); $this->assertEquals('DELETE', $lastRequest->getMethod()); }
/** * Build a SSO server instance from settings * * @param string $serverIdentifier * @return \Flowpack\SingleSignOn\Client\Domain\Model\SsoServer */ public function create($serverIdentifier) { if (!isset($this->serverConfigurations[$serverIdentifier]) || !is_array($this->serverConfigurations[$serverIdentifier])) { throw new Exception('Invalid configuration for server "' . $serverIdentifier . '" in Flowpack.SingleSignOn.Client.server', 1351688340); } $serverConfiguration = $this->serverConfigurations[$serverIdentifier]; $ssoServer = new \Flowpack\SingleSignOn\Client\Domain\Model\SsoServer(); if (!isset($serverConfiguration['serviceBaseUri']) || (string) $serverConfiguration['serviceBaseUri'] === '') { throw new Exception('Missing serviceBaseUri setting in Flowpack.SingleSignOn.Client.server.' . $serverIdentifier, 1352719244); } $serverConfiguration['serviceBaseUri'] = rtrim($serverConfiguration['serviceBaseUri'], '/'); $ssoServer->setServiceBaseUri($serverConfiguration['serviceBaseUri']); $ssoServer->setEndpointUri($serverConfiguration['serviceBaseUri'] . '/authentication'); if (!isset($serverConfiguration['publicKeyFingerprint']) || (string) $serverConfiguration['publicKeyFingerprint'] === '') { throw new Exception('Missing publicKeyFingerprint setting for Flowpack.SingleSignOn.Client.server.' . $serverIdentifier, 1351688420); } $ssoServer->setPublicKey($serverConfiguration['publicKeyFingerprint']); if (!isset($serverConfiguration['publicKeyFingerprint']) || (string) $serverConfiguration['publicKeyFingerprint'] === '') { throw new Exception('Missing publicKeyFingerprint setting for Flowpack.SingleSignOn.Client.server.' . $serverIdentifier, 1351688420); } // TODO Set service base URI return $ssoServer; }