Skip to content

Commit 788c6ad

Browse files
committed
add more test coverage
1 parent 3515569 commit 788c6ad

File tree

4 files changed

+114
-4
lines changed

4 files changed

+114
-4
lines changed

src/Libraries/Client.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ class Client extends BaseClient
6363
*
6464
* @return void
6565
*/
66-
public function __construct()
66+
public function __construct($config = [])
6767
{
68-
parent::__construct();
68+
parent::__construct($config);
6969
}
7070

7171
/**

src/Libraries/ClientExternal.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ class ClientExternal extends BaseClient
7979
*
8080
* @return void
8181
*/
82-
public function __construct()
82+
public function __construct($config = [])
8383
{
84-
parent::__construct();
84+
parent::__construct($config);
8585
}
8686

8787
/**
@@ -178,6 +178,16 @@ public function call(Request $request, array $options = []): ResponseInterface
178178
'responseTime' => round($elapsed * 1000),
179179
'memoryUsage' => memory_get_usage()
180180
];
181+
if ($request->getHeader('Content-Type') == ['application/json']) {
182+
$logData['request']['body'] = json_decode($reqbody, true);
183+
} else {
184+
$logData['request']['body'] = $reqbody;
185+
}
186+
if ($response->getHeader('Content-Type') == ['application/json']) {
187+
$logData['response']['body'] = json_decode($respbody, true);
188+
} else {
189+
$logData['response']['body'] = $respbody;
190+
}
181191
$response->getBody()->rewind();
182192
Log::activity()->info($logData);
183193
}

tests/Libraries/ClientExternalTest.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
namespace Tests\Libraries;
66

77
use GuzzleHttp\Exception\GuzzleException;
8+
use GuzzleHttp\HandlerStack;
89
use GuzzleHttp\Psr7\MultipartStream;
910
use GuzzleHttp\Psr7\Request;
11+
use GuzzleHttp\Psr7\Response;
1012
use GuzzleHttp\Psr7\Utils;
1113
use Illuminate\Support\Facades\Redis;
1214
use Laravel\Lumen\Testing\TestCase;
1315
use Spotlibs\PhpLib\Libraries\ClientExternal;
16+
use GuzzleHttp\Handler\MockHandler;
1417

1518
class ClientExternalTest extends TestCase
1619
{
@@ -88,4 +91,71 @@ public function testCallExternalMultipartError(): void
8891
$client = new ClientExternal();
8992
$client->call($request);
9093
}
94+
95+
public function testCallEksternal2(): void
96+
{
97+
$mock = new MockHandler([
98+
new Response(200, ['Content-Type' => 'application/json'], json_encode(['status' => 'OK', 'message' => 'well done'])),
99+
]);
100+
$handlerStack = new HandlerStack($mock);
101+
putenv('APP_ENV=production');
102+
$request = new Request(
103+
'POST',
104+
'/letsgo',
105+
['content-type' => 'application/json'],
106+
json_encode(['message' => 'hello world'])
107+
);
108+
$client = new ClientExternal(['handler' => $handlerStack]);
109+
$response = $client->call($request);
110+
$contents = $response->getBody()->getContents();
111+
$contents_arr = json_decode($contents, true, 512);
112+
$this->assertEquals('OK', $contents_arr['status']);
113+
putenv('APP_ENV=local');
114+
}
115+
public function testCallEksternal3(): void
116+
{
117+
$mock = new MockHandler([
118+
new Response(200, ['Content-Type' => 'application/json'], json_encode([
119+
'status' => 'OK',
120+
'message0' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
121+
'message1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
122+
'message2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
123+
'message3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
124+
'message4' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
125+
'message5' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
126+
'message6' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
127+
'message7' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
128+
'message8' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
129+
'message9' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
130+
'message10' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
131+
])),
132+
]);
133+
$handlerStack = new HandlerStack($mock);
134+
putenv('APP_ENV=production');
135+
$request = new Request(
136+
'POST',
137+
'/letsgo',
138+
['content-type' => 'application/json'],
139+
json_encode([
140+
'message' => 'hello world',
141+
'message0' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
142+
'message1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
143+
'message2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
144+
'message3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
145+
'message4' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
146+
'message5' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
147+
'message6' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
148+
'message7' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
149+
'message8' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
150+
'message9' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
151+
'message10' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
152+
])
153+
);
154+
$client = new ClientExternal(['handler' => $handlerStack]);
155+
$response = $client->call($request);
156+
$contents = $response->getBody()->getContents();
157+
$contents_arr = json_decode($contents, true, 512);
158+
$this->assertEquals('OK', $contents_arr['status']);
159+
putenv('APP_ENV=local');
160+
}
91161
}

tests/Libraries/ClientTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44

55
namespace Tests\Libraries;
66

7+
use GuzzleHttp\Handler\MockHandler;
8+
use GuzzleHttp\HandlerStack;
79
use GuzzleHttp\Psr7\MultipartStream;
810
use GuzzleHttp\Psr7\Request;
11+
use GuzzleHttp\Psr7\Response;
912
use Laravel\Lumen\Testing\TestCase;
13+
use Spotlibs\PhpLib\Exceptions\DataNotFoundException;
1014
use Spotlibs\PhpLib\Libraries\Client;
1115

1216
class ClientTest extends TestCase
@@ -149,4 +153,30 @@ public function testCallXWwwUrlEncoded(): void
149153
$r = json_decode($resp->getBody()->getContents());
150154
$this->assertEquals('101', $r->id);
151155
}
156+
157+
public function testCallZA(): void
158+
{
159+
$this->expectException(DataNotFoundException::class);
160+
$mock = new MockHandler([
161+
new Response(200, ['Content-Type' => 'application/json'], json_encode(['responseCode' => '02', 'responseDesc' => 'Not found']))
162+
]);
163+
$handlerStack = new HandlerStack($mock);
164+
$request = new Request(
165+
'POST',
166+
'/123',
167+
[
168+
'Content-Type' => 'application/json',
169+
'Strict-Transport-Security' => ['max-age=31536000', 'includeSubDomains', 'preload']
170+
],
171+
json_encode([
172+
"status" => "ok",
173+
"message" => "welcome"
174+
])
175+
);
176+
$client = new Client(['handler' => $handlerStack]);
177+
$client
178+
->injectRequestHeader(['X-Powered-By' => ['Money']])
179+
->injectResponseHeader(['X-Server' => ['tinyurl'], 'X-Overhead' => ['true', 'allowed']])
180+
->call($request);
181+
}
152182
}

0 commit comments

Comments
 (0)