Skip to content

Commit 03463df

Browse files
committed
Merge branch 'release/1.4.6'
2 parents 3cf8b69 + 1a351da commit 03463df

5 files changed

Lines changed: 72 additions & 39 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ flycheck-*
77
dist
88
.env
99
/.cache
10+
/.pytest_cache

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
language: python
2+
dist: xenial
23
sudo: false
34
python:
45
- '2.7'
5-
- '3.3'
6-
- '3.4'
76
- '3.5'
8-
- pypy
7+
- '3.6'
8+
- '3.7'
99
install:
1010
- pip install virtualenv
1111
script:

flask_loopback/flask_loopback.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ def handle_request(self, session, url, request):
7777
return e.response
7878

7979
self._test_client.cookie_jar.clear()
80+
for cookie in request._cookies:
81+
self._test_client.cookie_jar.set_cookie(cookie)
8082
resp = self._test_client.open(path, **open_kwargs)
8183
returned = requests.Response()
8284
assert returned.url is None

tests/conftest.py

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,89 +7,113 @@
77
from flask_loopback._compat import gzip_compress
88
from urlobject import URLObject as URL
99

10+
_COOKIE_NAME = "__SOME_COOKIE_NAME__"
11+
_COOKIE_VALUE = "__SOME_COOKIE_VALUE__"
12+
1013

1114
@pytest.fixture
12-
def active_app(request, app, ssl_port, non_ssl_port, hostname):
15+
def active_app(
16+
request, app, ssl_port, non_ssl_port, hostname
17+
): # pylint: disable=redefined-outer-name
1318
app.activate_address((hostname, ssl_port), ssl=True)
1419
app.activate_address((hostname, non_ssl_port), ssl=False)
20+
1521
@request.addfinalizer
16-
def cleanup():
22+
def cleanup(): # pylint: disable=unused-variable
1723
app.deactivate_address((hostname, ssl_port))
1824
app.deactivate_address((hostname, non_ssl_port))
1925

26+
2027
@pytest.fixture
2128
def app():
2229
returned = Flask(__name__)
2330

2431
@returned.route("/echo", methods=["post"])
25-
def echo(): # pylint: disable=unused-variable
26-
return jsonify({
27-
"result": True,
28-
})
32+
def echo(): # pylint: disable=unused-variable
33+
return jsonify({"result": True})
2934

30-
@returned.route('/request_vars')
31-
def get_request_vars(): # pylint: disable=unused-variable
32-
return jsonify(dict(
33-
(name, getattr(request, name))
34-
for name in ['host']))
35+
@returned.route("/request_vars")
36+
def get_request_vars(): # pylint: disable=unused-variable
37+
return jsonify(dict((name, getattr(request, name)) for name in ["host"]))
3538

36-
37-
@returned.route('/set_cookie')
38-
def set_cookie(): # pylint: disable=unused-variable
39+
@returned.route("/set_cookie")
40+
def set_cookie(): # pylint: disable=unused-variable
3941
returned = jsonify({})
40-
returned.set_cookie('x', value='y')
42+
returned.set_cookie(_COOKIE_NAME, value=_COOKIE_VALUE)
4143
return returned
4244

43-
@returned.route('/assert_no_cookies')
44-
def assert_no_cookies(): # pylint: disable=unused-variable
45+
@returned.route("/assert_no_cookies")
46+
def assert_no_cookies(): # pylint: disable=unused-variable
4547
assert not request.cookies
4648
return jsonify({"result": "ok"})
4749

50+
@returned.route("/assert_cookies")
51+
def assert_cookies(): # pylint: disable=unused-variable
52+
assert request.cookies[_COOKIE_NAME] == _COOKIE_VALUE
53+
return jsonify({})
4854

49-
@returned.route('/set_cookie_on_after_request')
50-
def set_cookie_on_after_request(): # pylint: disable=unused-variable
51-
g.cookies.append(('x', 'y'))
55+
@returned.route("/set_cookie_on_after_request")
56+
def set_cookie_on_after_request(): # pylint: disable=unused-variable
57+
g.cookies.append((_COOKIE_NAME, _COOKIE_VALUE))
5258
return jsonify({})
5359

