withParsedBody([ 'client_id' => 'foo', ]) ->withAddedHeader('Authorization', 'Basic fakeauthdetails'); try { $this->issueInvalidClientException($serverRequest); } catch (OAuthServerException $e) { $response = $e->generateHttpResponse(new Response()); $this->assertTrue($response->hasHeader('WWW-Authenticate')); } } public function testInvalidClientExceptionOmitsAuthenticateHeader() { $serverRequest = (new ServerRequest()) ->withParsedBody([ 'client_id' => 'foo', ]); try { $this->issueInvalidClientException($serverRequest); } catch (OAuthServerException $e) { $response = $e->generateHttpResponse(new Response()); $this->assertFalse($response->hasHeader('WWW-Authenticate')); } } /** * Issue an invalid client exception * * @throws OAuthServerException */ private function issueInvalidClientException($serverRequest) { $clientRepositoryMock = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock(); $clientRepositoryMock->method('validateClient')->willReturn(false); $grantMock = $this->getMockForAbstractClass(AbstractGrant::class); $grantMock->setClientRepository($clientRepositoryMock); $abstractGrantReflection = new \ReflectionClass($grantMock); $validateClientMethod = $abstractGrantReflection->getMethod('validateClient'); $validateClientMethod->setAccessible(true); $validateClientMethod->invoke($grantMock, $serverRequest); } public function testHasRedirect() { $exceptionWithRedirect = OAuthServerException::accessDenied('some hint', 'https://example.com/error'); $this->assertTrue($exceptionWithRedirect->hasRedirect()); } public function testDoesNotHaveRedirect() { $exceptionWithoutRedirect = OAuthServerException::accessDenied('Some hint'); $this->assertFalse($exceptionWithoutRedirect->hasRedirect()); } }