markTestSkipped('Proxy not available'); } } public function transportProvider() { return array( array('Requests_Transport_cURL'), array('Requests_Transport_fsockopen'), ); } /** * @dataProvider transportProvider */ public function testConnectWithString($transport) { $this->checkProxyAvailable(); $options = array( 'proxy' => REQUESTS_HTTP_PROXY, 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); $this->assertEquals('http', $response->headers['x-requests-proxied']); $data = json_decode($response->body, true); $this->assertEquals('http', $data['headers']['x-requests-proxy']); } /** * @dataProvider transportProvider */ public function testConnectWithArray($transport) { $this->checkProxyAvailable(); $options = array( 'proxy' => array(REQUESTS_HTTP_PROXY), 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); $this->assertEquals('http', $response->headers['x-requests-proxied']); $data = json_decode($response->body, true); $this->assertEquals('http', $data['headers']['x-requests-proxy']); } /** * @dataProvider transportProvider * @expectedException Requests_Exception */ public function testConnectInvalidParameters($transport) { $this->checkProxyAvailable(); $options = array( 'proxy' => array(REQUESTS_HTTP_PROXY, 'testuser', 'password', 'something'), 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); } /** * @dataProvider transportProvider */ public function testConnectWithInstance($transport) { $this->checkProxyAvailable(); $options = array( 'proxy' => new Requests_Proxy_HTTP(REQUESTS_HTTP_PROXY), 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); $this->assertEquals('http', $response->headers['x-requests-proxied']); $data = json_decode($response->body, true); $this->assertEquals('http', $data['headers']['x-requests-proxy']); } /** * @dataProvider transportProvider */ public function testConnectWithAuth($transport) { $this->checkProxyAvailable('auth'); $options = array( 'proxy' => array( REQUESTS_HTTP_PROXY_AUTH, REQUESTS_HTTP_PROXY_AUTH_USER, REQUESTS_HTTP_PROXY_AUTH_PASS ), 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); $this->assertEquals(200, $response->status_code); $this->assertEquals('http', $response->headers['x-requests-proxied']); $data = json_decode($response->body, true); $this->assertEquals('http', $data['headers']['x-requests-proxy']); } /** * @dataProvider transportProvider */ public function testConnectWithInvalidAuth($transport) { $this->checkProxyAvailable('auth'); $options = array( 'proxy' => array( REQUESTS_HTTP_PROXY_AUTH, REQUESTS_HTTP_PROXY_AUTH_USER . '!', REQUESTS_HTTP_PROXY_AUTH_PASS . '!' ), 'transport' => $transport, ); $response = Requests::get(httpbin('/get'), array(), $options); $this->assertEquals(407, $response->status_code); } }