Skip to content

Commit 91d1952

Browse files
authored
TNR-1756: Quotes and Reservations (#20)
* TNR-1756: Quotes and Reservations - Also bump version of `requests` due to CVE-2018-18074 * TNR-1756: Ensure https since we handle sensitive info * feng shui * `unit_id`s are `int`s now
1 parent 334b743 commit 91d1952

File tree

5 files changed

+257
-138
lines changed

5 files changed

+257
-138
lines changed

Pipfile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ name = "pypi"
77
backoff = "*"
88
pendulum = "*"
99
requests = "*"
10-
11-
[dev-packages]
1210
pytest = "*"
1311

1412
[requires]
15-
python_version = "3.6"
13+
python_version = "3.6"

Pipfile.lock

Lines changed: 66 additions & 85 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
setup(
44
name='VacasaConnect',
5-
version='0.3.0',
5+
version='0.4.0',
66
description='A Python 3.6 SDK for the connect.vacasa.com API.',
77
packages=['vacasa.connect'],
88
url='https://github.com/Vacasa/python-vacasa-connect-sdk',
99
license='MIT',
1010
install_requires=[
1111
'pendulum==2.*',
1212
'backoff~=1.6',
13-
'requests==2.*'
13+
'requests>=2.20.0'
1414
],
1515
long_description=open('README.md').read()
1616
)

tests/test_connect.py

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,63 @@
1-
import pendulum
21
from unittest.mock import patch, MagicMock
32

3+
import pendulum
4+
import pytest
5+
46
from vacasa.connect import VacasaConnect
57

8+
fake_access_token = {
9+
'access_token': 'fake_access_token',
10+
'expires_at': pendulum.now().add(days=1).to_datetime_string()
11+
}
12+
fake_refresh_token = {
13+
'refresh_token': 'fake_refresh_token',
14+
'expires_at': pendulum.now().add(days=1).to_datetime_string()
15+
}
16+
17+
18+
@patch.object(VacasaConnect, '_populate_tokens')
19+
def mock_connect(mock_populate_tokens):
20+
connect = VacasaConnect('fake_key', 'fake_secret', 'https://fake_url')
21+
22+
# mock call that generates tokens
23+
mock_response = MagicMock()
24+
mock_response.return_value = None
25+
mock_populate_tokens.return_value = mock_response
26+
27+
# populate fake tokens
28+
connect._access_token = fake_access_token
29+
connect._refresh_token = fake_refresh_token
630

7-
class TestVacasaConnect(object):
31+
return connect
832

9-
fake_access_token = {
10-
'access_token': 'fake_access_token',
11-
'expires_at': pendulum.now().add(days=1).to_datetime_string()
12-
}
13-
fake_refresh_token = {
14-
'refresh_token': 'fake_refresh_token',
15-
'expires_at': pendulum.now().add(days=1).to_datetime_string()
16-
}
1733

18-
@patch.object(VacasaConnect, '_populate_tokens')
19-
def mock_connect(self, mock_populate_tokens):
20-
connect = VacasaConnect('fake_key', 'fake_secret', 'fake_url')
34+
def test_generate_signature():
35+
connect = mock_connect()
36+
timestamp = int(pendulum.datetime(2017, 1, 1, 0, 0).timestamp())
37+
signature = connect._generate_signature(timestamp)
38+
expected = '87446b676b79b6e493a6b852ec3c32faf579086bd12728178197ef278ec7abfc'
2139

22-
# mock call that generates tokens
23-
mock_response = MagicMock()
24-
mock_response.return_value = None
25-
mock_populate_tokens.return_value = mock_response
40+
assert signature == expected
2641

27-
# populate fake tokens
28-
connect._access_token = self.fake_access_token
29-
connect._refresh_token = self.fake_refresh_token
3042

31-
return connect
43+
def test_add_meta_param_adds_one_to_empty():
44+
connect = mock_connect()
45+
params = {}
46+
params = connect._add_meta_param(params, 'include_photos')
47+
expected = {'include_meta': ',include_photos'}
3248

33-
def test_generate_signature(self):
34-
connect = self.mock_connect()
35-
timestamp = int(pendulum.datetime(2017, 1, 1, 0, 0).timestamp())
36-
signature = connect._generate_signature(timestamp)
37-
expected = '87446b676b79b6e493a6b852ec3c32faf579086bd12728178197ef278ec7abfc'
49+
assert params == expected
3850

39-
assert signature == expected
4051

41-
def test_add_meta_param_adds_one_to_empty(self):
42-
connect = self.mock_connect()
43-
params = {}
44-
params = connect._add_meta_param(params, 'include_photos')
45-
expected = {'include_meta': ',include_photos'}
52+
def test_add_meta_param_adds_another_to_existing():
53+
connect = mock_connect()
54+
params = {'include_meta': ',include_photos'}
55+
params = connect._add_meta_param(params, 'amenities_map')
56+
expected = {'include_meta': ',include_photos,amenities_map'}
4657

47-
assert params == expected
58+
assert params == expected
4859

49-
def test_add_meta_param_adds_another_to_existing(self):
50-
connect = self.mock_connect()
51-
params = {'include_meta': ',include_photos'}
52-
params = connect._add_meta_param(params, 'amenities_map')
53-
expected = {'include_meta': ',include_photos,amenities_map'}
5460

55-
assert params == expected
61+
def test_ensure_https():
62+
with pytest.raises(ValueError):
63+
VacasaConnect('fake_key', 'fake_secret', 'http://fake_endpoint')

0 commit comments

Comments
 (0)