private function createClient()
 {
     $options = ['auth' => 'google_auth', 'exceptions' => false];
     if ($proxy = getenv('HTTP_PROXY')) {
         $options['proxy'] = $proxy;
         $options['verify'] = false;
     }
     // adjust constructor depending on guzzle version
     if (!$this->isGuzzle6()) {
         $options = ['defaults' => $options];
     }
     $httpClient = new GuzzleHttp\Client($options);
     $client = new Google_Client();
     $client->setApplicationName('google-api-php-client-tests');
     $client->setHttpClient($httpClient);
     $client->setScopes(["https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/urlshortener", "https://www.googleapis.com/auth/tasks", "https://www.googleapis.com/auth/adsense", "https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/drive"]);
     if ($this->key) {
         $client->setDeveloperKey($this->key);
     }
     list($clientId, $clientSecret) = $this->getClientIdAndSecret();
     $client->setClientId($clientId);
     $client->setClientSecret($clientSecret);
     $client->setCache($this->getCache());
     return $client;
 }
 public function testPrepareService()
 {
     $client = new Google_Client();
     $client->setScopes(array("scope1", "scope2"));
     $scopes = $client->prepareScopes();
     $this->assertEquals("scope1 scope2", $scopes);
     $client->setScopes(array("", "scope2"));
     $scopes = $client->prepareScopes();
     $this->assertEquals(" scope2", $scopes);
     $client->setScopes("scope2");
     $client->addScope("scope3");
     $client->addScope(array("scope4", "scope5"));
     $scopes = $client->prepareScopes();
     $this->assertEquals("scope2 scope3 scope4 scope5", $scopes);
     $client->setClientId('test1');
     $client->setRedirectUri('http://localhost/');
     $client->setState('xyz');
     $client->setScopes(array("http://test.com", "scope2"));
     $scopes = $client->prepareScopes();
     $this->assertEquals("http://test.com scope2", $scopes);
     $this->assertEquals('' . 'https://accounts.google.com/o/oauth2/auth' . '?response_type=code' . '&access_type=online' . '&client_id=test1' . '&redirect_uri=http%3A%2F%2Flocalhost%2F' . '&state=xyz' . '&scope=http%3A%2F%2Ftest.com%20scope2' . '&approval_prompt=auto', $client->createAuthUrl());
     $response = $this->getMock('Psr\\Http\\Message\\ResponseInterface');
     $response->expects($this->once())->method('getBody')->will($this->returnValue($this->getMock('Psr\\Http\\Message\\StreamInterface')));
     $http = $this->getMock('GuzzleHttp\\ClientInterface');
     $http->expects($this->once())->method('send')->will($this->returnValue($response));
     if ($this->isGuzzle5()) {
         $guzzle5Request = new GuzzleHttp\Message\Request('POST', '/');
         $http->expects($this->once())->method('createRequest')->will($this->returnValue($guzzle5Request));
     }
     $client->setHttpClient($http);
     $dr_service = new Google_Service_Drive($client);
     $this->assertInstanceOf('Google_Model', $dr_service->files->listFiles());
 }
 public function testNoExpectedClassForAltMediaWithHttpFail()
 {
     // set the "alt" parameter to "media"
     $arguments = [['alt' => 'media']];
     $request = new Request('GET', '/?alt=media');
     $body = Stream::factory('thisisnotvalidjson');
     $response = new Response(300, [], $body);
     $http = $this->getMockBuilder("GuzzleHttp\\Client")->disableOriginalConstructor()->getMock();
     $http->expects($this->once())->method('send')->will($this->returnValue($response));
     $http->expects($this->any())->method('createRequest')->will($this->returnValue(new Request('GET', '/?alt=media')));
     $http->expects($this->once())->method('send')->will($this->returnValue($response));
     $client = new Google_Client();
     $client->setHttpClient($http);
     $service = new Test_Google_Service($client);
     // set up mock objects
     $resource = new Google_Service_Resource($service, "test", "testResource", array("methods" => array("testMethod" => array("parameters" => array(), "path" => "method/path", "httpMethod" => "POST"))));
     try {
         $expectedClass = 'ThisShouldBeIgnored';
         $decoded = $resource->call('testMethod', $arguments, $expectedClass);
         $this->fail('should have thrown exception');
     } catch (Google_Service_Exception $e) {
         $this->assertEquals('thisisnotvalidjson', $e->getMessage());
     }
 }
 public function testExceptionMessage()
 {
     // set the "alt" parameter to "media"
     $request = new Request('GET', '/');
     $errors = [["domain" => "foo"]];
     $body = Psr7\stream_for(json_encode(['error' => ['errors' => $errors]]));
     $response = new Response(400, [], $body);
     $http = $this->getMockBuilder("GuzzleHttp\\Client")->disableOriginalConstructor()->getMock();
     $http->expects($this->once())->method('send')->will($this->returnValue($response));
     if ($this->isGuzzle5()) {
         $http->expects($this->once())->method('createRequest')->will($this->returnValue(new GuzzleHttp\Message\Request('GET', '/?alt=media')));
     }
     $client = new Google_Client();
     $client->setHttpClient($http);
     $service = new Test_Google_Service($client);
     // set up mock objects
     $resource = new Google_Service_Resource($service, "test", "testResource", array("methods" => array("testMethod" => array("parameters" => array(), "path" => "method/path", "httpMethod" => "POST"))));
     try {
         $decoded = $resource->call('testMethod', array(array()));
         $this->fail('should have thrown exception');
     } catch (Google_Service_Exception $e) {
         $this->assertEquals($errors, $e->getErrors());
     }
 }