diff options
Diffstat (limited to 'opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations')
3 files changed, 93 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/__init__.py b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/__init__.py diff --git a/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/endpoint.py b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/endpoint.py new file mode 100644 index 00000000..0d9ad5cd --- /dev/null +++ b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/endpoint.py @@ -0,0 +1,22 @@ +from opendc.models.prefab import Prefab +from opendc.util.database import DB +from opendc.models.user import User +from opendc.util.rest import Response + + +def GET(request): + """Return all prefabs the user is authorized to access""" + + user = User.from_google_id(request.google_id) + + user.check_exists() + + own_prefabs = DB.fetch_all({'authorId': user.get_id()}, Prefab.collection_name) + public_prefabs = DB.fetch_all({'visibility': 'public'}, Prefab.collection_name) + + authorizations = {"authorizations": []} + + authorizations["authorizations"].append(own_prefabs) + authorizations["authorizations"].append(public_prefabs) + + return Response(200, 'Successfully fetched authorizations.', authorizations) diff --git a/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/test_endpoint.py b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/test_endpoint.py new file mode 100644 index 00000000..6d36d428 --- /dev/null +++ b/opendc-web/opendc-web-api/opendc/api/v2/prefabs/authorizations/test_endpoint.py @@ -0,0 +1,71 @@ +from opendc.util.database import DB +from unittest.mock import Mock + +test_id = 24 * '1' + + +def test_get_authorizations(client, mocker): + DB.fetch_all = Mock() + mocker.patch.object(DB, 'fetch_one', return_value={'_id': test_id}) + DB.fetch_all.side_effect = [ + [{ + '_id': test_id, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': test_id, + 'visibility' : 'private' + }, + { + '_id': '2' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': test_id, + 'visibility' : 'private' + }, + { + '_id': '3' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': test_id, + 'visibility' : 'public' + }, + { + '_id': '4' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': test_id, + 'visibility' : 'public' + }], + [{ + '_id': '5' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': '2' * 24, + 'visibility' : 'public' + }, + { + '_id': '6' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': '2' * 24, + 'visibility' : 'public' + }, + { + '_id': '7' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': '2' * 24, + 'visibility' : 'public' + }, + { + '_id': '8' * 24, + 'datetimeCreated': '000', + 'datetimeLastEdited': '000', + 'authorId': '2' * 24, + 'visibility' : 'public' + }] + ] + mocker.patch.object(DB, 'fetch_one', return_value={'_id': test_id}) + res = client.get('/v2/prefabs/authorizations') + assert '200' in res.status + |
