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] : []));
 }