Loading portal/rest/client.py +2 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ from flask_restplus import Namespace, Resource from portal import logger from portal.database.models import ClientType from portal.rest.schemas import users_schema, worker_schema from portal.rest.schemas import user_schema, worker_schema from portal.service import permissions client_namespace = Namespace('client') Loading @@ -18,6 +18,5 @@ class ClientController(Resource): def get(self): perm_service = permissions.PermissionsService() client = perm_service.client_owner schema = users_schema if client.type == ClientType.USER else worker_schema schema = user_schema if client.type == ClientType.USER else worker_schema return schema.dump(client)[0], 200 portal/rest/schemas.py +2 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ class UserSchema(BaseSchema, Schema): email = fields.Email(required=True) username = fields.Str(required=True) name = fields.Str() type = fields.Str() is_admin = fields.Bool(default=False, missing=False) submissions = NESTED['submissions'] review_items = NESTED['reviewitems'] Loading Loading @@ -278,6 +279,7 @@ class WorkerSchema(BaseSchema, Schema): """Component Schema """ name = fields.Str() type = fields.Str() url = fields.Str(allow_none=True) tags = fields.Str(allow_none=True) portal_secret = fields.Str(allow_none=True) Loading tests/rest/test_client.py 0 → 100644 +47 −0 Original line number Diff line number Diff line import json import pytest from tests.rest import utils @pytest.fixture def student_credentials(): return json.dumps({ "type": "username_password", "identifier": "student1", "secret": "123456" }) @pytest.fixture def worker_credentials(): return json.dumps({ "type": "secret", "identifier": "executor", "secret": "executor_secret" }) def test_client_detail_using_student_cred(client, student_credentials): path = f'/client' response = utils.make_request( client, path, 'get', credentials=student_credentials) print(f"Response: {response.data}") assert response.status_code == 200 assert response.mimetype == 'application/json' data = response.json assert data['username'] == 'student1' assert data['type'] == 'ClientType.USER' def test_client_detail_using_executor_cred(client, worker_credentials): path = f'/client' response = utils.make_request( client, path, 'get', credentials=worker_credentials) print(f"Response: {response.data}") assert response.status_code == 200 assert response.mimetype == 'application/json' data = response.json assert data['name'] == 'executor' assert data['type'] == 'ClientType.WORKER' Loading
portal/rest/client.py +2 −3 Original line number Diff line number Diff line Loading @@ -3,7 +3,7 @@ from flask_restplus import Namespace, Resource from portal import logger from portal.database.models import ClientType from portal.rest.schemas import users_schema, worker_schema from portal.rest.schemas import user_schema, worker_schema from portal.service import permissions client_namespace = Namespace('client') Loading @@ -18,6 +18,5 @@ class ClientController(Resource): def get(self): perm_service = permissions.PermissionsService() client = perm_service.client_owner schema = users_schema if client.type == ClientType.USER else worker_schema schema = user_schema if client.type == ClientType.USER else worker_schema return schema.dump(client)[0], 200
portal/rest/schemas.py +2 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ class UserSchema(BaseSchema, Schema): email = fields.Email(required=True) username = fields.Str(required=True) name = fields.Str() type = fields.Str() is_admin = fields.Bool(default=False, missing=False) submissions = NESTED['submissions'] review_items = NESTED['reviewitems'] Loading Loading @@ -278,6 +279,7 @@ class WorkerSchema(BaseSchema, Schema): """Component Schema """ name = fields.Str() type = fields.Str() url = fields.Str(allow_none=True) tags = fields.Str(allow_none=True) portal_secret = fields.Str(allow_none=True) Loading
tests/rest/test_client.py 0 → 100644 +47 −0 Original line number Diff line number Diff line import json import pytest from tests.rest import utils @pytest.fixture def student_credentials(): return json.dumps({ "type": "username_password", "identifier": "student1", "secret": "123456" }) @pytest.fixture def worker_credentials(): return json.dumps({ "type": "secret", "identifier": "executor", "secret": "executor_secret" }) def test_client_detail_using_student_cred(client, student_credentials): path = f'/client' response = utils.make_request( client, path, 'get', credentials=student_credentials) print(f"Response: {response.data}") assert response.status_code == 200 assert response.mimetype == 'application/json' data = response.json assert data['username'] == 'student1' assert data['type'] == 'ClientType.USER' def test_client_detail_using_executor_cred(client, worker_credentials): path = f'/client' response = utils.make_request( client, path, 'get', credentials=worker_credentials) print(f"Response: {response.data}") assert response.status_code == 200 assert response.mimetype == 'application/json' data = response.json assert data['name'] == 'executor' assert data['type'] == 'ClientType.WORKER'