aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-11-14 14:45:11 +0300
committerFrederick Muriuki Muriithi2022-11-14 14:45:11 +0300
commit06b9089e4db442767573bf1eead8b5c050437071 (patch)
tree8ba0804bf20a105015dc64bdfe631b8ddb0043ce
parent673d68366008c582a74820ae66ade57998148cfb (diff)
downloadgenenetwork3-06b9089e4db442767573bf1eead8b5c050437071.tar.gz
auth: Add test for `create_group`
* gn3/auth/authorisation/__init__.py: Add `authorised_p` decorator to be used for all function requiring authorisation. * gn3/auth/authorisation/groups.py: Add `create_group` function stub * tests/unit/auth/conftest.py: Add fixture for test users * tests/unit/auth/test_groups.py: Add tests for `create_group`
-rw-r--r--gn3/auth/authorisation/__init__.py11
-rw-r--r--gn3/auth/authorisation/groups.py7
-rw-r--r--tests/unit/auth/conftest.py17
-rw-r--r--tests/unit/auth/test_groups.py25
4 files changed, 60 insertions, 0 deletions
diff --git a/gn3/auth/authorisation/__init__.py b/gn3/auth/authorisation/__init__.py
index cc370e2..a6991d2 100644
--- a/gn3/auth/authorisation/__init__.py
+++ b/gn3/auth/authorisation/__init__.py
@@ -1 +1,12 @@
"""The authorisation module."""
+from typing import Union
+
+def authorised_p(success_message: Union[str, bool] = False, error_message: Union[str, bool] = False):
+ """Authorisation decorator."""
+ def __authoriser__(*args, **kwargs):
+ return {
+ "status": "error",
+ "message": error_message or "unauthorised"
+ }
+
+ return __authoriser__
diff --git a/gn3/auth/authorisation/groups.py b/gn3/auth/authorisation/groups.py
new file mode 100644
index 0000000..8c8a87f
--- /dev/null
+++ b/gn3/auth/authorisation/groups.py
@@ -0,0 +1,7 @@
+"""Handle the management of resource/user groups."""
+
+from . import authorised_p
+
+@authorised_p
+def create_group(group_name):
+ raise Exception("NOT IMPLEMENTED!")
diff --git a/tests/unit/auth/conftest.py b/tests/unit/auth/conftest.py
index b7e00bd..3d887be 100644
--- a/tests/unit/auth/conftest.py
+++ b/tests/unit/auth/conftest.py
@@ -50,3 +50,20 @@ def migrations_up_to(migration, migrations_dir):
migrations = read_migrations(migrations_dir)
index = [mig.path for mig in migrations].index(migration)
return MigrationList(migrations[0:index])
+
+@pytest.fixture(scope="function")
+def test_users(conn_after_auth_migrations):
+ query = "INSERT INTO users(user_id, email, name) VALUES (?, ?, ?)"
+ test_users = (
+ ("ecb52977-3004-469e-9428-2a1856725c7f", "group@lead.er",
+ "Group Leader"),
+ ("21351b66-8aad-475b-84ac-53ce528451e3", "group@mem.ber01",
+ "Group Member 01"),
+ ("ae9c6245-0966-41a5-9a5e-20885a96bea7", "group@mem.ber02",
+ "Group Member 02"),
+ ("9a0c7ce5-2f40-4e78-979e-bf3527a59579", "unaff@iliated.user",
+ "Unaffiliated User"))
+ with closing(conn_after_auth_migrations.cursor()) as cursor:
+ cursor.executemany(query, test_users)
+
+ yield conn_after_auth_migrations
diff --git a/tests/unit/auth/test_groups.py b/tests/unit/auth/test_groups.py
new file mode 100644
index 0000000..fa7f334
--- /dev/null
+++ b/tests/unit/auth/test_groups.py
@@ -0,0 +1,25 @@
+"""Test functions dealing with group management."""
+from uuid import UUID
+
+import pytest
+
+from gn3.auth.authorisation.groups import create_group
+
+@pytest.mark.unit_test
+@pytest.mark.parametrize(
+ "user_id,expected", (
+ ("ecb52977-3004-469e-9428-2a1856725c7f", {
+ "status": "success",
+ "message": "Successfully created group!",
+ "group_id": UUID("d32611e3-07fc-4564-b56c-786c6db6de2b")
+ }),
+ ("21351b66-8aad-475b-84ac-53ce528451e3", {
+ "status": "error", "message": "unauthorised"}),
+ ("ae9c6245-0966-41a5-9a5e-20885a96bea7", {
+ "status": "error", "message": "unauthorised"}),
+ ("9a0c7ce5-2f40-4e78-979e-bf3527a59579", {
+ "status": "error", "message": "unauthorised"}),
+ ("e614247d-84d2-491d-a048-f80b578216cb", {
+ "status": "error", "message": "unauthorised"})))
+def test_create_group(test_users, user_id, expected):
+ assert create_group("a_test_group") == expected