aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2022-11-24auth: Check for authentication and fix errors...* gn3/auth/authorisation/groups.py: base `MembershipError` on new `AuthorisationError` base exception. Use new authentication checking decorator. * gn3/auth/authorisation/privileges.py: Change argument to User object rather than UUID object * gn3/auth/authorisation/roles.py: Use new authentication checking decorator. * tests/unit/auth/test_groups.py: use `conftest.TEST_USER` * tests/unit/auth/test_privileges.py: use `conftest.TEST_USER` * tests/unit/auth/test_roles.py: use `conftest.TEST_USER` Frederick Muriuki Muriithi
2022-11-24auth: Implement `create_resource` function...* gn3/auth/authentication/checks.py: new `authenticated_p` decorator to apply on any function that requires the user to be authenticated before it runs. * gn3/auth/authorisation/checks.py: use a `auth.authentication.users.User` object rather than a UUID object in the global `g`. * gn3/auth/authorisation/groups.py: Implement the `authenticated_user_group` function to get the group(s) in which the currently authenticated user belongs. * gn3/auth/authorisation/resources.py: Implement the `create_resource` function correctly. * tests/unit/auth/conftest.py: extract the User objects into a global variable for reusability with the tests. * tests/unit/auth/test_resources.py: Use global user objects from conftest in the tests. Set a User object (rather than UUID) in the global `g` variable. Frederick Muriuki Muriithi
2022-11-24auth: Define base exceptions...* gn3/auth/authentication/exceptions.py: define `AuthenticationError` * gn3/auth/authorisation/exceptions.py: define `AuthorisationError` Frederick Muriuki Muriithi
2022-11-24tests: Add test for `create_resource`...* gn3/auth/authorisation/resources.py: Define Resource and ResourceCategory classes. Create the `create_resource` stub. * tests/unit/auth/test_resources.py: test for `create_resource` function Frederick Muriuki Muriithi
2022-11-23Create a new REST endpoint for fetching a phenotype's metadata...* gn3/api/general.py: (dataset_metadata) Delete. * gn3/api/metadata.py: Import Blueprint, jsonify, current_app, SPARQLWrapper and get_dataset_metadata. (metadata): New Blueprint (jsonify_dataset_metadata): New function/end-point. * gn3/app.py: Import metadata (create_app): Register metadata blueprint. Munyoki Kilyungi
2022-11-21auth: Prevent group leader from being a member of multiple groups...* gn3/auth/authorisation/groups.py: Assign the group leader at group creation time. * tests/unit/auth/test_groups.py: Ensure the group leader is only ever a member of a single group. Frederick Muriuki Muriithi
2022-11-17auth: Finish implementation of `create_group_role`...* gn3/auth/authorisation/groups.py: Add `GroupRole` type. Fix typing annotations. Fix bugs. * tests/unit/auth/conftest.py: Fix bugs. * tests/unit/auth/test_groups.py: Fix test to run. Frederick Muriuki Muriithi
2022-11-17Migrations: Create `group_users` table...* migrations/auth/20221117_02_fmuZh-create-group-users-table.py: new migration * tests/unit/auth/test_migrations_create_tables.py: test new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-17tests: Add test to check creation of roles attached to groups...* tests/unit/auth/conftest.py: Add fixtures to help with testing * tests/unit/auth/test_groups.py: Add incomplete and failing test Frederick Muriuki Muriithi
2022-11-17auth: Define the `User` type...* gn3/auth/authentication.py -> gn3/auth/authentication/__init__.py: Convert module to package * gn3/auth/authentication/users.py: Define the `User` type Frederick Muriuki Muriithi
2022-11-17Tests: Make test failure messages clearer.Frederick Muriuki Muriithi
2022-11-17Migrations: Add column `group_role_id` to `group_roles` table...* migrations/auth/20221117_01_RDlfx-modify-group-roles-add-group-role-id.py: new migration * tests/unit/auth/test_migrations_add_remove_columns.py: test new migration Frederick Muriuki Muriithi
2022-11-17tests: test for addition of data to non-empty tableFrederick Muriuki Muriithi
2022-11-16pylint: fix some linting errorsFrederick Muriuki Muriithi
2022-11-16tests: Add tests for privileges...* migrations/auth/20221116_01_nKUmX-add-privileges-to-group-leader-role.py: new migration to fix data errors. * tests/unit/auth/test_privileges.py: test privileges Frederick Muriuki Muriithi
2022-11-16auth: fix bugs in the code...* gn3/auth/authorisation/privileges.py: Set id to UUID type * gn3/auth/authorisation/roles.py: fix parameters to types that sqlite3 supports * gn3/auth/db.py: add logging for errors and re-raise the exception * tests/unit/auth/test_roles.py: fix test Frederick Muriuki Muriithi
2022-11-16tests: Test role creation...* tests/unit/auth/test_roles.py: new tests. Frederick Muriuki Muriithi
2022-11-16Inject SPARQLWrapper as a parameter...* gn3/db/rdf.py: Delete gn3.setting.SPARQL_ENDPOINT import. (sparql_query): Inject SPARQLWrapper. (get_dataset_metadata): Ditto. Munyoki Kilyungi
2022-11-15auth: Add `create_group_role` function.Frederick Muriuki Muriithi
2022-11-15auth: Return results of calling function directly...* gn3/auth/authorisation/checks.py: Return results of calling the function rather than a dict of values that include the results. * gn3/auth/authorisation/groups.py: Use the newer form of `authorised_p` decorator. * tests/unit/auth/test_groups.py: Update tests Frederick Muriuki Muriithi
2022-11-15auth: Specify types for privileges, roles, groups...Use specified types for privileges, roles and types rather than using strings to help with limiting bugs. * gn3/auth/authorisation/groups.py: Specify and use the `Group` type * gn3/auth/authorisation/privileges.py: Specify and use the `Privilege` type * gn3/auth/authorisation/roles.py: Specify the `Role` type. Add the `create_role` function. Frederick Muriuki Muriithi
2022-11-15Add missing module __init__.py to mitigate the mypy errorsFrederick Muriuki Muriithi
2022-11-15pylint: Fix a myriad of linting errorsFrederick Muriuki Muriithi
2022-11-15auth: Add some typing information to the functionsFrederick Muriuki Muriithi
2022-11-15auth: Reorganise package - move function to `checks` module...* gn3/auth/authorisation/__init__.py: delete function * gn3/auth/authorisation/checks.py: move function to `checks` module Frederick Muriuki Muriithi
2022-11-15pylint: Fix linting errors.Frederick Muriuki Muriithi
2022-11-15tests: typo: fix migration script file nameFrederick Muriuki Muriithi
2022-11-15tests: Use `gn3.auth.db` functions for db connection and cursor...* tests/unit/auth/conftest.py: use the functions in `gn3.auth.db` to acquire the database connection and cursor since they handle some of the basic issues like rollback and commit, meaning we do not have to explicitly handle said issues in the fixtures. Frederick Muriuki Muriithi
2022-11-15tests: Fix cause of `DeprecationWarning`...* tests/unit/auth/test_groups.py: use Flask's application context directly rather than the request context to access `g` in order to get rid of the `DeprecationWarning`. Frederick Muriuki Muriithi
2022-11-14auth: Implement `create_group`Frederick Muriuki Muriithi
2022-11-14tests: split test app and test client...* The test app and the test client are both needed as fixtures in different places Frederick Muriuki Muriithi
2022-11-14Migrations: Create `user_roles` table...* migrations/auth/20221114_05_hQun6-create-user-roles-table.py: new migration * tests/unit/auth/test_migrations_create_tables.py: test new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-14auth: 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` Frederick Muriuki Muriithi
2022-11-14Migrations: Add `user_editable` field to roles table...Some roles will not be user editable to prevent inconsistencies, and possible privilege escalation. * migrations/auth/20221110_05_BaNtL-create-roles-table.py: Add `user_editable` column to table * migrations/auth/20221114_04_tLUzB-initialise-basic-roles.py: Set `group-leader` role as not user editable Frederick Muriuki Muriithi
2022-11-14Migrations: Create the `group-leader` role and give it privileges...* migrations/auth/20221114_04_tLUzB-initialise-basic-roles.py: new migration * tests/unit/auth/test_migrations_insert_data_into_empty_table.py: test new migration Frederick Muriuki Muriithi
2022-11-14Migrations: Create `group_roles` table...* migrations/auth/20221110_05_BaNtL-create-roles-table.py: modify migration * migrations/auth/20221114_03_PtWjc-create-group-roles-table.py: new migration * tests/unit/auth/test_migrations_create_tables.py: test new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-14Migrations: Drop `generic_role*` tables...Drop the `generic_role*` tables, since what they were envisioned for can be handled a different, (arguably) more simple way. * migrations/auth/20221114_02_DKKjn-drop-generic-role-tables.py: new migration * tests/unit/auth/test_migrations_drop_tables.py: test new migration Frederick Muriuki Muriithi
2022-11-14Rename files for consistency...* Name all tests that test migrations to start with `test_migrations_` Frederick Muriuki Muriithi
2022-11-14Migrations: Add generic_role_privileges table...Add table `generic_role_privileges` table to link the generic roles to the privileges they provide. * migrations/auth/20221114_01_n8gsF-create-generic-role-privileges-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-14Migrations: Migration for initial privileges...* migrations/auth/20221113_01_7M0hv-enumerate-initial-privileges.py: new migration. * tests/unit/auth/test_migrations_insert_data_into_empty_table.py: test new migration. Frederick Muriuki Muriithi
2022-11-13Documentation: Explain how to run migrations...* .gitignore: ignore all yoyo configuration files * README.md: Update documentation * yoyo.auth.ini: stop tracking the yoyo configuration file. Frederick Muriuki Muriithi
2022-11-10Migrations: Add columns to 'privileges' table...* migrations/auth/20221110_08_23psB-add-privilege-category-and-privilege-description-columns-to-privileges-table.py: new migration * tests/unit/auth/test_migrations_add_remove_columns.py: test new migration Frederick Muriuki Muriithi
2022-11-10Tests: Generalise tests for adding/removing columns to/from tablesFrederick Muriuki Muriithi
2022-11-10Migrations: migration for `role_privileges` table...* migrations/auth/20221110_07_7WGa1-create-role-privileges-table.py: new migration Commit ee72678fabb86d66ba7d61d26643cc73df94ee5d only contains tests for this migration. Frederick Muriuki Muriithi
2022-11-10Migrations: migration for `role_privileges` table...* tests/unit/auth/test_create_table_migrations.py: new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-10Migrations: migration for 'generic_roles' table...* migrations/auth/20221110_06_Pq2kT-create-generic-roles-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test new migration Frederick Muriuki Muriithi
2022-11-10Migrations: migration for 'roles' table...* migrations/auth/20221110_05_BaNtL-create-roles-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test new migration * tests/unit/auth/test_migrations_indexes.py: test new migration Frederick Muriuki Muriithi
2022-11-10Migrations: migration for 'genotype_resources' table...* migrations/auth/20221110_04_6PRFQ-create-genotype-resources-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test new migration Frederick Muriuki Muriithi
2022-11-10Migrations: Add migration for 'phenotype_resources' table...* migrations/auth/20221110_03_ka3W0-create-phenotype-resources-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test for new migration Frederick Muriuki Muriithi
2022-11-10Migrations: Add migration for mrna_resources table...* migrations/auth/20221110_02_z1dWf-create-mrna-resources-table.py: new migration * tests/unit/auth/test_create_table_migrations.py: test for new migration Frederick Muriuki Muriithi