2
2
3
3
namespace Test \Functional ;
4
4
5
+ use Psr \Http \Message \RequestInterface ;
6
+ use Psr \Http \Message \ResponseInterface ;
5
7
use SocialConnect \HttpClient \Curl ;
6
8
use SocialConnect \HttpClient \Request ;
7
9
use SocialConnect \HttpClient \StreamFactory ;
8
10
9
11
class CurlTest extends \PHPUnit \Framework \TestCase
10
12
{
11
- public function testGetMethod ( )
13
+ protected function executeRequest ( RequestInterface $ request )
12
14
{
13
15
$ client = new Curl ();
14
- $ response = $ client ->sendRequest (
15
- new Request ('GET ' , 'http://127.0.0.1:5555/test-get ' )
16
- );
16
+ return $ client ->sendRequest ($ request );
17
+ }
17
18
19
+ protected function assertOk (ResponseInterface $ response )
20
+ {
18
21
parent ::assertSame (200 , $ response ->getStatusCode ());
19
22
parent ::assertSame ('OK ' , $ response ->getReasonPhrase ());
20
- parent ::assertSame ($ response ->getHeaderLine ('content-type ' ), 'application/json ' );
23
+ parent ::assertSame ('application/json ' , $ response ->getHeaderLine ('content-type ' ));
24
+ }
25
+
26
+ public function testGetMethod ()
27
+ {
28
+ $ response = $ this ->executeRequest (new Request ('GET ' , 'http://127.0.0.1:5555/test-get ' ));
29
+
30
+ $ this ->assertOk ($ response );
21
31
22
32
$ content = $ response ->getBody ()->getContents ();
23
33
$ result = json_decode ($ content , true );
@@ -36,11 +46,9 @@ public function testPostMethod()
36
46
$ streamFactory ->createStream ('payload ' )
37
47
);
38
48
39
- $ client = new Curl ();
40
- $ response = $ client ->sendRequest ($ request );
49
+ $ response = $ this ->executeRequest ($ request );
41
50
42
- parent ::assertSame (200 , $ response ->getStatusCode ());
43
- parent ::assertSame ('OK ' , $ response ->getReasonPhrase ());
51
+ $ this ->assertOk ($ response );
44
52
parent ::assertSame ($ response ->getHeaderLine ('content-type ' ), 'application/json ' );
45
53
46
54
$ content = $ response ->getBody ()->getContents ();
@@ -51,16 +59,33 @@ public function testPostMethod()
51
59
parent ::assertEquals ($ result ['headers ' ]['x-my-header ' ], ['5 ' ]);
52
60
}
53
61
54
- public function testDeleteMethod ()
62
+ public function testPutMethod ()
55
63
{
56
- $ client = new Curl ();
57
- $ response = $ client ->sendRequest (
58
- new Request ('DELETE ' , 'http://127.0.0.1:5555/test-delete ' )
64
+ $ streamFactory = new StreamFactory ();
65
+
66
+ $ request = new Request ('PUT ' , 'http://127.0.0.1:5555/test-put ' );
67
+ $ request = $ request ->withHeader ('X-MY-Header ' , '5 ' );
68
+ $ request = $ request ->withBody (
69
+ $ streamFactory ->createStream ('payload ' )
59
70
);
60
71
61
- parent ::assertSame (200 , $ response ->getStatusCode ());
62
- parent ::assertSame ('OK ' , $ response ->getReasonPhrase ());
63
- parent ::assertSame ($ response ->getHeaderLine ('content-type ' ), 'application/json ' );
72
+ $ response = $ this ->executeRequest ($ request );
73
+
74
+ $ this ->assertOk ($ response );
75
+
76
+ $ content = $ response ->getBody ()->getContents ();
77
+ $ result = json_decode ($ content , true );
78
+
79
+ parent ::assertEquals ($ result ['method ' ], 'PUT ' );
80
+ parent ::assertEquals ($ result ['uri ' ], 'http://127.0.0.1:5555/test-put ' );
81
+ parent ::assertEquals ($ result ['headers ' ]['x-my-header ' ], ['5 ' ]);
82
+ }
83
+
84
+ public function testDeleteMethod ()
85
+ {
86
+ $ response = $ this ->executeRequest (new Request ('DELETE ' , 'http://127.0.0.1:5555/test-delete ' ));
87
+
88
+ $ this ->assertOk ($ response );
64
89
65
90
$ content = $ response ->getBody ()->getContents ();
66
91
$ result = json_decode ($ content , true );
0 commit comments