From: Timo Tijhof Date: Mon, 24 Jul 2017 19:50:47 +0000 (-0700) Subject: config: Add more EtcdConfig::fetchAllFromEtcdServer tests X-Git-Tag: 1.31.0-rc.0~2613^2 X-Git-Url: http://git.cyclocoop.org/%27%20.%20url_absolue%28%24favicon%29%20.%20?a=commitdiff_plain;h=965d5ff5c664be95d8e924d0dd70b401c8f3dc74;p=lhc%2Fweb%2Fwiklou.git config: Add more EtcdConfig::fetchAllFromEtcdServer tests Bug: T156924 Change-Id: I88a1c97b6921b59cce93f22d473dd7cea6f4931c --- diff --git a/tests/phpunit/includes/config/EtcdConfigTest.php b/tests/phpunit/includes/config/EtcdConfigTest.php index e0694dbf7e..19cffa29b9 100644 --- a/tests/phpunit/includes/config/EtcdConfigTest.php +++ b/tests/phpunit/includes/config/EtcdConfigTest.php @@ -364,7 +364,86 @@ class EtcConfigTest extends PHPUnit_Framework_TestCase { public static function provideFetchFromServer() { return [ - '200 OK - Empty' => [ + '200 OK - Success' => [ + 'http' => [ + 'code' => 200, + 'reason' => 'OK', + 'headers' => [], + 'body' => json_encode( [ 'node' => [ 'nodes' => [ + [ + 'key' => '/example/foo', + 'value' => json_encode( [ 'val' => true ] ) + ], + ] ] ] ), + 'error' => '', + ], + 'expect' => [ + [ 'foo' => true ], // data + null, + false // retry + ], + ], + '200 OK - Skip dir' => [ + 'http' => [ + 'code' => 200, + 'reason' => 'OK', + 'headers' => [], + 'body' => json_encode( [ 'node' => [ 'nodes' => [ + [ + 'key' => '/example/foo', + 'value' => json_encode( [ 'val' => true ] ) + ], + [ + 'key' => '/example/sub', + 'dir' => true + ], + [ + 'key' => '/example/bar', + 'value' => json_encode( [ 'val' => false ] ) + ], + ] ] ] ), + 'error' => '', + ], + 'expect' => [ + [ 'foo' => true, 'bar' => false ], // data + null, + false // retry + ], + ], + '200 OK - Bad value' => [ + 'http' => [ + 'code' => 200, + 'reason' => 'OK', + 'headers' => [], + 'body' => json_encode( [ 'node' => [ 'nodes' => [ + [ + 'key' => '/example/foo', + 'value' => ';"broken{value' + ] + ] ] ] ), + 'error' => '', + ], + 'expect' => [ + null, // data + "Failed to parse value for 'foo'.", + false // retry + ], + ], + '200 OK - Empty node list' => [ + 'http' => [ + 'code' => 200, + 'reason' => 'OK', + 'headers' => [], + 'body' => '{"node":{"nodes":[]}}', + 'error' => '', + ], + 'expect' => [ + [], // data + null, + false // retry + ], + ], + '200 OK - Invalid JSON' => [ 'http' => [ 'code' => 200, 'reason' => 'OK', @@ -378,11 +457,40 @@ class EtcConfigTest extends PHPUnit_Framework_TestCase { false // retry ], ], + '404 Not Found' => [ + 'http' => [ + 'code' => 404, + 'reason' => 'Not Found', + 'headers' => [ 'content-length' => 0 ], + 'body' => '', + 'error' => '', + ], + 'expect' => [ + null, // data + 'HTTP 404 (Not Found)', + false // retry + ], + ], + '400 Bad Request - custom error' => [ + 'http' => [ + 'code' => 400, + 'reason' => 'Bad Request', + 'headers' => [ 'content-length' => 0 ], + 'body' => '', + 'error' => 'No good reason', + ], + 'expect' => [ + null, // data + 'No good reason', + true // retry + ], + ], ]; } /** * @covers EtcdConfig::fetchAllFromEtcdServer + * @covers EtcdConfig::unserialize * @dataProvider provideFetchFromServer */ public function testFetchFromServer( array $httpResponse, array $expected ) {