Skip to content

Commit 99d8cfb

Browse files
authored
Add Account Member Listing (cloudflare#194)
1 parent bf796b9 commit 99d8cfb

3 files changed

Lines changed: 125 additions & 0 deletions

File tree

src/Endpoints/AccountMembers.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,20 @@ public function addAccountMember(string $accountId, string $email, array $roles)
3131

3232
return $this->body->result;
3333
}
34+
35+
public function listAccountMembers(string $accountId, int $page = 1, int $perPage = 20): \stdClass
36+
{
37+
$query = [
38+
'page' => $page,
39+
'per_page' => $perPage,
40+
];
41+
42+
$zone = $this->adapter->get('accounts/' . $accountId . '/members', $query);
43+
$this->body = json_decode($zone->getBody());
44+
45+
return (object)[
46+
'result' => $this->body->result,
47+
'result_info' => $this->body->result_info,
48+
];
49+
}
3450
}

tests/Endpoints/AccountMembersTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,31 @@ public function testAddAccountMember()
2929

3030
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $accountMembers->getBody()->result->id);
3131
}
32+
33+
public function testListAccountMembers()
34+
{
35+
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listAccountMembers.json');
36+
37+
$mock = $this->getMockBuilder(Adapter::class)->getMock();
38+
$mock->method('get')->willReturn($response);
39+
40+
$mock->expects($this->once())
41+
->method('get')
42+
->with(
43+
$this->equalTo('accounts/023e105f4ecef8ad9ca31a8372d0c353/members'),
44+
$this->equalTo([
45+
'page' => 1,
46+
'per_page' => 20,
47+
])
48+
);
49+
50+
$accountMembers = new AccountMembers($mock);
51+
$result = $accountMembers->listAccountMembers('023e105f4ecef8ad9ca31a8372d0c353', 1, 20);
52+
53+
$this->assertObjectHasAttribute('result', $result);
54+
55+
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $result->result[0]->id);
56+
$this->assertEquals(1, $result->result_info->count);
57+
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $accountMembers->getBody()->result[0]->id);
58+
}
3259
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
"success": true,
3+
"errors": [],
4+
"messages": [],
5+
"result": [
6+
{
7+
"id": "4536bcfad5faccb111b47003c79917fa",
8+
"code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0",
9+
"user": {
10+
"id": "7c5dae5552338874e5053f2534d2767a",
11+
"first_name": "John",
12+
"last_name": "Appleseed",
13+
"email": "user@example.com",
14+
"two_factor_authentication_enabled": false
15+
},
16+
"status": "accepted",
17+
"roles": [
18+
{
19+
"id": "3536bcfad5faccb999b47003c79917fb",
20+
"name": "Account Administrator",
21+
"description": "Administrative access to the entire Account",
22+
"permissions": {
23+
"analytics": {
24+
"read": true,
25+
"write": true
26+
},
27+
"billing": {
28+
"read": true,
29+
"write": true
30+
},
31+
"cache_purge": {
32+
"read": true,
33+
"write": true
34+
},
35+
"dns": {
36+
"read": true,
37+
"write": true
38+
},
39+
"dns_records": {
40+
"read": true,
41+
"write": true
42+
},
43+
"lb": {
44+
"read": true,
45+
"write": true
46+
},
47+
"logs": {
48+
"read": true,
49+
"write": true
50+
},
51+
"organization": {
52+
"read": true,
53+
"write": true
54+
},
55+
"ssl": {
56+
"read": true,
57+
"write": true
58+
},
59+
"waf": {
60+
"read": true,
61+
"write": true
62+
},
63+
"zones": {
64+
"read": true,
65+
"write": true
66+
},
67+
"zone_settings": {
68+
"read": true,
69+
"write": true
70+
}
71+
}
72+
}
73+
]
74+
}
75+
],
76+
"result_info": {
77+
"page": 1,
78+
"per_page": 20,
79+
"count": 1,
80+
"total_count": 200
81+
}
82+
}

0 commit comments

Comments
 (0)