public function testCreateAuthUrl()
    {
        $Client = new WebServerApplication();
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=&access_type=online&approval_prompt=auto
EOD
, $Client->createAuthUrl([]));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=online&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher']));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=online&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], ''));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=online&approval_prompt=auto&state=SOMEstate
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], 'SOMEstate'));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=online&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=online&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_ONLINE));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=auto
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE, WebServerApplication::APPROVAL_PROMPT_AUTO));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=force
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE, WebServerApplication::APPROVAL_PROMPT_FORCE));
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=force&login_hint=my_hint
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE, WebServerApplication::APPROVAL_PROMPT_FORCE, 'my_hint'));
        $Client->setClientId('ClieNTID');
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=ClieNTID&redirect_uri=&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=force&login_hint=my_hint
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE, WebServerApplication::APPROVAL_PROMPT_FORCE, 'my_hint'));
        $Client->setRedirectUri('http:/example.com/oauth2callback');
        $this->assertEquals(<<<'EOD'
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=ClieNTID&redirect_uri=http%3A%2Fexample.com%2Foauth2callback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fandroidpublisher&access_type=offline&approval_prompt=force&login_hint=my_hint
EOD
, $Client->createAuthUrl(['https://www.googleapis.com/auth/androidpublisher'], '', WebServerApplication::RESPONSE_TYPE_CODE, WebServerApplication::ACCESS_TYPE_OFFLINE, WebServerApplication::APPROVAL_PROMPT_FORCE, 'my_hint'));
    }