diff options
-rw-r--r-- | _testing/unittests/inc/httpclient_http.test.php | 141 | ||||
-rw-r--r-- | _testing/unittests/inc/httpclient_https.test.php | 8 |
2 files changed, 149 insertions, 0 deletions
diff --git a/_testing/unittests/inc/httpclient_http.test.php b/_testing/unittests/inc/httpclient_http.test.php new file mode 100644 index 000000000..66faa16c2 --- /dev/null +++ b/_testing/unittests/inc/httpclient_http.test.php @@ -0,0 +1,141 @@ +<?php + +require_once DOKU_INC.'inc/init.php'; +require_once DOKU_INC.'inc/HTTPClient.php'; + +class httpclient_http_test extends PHPUnit_Framework_TestCase { + protected $server = 'http://httpbin.org'; + + function test_simpleget(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/get?foo=bar'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('args',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['args']); + } + + function test_dget(){ + $http = new HTTPClient(); + $data = $http->dget($this->server.'/get',array('foo'=>'bar')); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('args',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['args']); + } + + function test_gzip(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/gzip'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('gzipped',$resp); + $this->assertTrue($resp['gzipped']); + } + + function test_simplepost(){ + $http = new HTTPClient(); + $data = $http->post($this->server.'/post',array('foo'=>'bar')); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('form',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['form']); + } + + function test_redirect(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/redirect/3'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('url',$resp); + $this->assertRegExp('/\/get$/', $resp['url']); + } + + function test_relredirect(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/relative-redirect/3'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('url',$resp); + $this->assertRegExp('/\/get$/', $resp['url']); + } + + function test_redirectfail(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/redirect/5'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals('Maximum number of redirects exceeded',$http->error); + } + + function test_cookies(){ + $http = new HTTPClient(); + $http->get($this->server.'/cookies/set/foo/bar'); + $this->assertEquals(array('foo' => 'bar'), $http->cookies); + $data = $http->get($this->server.'/cookies'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('cookies',$resp); + $this->assertEquals(array('foo'=>'bar'), $resp['cookies']); + } + + function test_teapot(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/status/418'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(418,$http->status); + } + + function test_maxbody(){ + $http = new HTTPClient(); + $http->max_bodysize = 250; + $data = $http->get($this->server.'/stream/30'); + $this->assertTrue($data === false, 'HTTP response'); + } + + function test_basicauth(){ + $http = new HTTPClient(); + $http->user = 'user'; + $http->pass = 'pass'; + $data = $http->get($this->server.'/basic-auth/user/pass'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertEquals(array('authenticated'=>true,'user'=>'user'), $resp); + } + + function test_basicauthfail(){ + $http = new HTTPClient(); + $http->user = 'user'; + $http->pass = 'invalid'; + $data = $http->get($this->server.'/basic-auth/user/pass'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(401,$http->status); + } + + function test_timeout(){ + $http = new HTTPClient(); + $http->timeout = 5; + $data = $http->get($this->server.'/delay/10'); + $this->assertTrue($data === false, 'HTTP response'); + $this->assertEquals(-100,$http->status); + } + + function test_headers(){ + $http = new HTTPClient(); + $data = $http->get($this->server.'/response-headers?baz=&foo=bar'); + $this->assertFalse($data === false, 'HTTP response'); + $resp = json_decode($data, true); + $this->assertTrue(is_array($resp), 'JSON response'); + $this->assertArrayHasKey('baz',$http->resp_headers); + $this->assertArrayHasKey('foo',$http->resp_headers); + $this->assertEquals('bar',$http->resp_headers['foo']); + } +} +//Setup VIM: ex: et ts=4 : diff --git a/_testing/unittests/inc/httpclient_https.test.php b/_testing/unittests/inc/httpclient_https.test.php new file mode 100644 index 000000000..f19e7c6d6 --- /dev/null +++ b/_testing/unittests/inc/httpclient_https.test.php @@ -0,0 +1,8 @@ +<?php + +require_once dirname(__FILE__).'/httpclient_http.test.php'; + +class httpclient_https_test extends httpclient_http_test { + protected $server = 'https://httpbin.org/'; +} +//Setup VIM: ex: et ts=4 : |