From 07b6e85661875695b03a528a0599bf007271618a Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Wed, 15 Feb 2017 15:26:55 +0100 Subject: [PATCH 3/3] archimed: return Response in Publik Api Response format(#14967) --- mandayejs/views.py | 22 +++++++++++++--------- tests/test_archimed.py | 16 ++++++++-------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/mandayejs/views.py b/mandayejs/views.py index 1698280..8dc6499 100644 --- a/mandayejs/views.py +++ b/mandayejs/views.py @@ -32,6 +32,14 @@ class ArchimedAccountDetails(APIView): """Archimed user's account details """ + def dispatch(self, request, *args, **kwargs): + response = super(ArchimedAccountDetails, self).dispatch(request, *args, **kwargs) + if response.status_code == 200: + response.data = {'data': response.data, 'err': 0} + else: + response.data = {'data': None, 'err': 1, 'err_desc': response.data} + return response + def get(self, request, *args, **kwargs): logger = logging.getLogger(__name__) app_settings = get_app_settings() @@ -43,15 +51,12 @@ class ArchimedAccountDetails(APIView): try: user = User.objects.get(username=username) except (User.DoesNotExist,): - return Response({'message': 'User %s does not exist' % username, - 'success': False}, status=status.HTTP_404_NOT_FOUND) + return Response('User %s does not exist' % username, status=status.HTTP_404_NOT_FOUND) try: credentials = UserCredentials.objects.get(user=user) except (UserCredentials.DoesNotExist,): - return Response({ - 'message': 'User %s is not associated' % username, - 'success': False}, status=status.HTTP_404_NOT_FOUND) + return Response('User %s is not associated' % username, status=status.HTTP_404_NOT_FOUND) login_url = request.build_absolute_uri( '/DEFAULT/Ermes/Recherche/logon.svc/logon') @@ -59,17 +64,16 @@ class ArchimedAccountDetails(APIView): with requests.Session() as session: login_info = credentials.to_login_info(decrypt=True) login_info = {'username': login_info['#carte'], 'password': login_info['#code']} - response = session.post(login_url, data=login_info, verify=False) + response = session.post(login_url, data=login_info) logger.debug("Archimed login response {}".format(response.json())) if not response.json()['success']: - return Response({'message': 'Authentication failed', - 'success': False}, status=status.HTTP_401_UNAUTHORIZED) + return Response('Authentication failed', status=status.HTTP_401_UNAUTHORIZED) content = { 'codeConfig': '', 'xslPath': 'Services/LectorShortAccount.xslt' } - response = session.post(ws_uri, json=content, verify=False) + response = session.post(ws_uri, json=content) logger.debug("Archimed ws response {}".format(response.json())) return Response(response.json()) diff --git a/tests/test_archimed.py b/tests/test_archimed.py index 4214235..00f209b 100644 --- a/tests/test_archimed.py +++ b/tests/test_archimed.py @@ -41,16 +41,16 @@ def test_archimed_ws(mocked_get_app_settings, mocked_requests_post): client.login(username='kevin', password='kevin') response = client.get('/_mandaye/ws/account/whatever/') assert response.status_code == 404 - assert response.data['message'] == 'User whatever does not exist' - assert response.data['success'] is False + assert response.data['err_desc'] == 'User whatever does not exist' + assert response.data['err'] == 1 # test with unlinked user client = Client() client.login(username='kevin', password='kevin') response = client.get('/_mandaye/ws/account/kevin/') assert response.status_code == 404 - assert response.data['message'] == 'User kevin is not associated' - assert response.data['success'] is False + assert response.data['err_desc'] == 'User kevin is not associated' + assert response.data['err'] == 1 create_credentials(user, {'carte': 'kevin', 'code': 'whatever'}) # test with wrong credentials @@ -58,12 +58,12 @@ def test_archimed_ws(mocked_get_app_settings, mocked_requests_post): client.login(username='kevin', password='kevin') response = client.get('/_mandaye/ws/account/kevin/') assert response.status_code == 401 - assert response.data['message'] == 'Authentication failed' - assert response.data['success'] is False + assert response.data['err_desc'] == 'Authentication failed' + assert response.data['err'] == 1 # test with good credentials client.login(username='kevin', password='kevin') response = client.get('/_mandaye/ws/account/kevin/') assert response.status_code == 200 - assert response.data['message'] == 'Whatever is whatever' - assert response.data['success'] is True + assert response.data['data']['message'] == 'Whatever is whatever' + assert response.data['data']['success'] is True -- 2.11.0