Skip to content

Commit 67aa4cc

Browse files
authored
refact: Revise ADF log more actionable (#208)
1 parent 33336f4 commit 67aa4cc

File tree

2 files changed

+72
-4
lines changed

2 files changed

+72
-4
lines changed

Diff for: src/Optimizely/ProjectConfigManager/HTTPProjectConfigManager.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ protected function fetchDatafile()
192192
try {
193193
$response = $this->httpClient->get($this->_url, $options);
194194
} catch (Exception $exception) {
195-
$this->_logger->log(Logger::ERROR, 'Unexpected response when trying to fetch datafile, status code: ' . $exception->getCode());
195+
$this->_logger->log(Logger::ERROR, 'Unexpected response when trying to fetch datafile, status code: ' . $exception->getCode(). '. ' .
196+
'Please check your SDK key and/or datafile access token.');
196197
return null;
197198
}
198199

@@ -220,7 +221,8 @@ protected function fetchDatafile()
220221
}
221222

222223
// Failed to retrieve datafile from Url.
223-
$this->_logger->log(Logger::ERROR, 'Unexpected response when trying to fetch datafile, status code: ' . $status);
224+
$this->_logger->log(Logger::ERROR, 'Unexpected response when trying to fetch datafile, status code: ' . $status . '. ' .
225+
'Please check your SDK key and/or datafile access token.');
224226
return null;
225227
}
226228

Diff for: tests/ProjectConfigManagerTests/HTTPProjectConfigManagerTest.php

+68-2
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,73 @@ public function testGetConfigReturnsProvidedDatafileWhenHttpClientReturnsInvalid
202202
->getMock();
203203

204204
$mock = new MockHandler([
205-
new Response(307, [], 'Invalid Datafile')
205+
new Response(200, [], 'Invalid Datafile')
206+
]);
207+
208+
$handler = HandlerStack::create($mock);
209+
$client = new Client(['handler' => $handler]);
210+
211+
$httpClient = new \ReflectionProperty(HTTPProjectConfigManager::class, 'httpClient');
212+
$httpClient->setAccessible(true);
213+
$httpClient->setValue($configManagerMock, $client);
214+
215+
$configManagerMock->fetch();
216+
217+
$config = DatafileProjectConfig::createProjectConfigFromDatafile(
218+
DATAFILE,
219+
false,
220+
$this->loggerMock,
221+
$this->errorHandlerMock
222+
);
223+
224+
$this->assertEquals($config, $configManagerMock->getConfig());
225+
}
226+
227+
public function testGetConfigReturnsProvidedDatafileWhenHttpClientReturnsUnhandledStatusCode()
228+
{
229+
$configManagerMock = $this->getMockBuilder(HTTPProjectConfigManager::class)
230+
->setConstructorArgs(array(null, $this->url, null, false, DATAFILE, false,
231+
$this->loggerMock, $this->errorHandlerMock))
232+
->setMethods(array('handleResponse'))
233+
->getMock();
234+
235+
$mock = new MockHandler([
236+
new Response(307, [], '')
237+
]);
238+
239+
$handler = HandlerStack::create($mock);
240+
$client = new Client(['handler' => $handler]);
241+
242+
$httpClient = new \ReflectionProperty(HTTPProjectConfigManager::class, 'httpClient');
243+
$httpClient->setAccessible(true);
244+
$httpClient->setValue($configManagerMock, $client);
245+
246+
$this->loggerMock->expects($this->once())
247+
->method('log')
248+
->with(Logger::ERROR, sprintf("Unexpected response when trying to fetch datafile, status code: 307. Please check your SDK key and/or datafile access token."));
249+
250+
$configManagerMock->fetch();
251+
252+
$config = DatafileProjectConfig::createProjectConfigFromDatafile(
253+
DATAFILE,
254+
false,
255+
$this->loggerMock,
256+
$this->errorHandlerMock
257+
);
258+
259+
$this->assertEquals($config, $configManagerMock->getConfig());
260+
}
261+
262+
public function testGetConfigReturnsProvidedDatafileWhenHttpClientThrows403Error()
263+
{
264+
$configManagerMock = $this->getMockBuilder(HTTPProjectConfigManager::class)
265+
->setConstructorArgs(array(null, $this->url, null, false, DATAFILE, false,
266+
$this->loggerMock, $this->errorHandlerMock))
267+
->setMethods(array('handleResponse'))
268+
->getMock();
269+
270+
$mock = new MockHandler([
271+
new Response(403, [], '')
206272
]);
207273

208274
$handler = HandlerStack::create($mock);
@@ -214,7 +280,7 @@ public function testGetConfigReturnsProvidedDatafileWhenHttpClientReturnsInvalid
214280

215281
$this->loggerMock->expects($this->once())
216282
->method('log')
217-
->with(Logger::ERROR, sprintf("Unexpected response when trying to fetch datafile, status code: 307"));
283+
->with(Logger::ERROR, sprintf("Unexpected response when trying to fetch datafile, status code: 403. Please check your SDK key and/or datafile access token."));
218284

219285
$configManagerMock->fetch();
220286

0 commit comments

Comments
 (0)