Skip to content

Commit 61f9720

Browse files
committed
missing tests
1 parent 29959d6 commit 61f9720

File tree

2 files changed

+167
-0
lines changed

2 files changed

+167
-0
lines changed

specs/client/test_access_token.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import pytest
2+
import mock
3+
from amadeus import Client
4+
from amadeus.client.access_token import AccessToken
5+
6+
7+
class TokenResponse:
8+
def __init__(self, result):
9+
self.result = result
10+
11+
12+
@pytest.fixture
13+
def self():
14+
self.request = mock.MagicMock(
15+
return_value=TokenResponse({'access_token': 'abc', 'expires_in': 1799}))
16+
self.client = mock.MagicMock(Client)
17+
self.client._unauthenticated_request = self.request
18+
self.client.client_id = '123'
19+
self.client.client_secret = '234'
20+
self.access_token = AccessToken(self.client)
21+
return self
22+
23+
24+
def test_bearer_token(self):
25+
token = self.access_token._bearer_token()
26+
assert token == 'Bearer abc'
27+
self.client._unauthenticated_request.assert_called_with(
28+
'POST', '/v1/security/oauth2/token',
29+
{
30+
'grant_type': 'client_credentials',
31+
'client_id': '123',
32+
'client_secret': '234'
33+
})
34+
35+
36+
def test_cached_token_valid(self):
37+
access_token = self.access_token
38+
token = access_token._bearer_token()
39+
assert token == 'Bearer abc'
40+
self.client._unauthenticated_request.assert_called_once()
41+
token2 = access_token._bearer_token()
42+
assert token2 == 'Bearer abc'
43+
self.client._unauthenticated_request.assert_called_once()
44+
45+
46+
def test_cached_token_expired(self):
47+
access_token = self.access_token
48+
token = access_token._bearer_token()
49+
assert token == 'Bearer abc'
50+
access_token.expires_at = 0
51+
token2 = access_token._bearer_token()
52+
assert token2 == 'Bearer abc'
53+
self.client._unauthenticated_request.call_count == 2

specs/client/test_request.py

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import pytest
2+
from amadeus import Request
3+
from urllib.request import Request as HTTPRequest
4+
5+
6+
@pytest.fixture
7+
def self():
8+
self.host = 'example.com'
9+
self.verb = 'GET'
10+
self.path = '/foo/bar'
11+
self.params = {'foo': 'bar'}
12+
self.bearer_token = 'Bearer 123'
13+
self.client_version = '1.2.3'
14+
self.lang_version = '2.3.4'
15+
self.app_id = 'amadeus-cli'
16+
self.app_version = '3.4.5'
17+
self.ssl = True
18+
self.port = 443
19+
self.request = Request({
20+
'host': self.host,
21+
'verb': self.verb,
22+
'path': self.path,
23+
'params': self.params,
24+
'bearer_token': self.bearer_token,
25+
'client_version': self.client_version,
26+
'language_version': self.lang_version,
27+
'app_id': self.app_id,
28+
'app_version': self.app_version,
29+
'ssl': self.ssl,
30+
'port': self.port
31+
})
32+
return self
33+
34+
35+
def test_init(self):
36+
assert self.request.host == self.host
37+
assert self.request.port == self.port
38+
assert self.request.ssl is True
39+
assert self.request.scheme == 'https'
40+
assert self.request.verb == self.verb
41+
assert self.request.path == self.path
42+
assert self.request.params == self.params
43+
assert self.request.bearer_token == self.bearer_token
44+
assert self.request.client_version == self.client_version
45+
assert self.request.language_version == self.lang_version
46+
assert self.request.app_id == self.app_id
47+
assert self.request.app_version == self.app_version
48+
49+
50+
def test_http_request(self):
51+
assert isinstance(self.request.http_request, HTTPRequest)
52+
assert self.request.http_request.data is None
53+
assert self.request.http_request.get_header('Content-Type', None) is None
54+
assert self.request.http_request.get_header(
55+
'Authorization') == self.bearer_token
56+
assert self.request.http_request.get_header(
57+
'Accept') == 'application/json, application/vnd.amadeus+json'
58+
assert self.request.http_request.get_header(
59+
'User-agent') == 'amadeus-python/1.2.3 python/2.3.4 amadeus-cli/3.4.5'
60+
61+
self.request = Request({
62+
'host': self.host,
63+
'verb': 'POST',
64+
'path': self.path,
65+
'params': self.params,
66+
'bearer_token': self.bearer_token,
67+
'client_version': self.client_version,
68+
'language_version': self.lang_version,
69+
'app_id': self.app_id,
70+
'app_version': self.app_version,
71+
'port': self.port,
72+
'ssl': self.ssl
73+
})
74+
assert isinstance(self.request.http_request, HTTPRequest)
75+
url = self.request.http_request.get_full_url()
76+
assert url == 'https://example.com/foo/bar'
77+
assert self.request.http_request.data == b'{\"foo\": \"bar\"}'
78+
79+
80+
def test_x_http_method_override(self):
81+
for path in Request.list_httpoverride:
82+
self.request = Request({
83+
'host': self.host,
84+
'verb': 'POST',
85+
'path': path,
86+
'params': self.params,
87+
'bearer_token': self.bearer_token,
88+
'client_version': self.client_version,
89+
'language_version': self.lang_version,
90+
'app_id': self.app_id,
91+
'app_version': self.app_version,
92+
'port': self.port,
93+
'ssl': self.ssl
94+
})
95+
assert isinstance(self.request.http_request, HTTPRequest)
96+
assert self.request.headers['X-HTTP-Method-Override'] == 'GET'
97+
98+
99+
def test_custom_scheme_and_port(self):
100+
self.request = Request({
101+
'host': self.host,
102+
'verb': 'POST',
103+
'path': self.path,
104+
'params': self.params,
105+
'bearer_token': self.bearer_token,
106+
'client_version': self.client_version,
107+
'language_version': self.lang_version,
108+
'app_id': self.app_id,
109+
'app_version': self.app_version,
110+
'port': 8080,
111+
'ssl': False
112+
})
113+
url = self.request.http_request.get_full_url()
114+
assert url == 'http://example.com:8080/foo/bar'

0 commit comments

Comments
 (0)