diff --git a/src/Api/Ip.php b/src/Api/Ip.php index 80d4ab0..35294d1 100644 --- a/src/Api/Ip.php +++ b/src/Api/Ip.php @@ -29,13 +29,13 @@ class Ip extends HttpApi * * @return IndexResponse|ResponseInterface */ - public function index(bool $dedicated = false) + public function index(?bool $dedicated = null) { - Assert::boolean($dedicated); - - $params = [ - 'dedicated' => $dedicated, - ]; + $params = []; + if (null !== $dedicated) { + Assert::boolean($dedicated); + $params['dedicated'] = $dedicated; + } $response = $this->httpGet('/v3/ips', $params); diff --git a/tests/Api/Ip.php b/tests/Api/Ip.php new file mode 100644 index 0000000..bca3166 --- /dev/null +++ b/tests/Api/Ip.php @@ -0,0 +1,85 @@ +setRequestMethod('GET'); + $this->setRequestUri('/v3/ips'); + $this->setHttpResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' +{ + "items": ["192.161.0.1", "192.168.0.2"], + "total_count": 2 +} +JSON + )); + + $api = $this->getApiInstance(); + /** @var IndexResponse $response */ + $response = $api->index(null); + $this->assertInstanceOf(IndexResponse::class, $response); + $this->assertEquals(2, $response->getTotalCount()); + $this->assertEquals('192.161.0.1', $response->getItems()[0]); + $this->assertEquals('192.168.0.2', $response->getItems()[1]); + } + + public function testIndexOnlyDedicated() + { + $this->setRequestMethod('GET'); + $this->setRequestUri('/v3/ips?dedicated=1'); + $this->setHttpResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' +{ + "items": ["192.161.0.1"], + "total_count": 1 +} +JSON + )); + + $api = $this->getApiInstance(); + /** @var IndexResponse $response */ + $response = $api->index(true); + $this->assertInstanceOf(IndexResponse::class, $response); + $this->assertEquals(1, $response->getTotalCount()); + $this->assertEquals('192.161.0.1', $response->getItems()[0]); + } + + public function testIndexOnlyShared() + { + $this->setRequestMethod('GET'); + $this->setRequestUri('/v3/ips?dedicated=0'); + $this->setHttpResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' +{ + "items": ["192.168.0.2"], + "total_count": 1 +} +JSON + )); + + $api = $this->getApiInstance(); + /** @var IndexResponse $response */ + $response = $api->index(false); + $this->assertInstanceOf(IndexResponse::class, $response); + $this->assertEquals(1, $response->getTotalCount()); + $this->assertEquals('192.168.0.2', $response->getItems()[0]); + } +}