From bf796b9ec8e141fe63f0613668e90cef73018977 Mon Sep 17 00:00:00 2001 From: Phil Young Date: Fri, 1 Oct 2021 01:19:15 +0100 Subject: [PATCH] Add Account Member Creation (#192) We can now create account members threough the SDK --- src/Endpoints/AccountMembers.php | 34 +++++++++ tests/Endpoints/AccountMembersTest.php | 32 ++++++++ .../Endpoints/createAccountMember.json | 74 +++++++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 src/Endpoints/AccountMembers.php create mode 100644 tests/Endpoints/AccountMembersTest.php create mode 100644 tests/Fixtures/Endpoints/createAccountMember.json diff --git a/src/Endpoints/AccountMembers.php b/src/Endpoints/AccountMembers.php new file mode 100644 index 0000000..c9f1c3c --- /dev/null +++ b/src/Endpoints/AccountMembers.php @@ -0,0 +1,34 @@ +adapter = $adapter; + } + + public function addAccountMember(string $accountId, string $email, array $roles): \stdClass + { + $options = [ + 'email' => $email, + 'roles' => $roles, + ]; + + $account = $this->adapter->post('accounts/' . $accountId . '/members', $options); + $this->body = json_decode($account->getBody()); + + return $this->body->result; + } +} diff --git a/tests/Endpoints/AccountMembersTest.php b/tests/Endpoints/AccountMembersTest.php new file mode 100644 index 0000000..c43c96a --- /dev/null +++ b/tests/Endpoints/AccountMembersTest.php @@ -0,0 +1,32 @@ +getPsr7JsonResponseForFixture('Endpoints/createAccountMember.json'); + + $mock = $this->getMockBuilder(Adapter::class)->getMock(); + $mock->method('post')->willReturn($response); + + $mock->expects($this->once()) + ->method('post') + ->with( + $this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/members'), + $this->equalTo([ + 'email' => 'user@example.com', + 'roles' => [ + '3536bcfad5faccb999b47003c79917fb', + ], + ]) + ); + + $accountMembers = new AccountMembers($mock); + $accountMembers->addAccountMember('01a7362d577a6c3019a474fd6f485823', 'user@example.com', ['3536bcfad5faccb999b47003c79917fb']); + + $this->assertEquals('4536bcfad5faccb111b47003c79917fa', $accountMembers->getBody()->result->id); + } +} diff --git a/tests/Fixtures/Endpoints/createAccountMember.json b/tests/Fixtures/Endpoints/createAccountMember.json new file mode 100644 index 0000000..c7e310f --- /dev/null +++ b/tests/Fixtures/Endpoints/createAccountMember.json @@ -0,0 +1,74 @@ +{ + "success": true, + "errors": [], + "messages": [], + "result": { + "id": "4536bcfad5faccb111b47003c79917fa", + "code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0", + "user": { + "id": "7c5dae5552338874e5053f2534d2767a", + "first_name": "John", + "last_name": "Appleseed", + "email": "user@example.com", + "two_factor_authentication_enabled": false + }, + "status": "accepted", + "roles": [ + { + "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 + } + } + } + ] + } +}