54-
@returned.route('/stream_upload', methods=['POST'])
55-
def stream_upload(): # pylint: disable=unused-variable
60+
@returned.route("/stream_upload", methods=["POST"])
61+
def stream_upload(): # pylint: disable=unused-variable
5662
return hashlib.sha512(request.stream.read()).hexdigest()
5763

58-
@returned.route('/compressed')
59-
def compressed(): # pylint: disable=unused-variable
60-
orig = 'uncompressed!'.encode('utf-8')
61-
return Response(gzip_compress(orig), headers={'Content-Encoding': 'gzip'})
62-
64+
@returned.route("/compressed")
65+
def compressed(): # pylint: disable=unused-variable
66+
orig = "uncompressed!".encode("utf-8")
67+
return Response(gzip_compress(orig), headers={"Content-Encoding": "gzip"})
6368

6469
@returned.before_request
65-
def before():
70+
def before(): # pylint: disable=unused-variable
6671
g.cookies = []
6772

6873
@returned.after_request
69-
def after_request(response):
70-
cookies = getattr(g, 'cookies', [])
74+
def after_request(response): # pylint: disable=unused-variable
75+
cookies = getattr(g, "cookies", [])
7176
while cookies:
7277
response.set_cookie(*cookies.pop())
7378

7479
return response
7580

76-
7781
return FlaskLoopback(returned)
7882

83+
7984
@pytest.fixture
8085
def ssl_port():
8186
return 10443
8287

88+
8389
@pytest.fixture
8490
def non_ssl_port():
8591
return 10080
8692

93+
8794
@pytest.fixture
8895
def hostname():
8996
return "some-nonexistant-hostname.localdomain"
9097

98+
9199
@pytest.fixture(params=[True, False])
92-
def url(request, hostname, ssl_port, non_ssl_port):
100+
def url(
101+
request, hostname, ssl_port, non_ssl_port
102+
): # pylint: disable=redefined-outer-name
93103
with_ssl = request.param
94104

95-
return URL('http{0}://{1}:{2}'.format('s' if with_ssl else '', hostname, ssl_port if with_ssl else non_ssl_port))
105+
return URL(
106+
"http{0}://{1}:{2}".format(
107+
"s" if with_ssl else "", hostname, ssl_port if with_ssl else non_ssl_port
108+
)
109+
)
110+
111+
112+
@pytest.fixture
113+
def cookie_name():
114+
return _COOKIE_NAME
115+
116+
117+
@pytest.fixture
118+
def cookie_value():
119+
return _COOKIE_VALUE

tests/test_cookies.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,27 @@
55

66
@pytest.mark.parametrize('path', ['set_cookie', 'set_cookie_on_after_request'])
77
@pytest.mark.parametrize('with_session', [True, False])
8-
def test_cookies(active_app, url, path, with_session):
8+
def test_cookies(active_app, url, path, with_session, cookie_name, cookie_value):
99
url = url.add_path(path)
1010
if with_session:
1111
session = requests.Session()
1212
resp = session.get(url)
1313
else:
1414
resp = requests.get(url)
1515
resp.raise_for_status()
16-
assert resp.cookies['x'] == 'y'
16+
assert resp.cookies[cookie_name] == cookie_value
1717
if with_session:
18-
assert session.cookies['x'] == 'y'
18+
assert session.cookies[cookie_name] == cookie_value
1919

2020

2121
def test_client_forgets_cookies(active_app, url):
2222
resp = requests.get(url.add_path('set_cookie'))
2323
resp.raise_for_status()
2424

2525
requests.get(url.add_path('assert_no_cookies')).raise_for_status()
26+
27+
28+
def test_client_session_remembers_cookies(active_app, url):
29+
s = requests.Session()
30+
s.get(url.add_path('set_cookie'))
31+
s.get(url.add_path('assert_cookies')).raise_for_status()

0 commit comments

Comments
 (0)