|
1 |
import os
|
|
2 |
import json
|
|
3 |
|
|
4 |
import pytest
|
|
5 |
import mock
|
|
6 |
from rest_framework.test import APIClient as Client
|
|
7 |
|
|
8 |
from mandayejs.applications import Archimed
|
|
9 |
from utils import create_user, create_credentials
|
|
10 |
|
|
11 |
pytestmark = pytest.mark.django_db
|
|
12 |
|
|
13 |
|
|
14 |
def get_base_dir(filename):
|
|
15 |
return file(os.path.join(os.path.dirname(__file__), 'data', filename)).read()
|
|
16 |
|
|
17 |
|
|
18 |
class MokcedRequestsResponse(mock.Mock):
|
|
19 |
|
|
20 |
def json(self):
|
|
21 |
return json.loads(self.content)
|
|
22 |
|
|
23 |
|
|
24 |
MOCKED_RESPONSES_LIST = [
|
|
25 |
MokcedRequestsResponse(content=get_base_dir('archimed_auth_failure_response.json')),
|
|
26 |
MokcedRequestsResponse(content=get_base_dir('archimed_auth_success_response.json')),
|
|
27 |
MokcedRequestsResponse(content=get_base_dir('archimed_account_detail_response.json'))
|
|
28 |
]
|
|
29 |
|
|
30 |
|
|
31 |
@mock.patch('mandayejs.views.requests.Session.post')
|
|
32 |
@mock.patch('mandayejs.applications.get_app_settings')
|
|
33 |
def test_archimed_ws(mocked_get_app_settings, mocked_requests_post):
|
|
34 |
mocked_get_app_settings.return_value = Archimed
|
|
35 |
mocked_requests_post.side_effect = MOCKED_RESPONSES_LIST
|
|
36 |
|
|
37 |
user = create_user(username='kevin', password='kevin')
|
|
38 |
|
|
39 |
# test with invalid username
|
|
40 |
client = Client()
|
|
41 |
client.login(username='kevin', password='kevin')
|
|
42 |
response = client.get('/_mandaye/ws/account/whatever/')
|
|
43 |
assert response.status_code == 404
|
|
44 |
assert response.data['message'] == 'User whatever does not exist'
|
|
45 |
assert response.data['success'] is False
|
|
46 |
|
|
47 |
# test with unlinked user
|
|
48 |
client = Client()
|
|
49 |
client.login(username='kevin', password='kevin')
|
|
50 |
response = client.get('/_mandaye/ws/account/kevin/')
|
|
51 |
assert response.status_code == 404
|
|
52 |
assert response.data['message'] == 'User kevin is not associated'
|
|
53 |
assert response.data['success'] is False
|
|
54 |
|
|
55 |
create_credentials(user, {'carte': 'kevin', 'code': 'whatever'})
|
|
56 |
# test with wrong credentials
|
|
57 |
client = Client()
|
|
58 |
client.login(username='kevin', password='kevin')
|
|
59 |
response = client.get('/_mandaye/ws/account/kevin/')
|
|
60 |
assert response.status_code == 401
|
|
61 |
assert response.data['message'] == 'Authentication failed'
|
|
62 |
assert response.data['success'] is False
|
|
63 |
|
|
64 |
# test with good credentials
|
|
65 |
client.login(username='kevin', password='kevin')
|
|
66 |
response = client.get('/_mandaye/ws/account/kevin/')
|
|
67 |
assert response.status_code == 200
|
|
68 |
assert response.data['message'] == 'Whatever is whatever'
|
|
69 |
assert response.data['success'] is True
|
0 |
|
-
|