function it_should_return_redirect_uri_from_authorization_code(IAuthorizationCode $authorizationCode) { $authorizationCode->getId()->willReturn('pompom')->shouldBeCalled(); $authorizationCode->getRedirectUri()->willReturn('http://google.com')->shouldBeCalled(); $authorizationCode->getState()->willReturn('pom')->shouldBeCalled(); $this->getRedirectUri()->shouldReturn('http://google.com?code=pompom&state=pom'); }
/** * Gets redirect uri (used in redirecting back to client) * * @return null|string */ public function getRedirectUri() { // find ? in redirect uri and determine if is last character // if not, we assume that there are query params so we add & // otherwise just add http query params $uri = $this->authorizationCode->getRedirectUri(); $state = $this->authorizationCode->getState(); $query = strpos($uri, '?'); if ($query === false) { $uri .= '?'; } else { if ($query !== strlen($uri) - 1) { $uri .= '&'; } } return $uri . http_build_query(['code' => $this->authorizationCode->getId()] + ($state ? ['state' => $state] : [])); }