client = $this->getMockBuilder("Google_Client") ->disableOriginalConstructor() ->getMock(); } public function testBasicFunctionality() { $this->client->expects($this->once()) ->method("getBasePath") ->will($this->returnValue("base_path")); $batch = new Google_Http_Batch($this->client); $this->assertAttributeEquals("base_path", "root_url", $batch); $this->assertAttributeEquals("batch", "batch_path", $batch); } public function testExtractionOfRootUrlFromService() { $this->client->expects($this->never()) ->method("getBasePath"); $service = new Google_Service($this->client); $service->rootUrl = "root_url_dummy"; $service->batchPath = "batch_path_dummy"; $batch = $service->createBatch(); $this->assertInstanceOf("Google_Http_Batch", $batch); $this->assertAttributeEquals("root_url_dummy", "root_url", $batch); $this->assertAttributeEquals("batch_path_dummy", "batch_path", $batch); } public function testExecuteCustomRootUrlBatchPath() { $io = $this->getMockBuilder('Google_IO_Abstract') ->disableOriginalConstructor() ->setMethods(array('makeRequest', 'needsQuirk', 'executeRequest', 'setOptions', 'setTimeout', 'getTimeout')) ->getMock(); $req = null; $io->expects($this->once()) ->method("makeRequest") ->will($this->returnCallback(function($request) use (&$req) { $req = $request; return $request; })); $this->client->expects($this->once()) ->method("getIo") ->will($this->returnValue($io)); $batch = new Google_Http_Batch($this->client, false, 'https://www.example.com/', 'bat'); $this->assertNull($batch->execute()); $this->assertInstanceOf("Google_Http_Request", $req); $this->assertEquals("https://www.example.com/bat", $req->getUrl()); } public function testExecuteBodySerialization() { $io = $this->getMockBuilder('Google_IO_Abstract') ->disableOriginalConstructor() ->setMethods(array('makeRequest', 'needsQuirk', 'executeRequest', 'setOptions', 'setTimeout', 'getTimeout')) ->getMock(); $req = null; $io->expects($this->once()) ->method("makeRequest") ->will($this->returnCallback(function($request) use (&$req) { $req = $request; return $request; })); $this->client->expects($this->once()) ->method("getIo") ->will($this->returnValue($io)); $batch = new Google_Http_Batch($this->client, "BOUNDARY_TEXT", 'https://www.example.com/', 'bat'); $req1 = new Google_Http_Request("https://www.example.com/req1"); $req2 = new Google_Http_Request("https://www.example.com/req2", 'POST', array(), 'POSTBODY'); $batch->add($req1, '1'); $batch->add($req2, '2'); $this->assertNull($batch->execute()); $this->assertInstanceOf("Google_Http_Request", $req); $format = <<<'EOF' --BOUNDARY_TEXT Content-Type: application/http Content-Transfer-Encoding: binary MIME-Version: 1.0 Content-ID: 1 GET /req1? HTTP/1.1 --BOUNDARY_TEXT Content-Type: application/http Content-Transfer-Encoding: binary MIME-Version: 1.0 Content-ID: 2 POST /req2? HTTP/1.1 POSTBODY --BOUNDARY_TEXT-- EOF; $this->assertEquals($format, $req->getPostBody()); } }