xref: /dokuwiki/_test/tests/inc/httpclient_http.test.php (revision d37a395509092f21060e2a042a2be0ea759f6d0b)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowski
3f8369d7dSTobias Sarnowskiclass httpclient_http_test extends DokuWikiTest {
4f8369d7dSTobias Sarnowski    protected $server = 'http://httpbin.org';
5f8369d7dSTobias Sarnowski
6f7161c34SAndreas Gohr    /**
7f7161c34SAndreas Gohr     * @group internet
8f7161c34SAndreas Gohr     */
9f8369d7dSTobias Sarnowski    function test_simpleget(){
10f8369d7dSTobias Sarnowski        $http = new HTTPClient();
11f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/get?foo=bar');
12f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
13f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
14f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
15f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('args',$resp);
16f8369d7dSTobias Sarnowski        $this->assertEquals(array('foo'=>'bar'), $resp['args']);
17f8369d7dSTobias Sarnowski    }
18f8369d7dSTobias Sarnowski
19f7161c34SAndreas Gohr    /**
20f7161c34SAndreas Gohr     * @group internet
21f7161c34SAndreas Gohr     */
22f8369d7dSTobias Sarnowski    function test_dget(){
23f8369d7dSTobias Sarnowski        $http = new HTTPClient();
24f8369d7dSTobias Sarnowski        $data = $http->dget($this->server.'/get',array('foo'=>'bar'));
25f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
26f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
27f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
28f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('args',$resp);
29f8369d7dSTobias Sarnowski        $this->assertEquals(array('foo'=>'bar'), $resp['args']);
30f8369d7dSTobias Sarnowski    }
31f8369d7dSTobias Sarnowski
32f7161c34SAndreas Gohr    /**
33f7161c34SAndreas Gohr     * @group internet
34f7161c34SAndreas Gohr     */
35f8369d7dSTobias Sarnowski    function test_gzip(){
36f8369d7dSTobias Sarnowski        $http = new HTTPClient();
37f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/gzip');
38f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
39f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
40f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
41f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('gzipped',$resp);
42f8369d7dSTobias Sarnowski        $this->assertTrue($resp['gzipped']);
43f8369d7dSTobias Sarnowski    }
44f8369d7dSTobias Sarnowski
45f7161c34SAndreas Gohr    /**
46f7161c34SAndreas Gohr     * @group internet
47f7161c34SAndreas Gohr     */
48f8369d7dSTobias Sarnowski    function test_simplepost(){
49f8369d7dSTobias Sarnowski        $http = new HTTPClient();
50f8369d7dSTobias Sarnowski        $data = $http->post($this->server.'/post',array('foo'=>'bar'));
51f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
52f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
53f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
54f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('form',$resp);
55f8369d7dSTobias Sarnowski        $this->assertEquals(array('foo'=>'bar'), $resp['form']);
56f8369d7dSTobias Sarnowski    }
57f8369d7dSTobias Sarnowski
58f7161c34SAndreas Gohr    /**
59f7161c34SAndreas Gohr     * @group internet
60f7161c34SAndreas Gohr     */
61f8369d7dSTobias Sarnowski    function test_redirect(){
62f8369d7dSTobias Sarnowski        $http = new HTTPClient();
63f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/redirect/3');
64f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
65f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
66f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
67f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('url',$resp);
68f8369d7dSTobias Sarnowski        $this->assertRegExp('/\/get$/', $resp['url']);
69f8369d7dSTobias Sarnowski    }
70f8369d7dSTobias Sarnowski
71f7161c34SAndreas Gohr    /**
72f7161c34SAndreas Gohr     * @group internet
73f7161c34SAndreas Gohr     */
74f8369d7dSTobias Sarnowski    function test_relredirect(){
75f8369d7dSTobias Sarnowski        $http = new HTTPClient();
76f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/relative-redirect/3');
77f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
78f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
79f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
80f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('url',$resp);
81f8369d7dSTobias Sarnowski        $this->assertRegExp('/\/get$/', $resp['url']);
82f8369d7dSTobias Sarnowski    }
83f8369d7dSTobias Sarnowski
84f7161c34SAndreas Gohr    /**
85f7161c34SAndreas Gohr     * @group internet
86f7161c34SAndreas Gohr     */
87f8369d7dSTobias Sarnowski    function test_redirectfail(){
88f8369d7dSTobias Sarnowski        $http = new HTTPClient();
89f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/redirect/5');
90f8369d7dSTobias Sarnowski        $this->assertTrue($data === false, 'HTTP response');
91f8369d7dSTobias Sarnowski        $this->assertEquals('Maximum number of redirects exceeded',$http->error);
92f8369d7dSTobias Sarnowski    }
93f8369d7dSTobias Sarnowski
94f7161c34SAndreas Gohr    /**
95f7161c34SAndreas Gohr     * @group internet
96f7161c34SAndreas Gohr     */
97f8369d7dSTobias Sarnowski    function test_cookies(){
98f8369d7dSTobias Sarnowski        $http = new HTTPClient();
99f8369d7dSTobias Sarnowski        $http->get($this->server.'/cookies/set/foo/bar');
100f8369d7dSTobias Sarnowski        $this->assertEquals(array('foo' => 'bar'), $http->cookies);
101f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/cookies');
102f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
103f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
104f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
105f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('cookies',$resp);
106f8369d7dSTobias Sarnowski        $this->assertEquals(array('foo'=>'bar'), $resp['cookies']);
107f8369d7dSTobias Sarnowski    }
108f8369d7dSTobias Sarnowski
109f7161c34SAndreas Gohr    /**
110f7161c34SAndreas Gohr     * @group internet
111f7161c34SAndreas Gohr     */
112f8369d7dSTobias Sarnowski    function test_teapot(){
113f8369d7dSTobias Sarnowski        $http = new HTTPClient();
114f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/status/418');
115f8369d7dSTobias Sarnowski        $this->assertTrue($data === false, 'HTTP response');
116f8369d7dSTobias Sarnowski        $this->assertEquals(418,$http->status);
117f8369d7dSTobias Sarnowski    }
118f8369d7dSTobias Sarnowski
119f7161c34SAndreas Gohr    /**
120f7161c34SAndreas Gohr     * @group internet
121f7161c34SAndreas Gohr     */
122f8369d7dSTobias Sarnowski    function test_maxbody(){
123f8369d7dSTobias Sarnowski        $http = new HTTPClient();
124f8369d7dSTobias Sarnowski        $http->max_bodysize = 250;
125f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/stream/30');
126f8369d7dSTobias Sarnowski        $this->assertTrue($data === false, 'HTTP response');
127f8369d7dSTobias Sarnowski    }
128f8369d7dSTobias Sarnowski
129f7161c34SAndreas Gohr    /**
130f7161c34SAndreas Gohr     * @group internet
131f7161c34SAndreas Gohr     */
132f8369d7dSTobias Sarnowski    function test_basicauth(){
133f8369d7dSTobias Sarnowski        $http = new HTTPClient();
134f8369d7dSTobias Sarnowski        $http->user = 'user';
135f8369d7dSTobias Sarnowski        $http->pass = 'pass';
136f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/basic-auth/user/pass');
137f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
138f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
139f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
140f8369d7dSTobias Sarnowski        $this->assertEquals(array('authenticated'=>true,'user'=>'user'), $resp);
141f8369d7dSTobias Sarnowski    }
142f8369d7dSTobias Sarnowski
143f7161c34SAndreas Gohr    /**
144f7161c34SAndreas Gohr     * @group internet
145f7161c34SAndreas Gohr     */
146f8369d7dSTobias Sarnowski    function test_basicauthfail(){
147f8369d7dSTobias Sarnowski        $http = new HTTPClient();
148f8369d7dSTobias Sarnowski        $http->user = 'user';
149f8369d7dSTobias Sarnowski        $http->pass = 'invalid';
150f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/basic-auth/user/pass');
151f8369d7dSTobias Sarnowski        $this->assertTrue($data === false, 'HTTP response');
152f8369d7dSTobias Sarnowski        $this->assertEquals(401,$http->status);
153f8369d7dSTobias Sarnowski    }
154f8369d7dSTobias Sarnowski
155f7161c34SAndreas Gohr    /**
156f7161c34SAndreas Gohr     * @group internet
157f7161c34SAndreas Gohr     */
158f8369d7dSTobias Sarnowski    function test_timeout(){
159f8369d7dSTobias Sarnowski        $http = new HTTPClient();
160f8369d7dSTobias Sarnowski        $http->timeout = 5;
161f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/delay/10');
162f8369d7dSTobias Sarnowski        $this->assertTrue($data === false, 'HTTP response');
163f8369d7dSTobias Sarnowski        $this->assertEquals(-100,$http->status);
164f8369d7dSTobias Sarnowski    }
165f8369d7dSTobias Sarnowski
166f7161c34SAndreas Gohr    /**
167f7161c34SAndreas Gohr     * @group internet
168f7161c34SAndreas Gohr     */
169f8369d7dSTobias Sarnowski    function test_headers(){
170f8369d7dSTobias Sarnowski        $http = new HTTPClient();
171f8369d7dSTobias Sarnowski        $data = $http->get($this->server.'/response-headers?baz=&foo=bar');
172f8369d7dSTobias Sarnowski        $this->assertFalse($data === false, 'HTTP response');
173f8369d7dSTobias Sarnowski        $resp = json_decode($data, true);
174f8369d7dSTobias Sarnowski        $this->assertTrue(is_array($resp), 'JSON response');
175f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('baz',$http->resp_headers);
176f8369d7dSTobias Sarnowski        $this->assertArrayHasKey('foo',$http->resp_headers);
177f8369d7dSTobias Sarnowski        $this->assertEquals('bar',$http->resp_headers['foo']);
178f8369d7dSTobias Sarnowski    }
179*d37a3955STom N Harris
180*d37a3955STom N Harris    /**
181*d37a3955STom N Harris     * @group internet
182*d37a3955STom N Harris     */
183*d37a3955STom N Harris    function test_chunked(){
184*d37a3955STom N Harris        $http = new HTTPClient();
185*d37a3955STom N Harris        $data = $http->get('http://whoopdedo.org/cgi-bin/chunked/2550');
186*d37a3955STom N Harris        $this->assertFalse($data === false, 'HTTP response');
187*d37a3955STom N Harris        $this->assertEquals(2550,strlen($data));
188*d37a3955STom N Harris    }
189f8369d7dSTobias Sarnowski}
190f8369d7dSTobias Sarnowski//Setup VIM: ex: et ts=4 :
191