Skip to content

Commit a78d2a1

Browse files
committed
Add databases and vpc OAuth scopes
1 parent 301fad1 commit a78d2a1

2 files changed

Lines changed: 47 additions & 0 deletions

File tree

‎linode_api4/login_client.py‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,33 @@ def __repr__(self):
268268
return "images:*"
269269
return "images:{}".format(self.name)
270270

271+
class Databases(Enum):
272+
"""
273+
Access to Managed Databases
274+
"""
275+
276+
read_only = 0
277+
read_write = 1
278+
all = 2
279+
280+
def __repr__(self):
281+
if self.name == "all":
282+
return "databases:*"
283+
return "databases:{}".format(self.name)
284+
285+
class VPC(Enum):
286+
"""
287+
Access to VPCs and subnets
288+
"""
289+
290+
read_write = 1
291+
all = 2
292+
293+
def __repr__(self):
294+
if self.name == "all":
295+
return "vpc:*"
296+
return "vpc:{}".format(self.name)
297+
271298
_scope_families = {
272299
"linodes": Linodes,
273300
"domains": Domains,
@@ -286,6 +313,8 @@ def __repr__(self):
286313
"nodebalancers": NodeBalancers,
287314
"longview": Longview,
288315
"images": Images,
316+
"databases": Databases,
317+
"vpc": VPC,
289318
}
290319

291320
@staticmethod

‎test/unit/login_client_test.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,21 @@ def test_parse_scopes_all(self):
5353
scopes,
5454
[getattr(c, "all") for c in OAuthScopes._scope_families.values()],
5555
)
56+
57+
def test_parse_scopes_databases_and_vpc(self):
58+
"""
59+
Tests parsing documented databases and vpc scopes
60+
"""
61+
scopes = OAuthScopes.parse(
62+
"databases:read_only,databases:read_write,vpc:read_write,vpc:*"
63+
)
64+
self.assertEqual(
65+
scopes,
66+
[
67+
OAuthScopes.Databases.read_only,
68+
OAuthScopes.Databases.read_write,
69+
OAuthScopes.VPC.read_write,
70+
OAuthScopes.VPC.all,
71+
],
72+
)
73+
self.assertEqual(OAuthScopes.parse("vpc:read_only"), [])

0 commit comments

Comments
 (0)