Skip to content

Commit 7de41dd

Browse files
authored
[DE-670]: GET /_api/database/user (#281)
* initial commit * update: tests
1 parent 7ff79d3 commit 7de41dd

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

arango/database.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ def response_handler(resp: Response) -> Json:
761761
#######################
762762

763763
def databases(self) -> Result[List[str]]:
764-
"""Return the names all databases.
764+
"""Return the names of all databases.
765765
766766
:return: Database names.
767767
:rtype: [str]
@@ -777,6 +777,23 @@ def response_handler(resp: Response) -> List[str]:
777777

778778
return self._execute(request, response_handler)
779779

780+
def databases_accessible_to_user(self) -> Result[List[str]]:
781+
"""Return the names of all databases accessible by the user.
782+
783+
:return: Database names accesible by the current user.
784+
:rtype: List[str]
785+
:raise arango.exceptions.DatabaseListError: If retrieval fails.
786+
"""
787+
request = Request(method="get", endpoint="/_api/database/user")
788+
789+
def response_handler(resp: Response) -> List[str]:
790+
if not resp.is_success:
791+
raise DatabaseListError(resp, request)
792+
result: List[str] = resp.body["result"]
793+
return result
794+
795+
return self._execute(request, response_handler)
796+
780797
def has_database(self, name: str) -> Result[bool]:
781798
"""Check if a database exists.
782799

tests/test_database.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,25 @@ def test_database_management(db, sys_db, bad_db):
246246
# Test list databases
247247
result = sys_db.databases()
248248
assert "_system" in result
249+
assert db.name in result
250+
251+
# Test list databases accesible to root user
252+
result = sys_db.databases_accessible_to_user()
253+
assert "_system" in result
254+
assert db.name in result
255+
256+
# Test list databases accessible to user
257+
result = db.databases_accessible_to_user()
258+
assert result == [db.name]
249259

250260
# Test list databases with bad database
251261
with assert_raises(DatabaseListError):
252262
bad_db.databases()
253263

264+
# Test list accessible databases with bad database
265+
with assert_raises(DatabaseListError):
266+
bad_db.databases_accessible_to_user()
267+
254268
# Test create database
255269
db_name = generate_db_name()
256270
assert sys_db.has_database(db_name) is False

0 commit comments

Comments
 (0)