From fdfc656aa8b78016f4722acec30b54136c027d8e Mon Sep 17 00:00:00 2001 From: Phil Young Date: Wed, 13 Oct 2021 04:40:33 +0100 Subject: [PATCH] Add Account Role Listings (#198) I want to list the roles availablew in an account so I can add a member to the account --- src/Endpoints/AccountRoles.php | 33 +++++++++ tests/Endpoints/AccountRolesTest.php | 32 +++++++++ .../Fixtures/Endpoints/listAccountRoles.json | 69 +++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100644 src/Endpoints/AccountRoles.php create mode 100644 tests/Endpoints/AccountRolesTest.php create mode 100644 tests/Fixtures/Endpoints/listAccountRoles.json diff --git a/src/Endpoints/AccountRoles.php b/src/Endpoints/AccountRoles.php new file mode 100644 index 00000000..aca76153 --- /dev/null +++ b/src/Endpoints/AccountRoles.php @@ -0,0 +1,33 @@ +adapter = $adapter; + } + + public function listAccountRoles(string $accountId): stdClass + { + $roles = $this->adapter->get('accounts/' . $accountId . '/roles'); + $this->body = json_decode($roles->getBody()); + + return (object)[ + 'result' => $this->body->result, + 'result_info' => $this->body->result_info, + ]; + } +} diff --git a/tests/Endpoints/AccountRolesTest.php b/tests/Endpoints/AccountRolesTest.php new file mode 100644 index 00000000..acb16be8 --- /dev/null +++ b/tests/Endpoints/AccountRolesTest.php @@ -0,0 +1,32 @@ +getPsr7JsonResponseForFixture('Endpoints/listAccountRoles.json'); + + $adapter = $this->getMockBuilder(Adapter::class)->getMock(); + $adapter->method('get')->willReturn($response); + + $adapter->expects($this->once()) + ->method('get') + ->with($this->equalTo('accounts/023e105f4ecef8ad9ca31a8372d0c353/roles')); + + $roles = new AccountRoles($adapter); + $result = $roles->listAccountRoles('023e105f4ecef8ad9ca31a8372d0c353'); + + $this->assertObjectHasAttribute('result', $result); + $this->assertObjectHasAttribute('result_info', $result); + + $this->assertEquals('3536bcfad5faccb999b47003c79917fb', $result->result[0]->id); + $this->assertEquals(1, $result->result_info->page); + $this->assertEquals('3536bcfad5faccb999b47003c79917fb', $roles->getBody()->result[0]->id); + } +} diff --git a/tests/Fixtures/Endpoints/listAccountRoles.json b/tests/Fixtures/Endpoints/listAccountRoles.json new file mode 100644 index 00000000..b4f7224c --- /dev/null +++ b/tests/Fixtures/Endpoints/listAccountRoles.json @@ -0,0 +1,69 @@ +{ + "success": true, + "errors": [], + "messages": [], + "result": [ + { + "id": "3536bcfad5faccb999b47003c79917fb", + "name": "Account Administrator", + "description": "Administrative access to the entire Account", + "permissions": { + "analytics": { + "read": true, + "write": true + }, + "billing": { + "read": true, + "write": true + }, + "cache_purge": { + "read": true, + "write": true + }, + "dns": { + "read": true, + "write": true + }, + "dns_records": { + "read": true, + "write": true + }, + "lb": { + "read": true, + "write": true + }, + "logs": { + "read": true, + "write": true + }, + "organization": { + "read": true, + "write": true + }, + "ssl": { + "read": true, + "write": true + }, + "waf": { + "read": true, + "write": true + }, + "zones": { + "read": true, + "write": true + }, + "zone_settings": { + "read": true, + "write": true + } + } + } + ], + "result_info": { + "page": 1, + "per_page": 1, + "total_pages": 1, + "count": 1, + "total_count": 1 + } +}