mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-10 17:45:35 +00:00
test_aiohttp.py: Make cookie tests use pytest-httpbin (#706)
.. to make them faster and more robust.
This commit is contained in:
committed by
GitHub
parent
199f9f07f8
commit
43484e7cff
@@ -1,3 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import ssl
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
@@ -15,3 +18,15 @@ def mockbin(scheme):
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mockbin_request_url(mockbin):
|
def mockbin_request_url(mockbin):
|
||||||
return mockbin + "/request"
|
return mockbin + "/request"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def httpbin_ssl_context():
|
||||||
|
ssl_ca_location = os.environ["REQUESTS_CA_BUNDLE"]
|
||||||
|
ssl_cert_location = os.environ["REQUESTS_CA_BUNDLE"].replace("cacert.pem", "cert.pem")
|
||||||
|
ssl_key_location = os.environ["REQUESTS_CA_BUNDLE"].replace("cacert.pem", "key.pem")
|
||||||
|
|
||||||
|
ssl_context = ssl.create_default_context(cafile=ssl_ca_location)
|
||||||
|
ssl_context.load_cert_chain(ssl_cert_location, ssl_key_location)
|
||||||
|
|
||||||
|
return ssl_context
|
||||||
|
|||||||
@@ -320,31 +320,35 @@ def test_double_requests(tmpdir, mockbin_request_url):
|
|||||||
assert cassette.play_count == 2
|
assert cassette.play_count == 2
|
||||||
|
|
||||||
|
|
||||||
def test_cookies(scheme, tmpdir):
|
def test_cookies(httpbin_both, httpbin_ssl_context, tmpdir):
|
||||||
async def run(loop):
|
async def run(loop):
|
||||||
cookies_url = scheme + (
|
cookies_url = httpbin_both.url + (
|
||||||
"://httpbin.org/response-headers?"
|
"/response-headers?"
|
||||||
"set-cookie=" + urllib.parse.quote("cookie_1=val_1; Path=/") + "&"
|
"set-cookie=" + urllib.parse.quote("cookie_1=val_1; Path=/") + "&"
|
||||||
"Set-Cookie=" + urllib.parse.quote("Cookie_2=Val_2; Path=/")
|
"Set-Cookie=" + urllib.parse.quote("Cookie_2=Val_2; Path=/")
|
||||||
)
|
)
|
||||||
home_url = scheme + "://httpbin.org/"
|
home_url = httpbin_both.url + "/"
|
||||||
tmp = str(tmpdir.join("cookies.yaml"))
|
tmp = str(tmpdir.join("cookies.yaml"))
|
||||||
req_cookies = {"Cookie_3": "Val_3"}
|
req_cookies = {"Cookie_3": "Val_3"}
|
||||||
req_headers = {"Cookie": "Cookie_4=Val_4"}
|
req_headers = {"Cookie": "Cookie_4=Val_4"}
|
||||||
|
|
||||||
# ------------------------- Record -------------------------- #
|
# ------------------------- Record -------------------------- #
|
||||||
with vcr.use_cassette(tmp) as cassette:
|
with vcr.use_cassette(tmp) as cassette:
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
async with aiohttp.ClientSession(loop=loop, cookie_jar=aiohttp.CookieJar(unsafe=True)) as session:
|
||||||
cookies_resp = await session.get(cookies_url)
|
cookies_resp = await session.get(cookies_url, ssl=httpbin_ssl_context)
|
||||||
home_resp = await session.get(home_url, cookies=req_cookies, headers=req_headers)
|
home_resp = await session.get(
|
||||||
|
home_url, cookies=req_cookies, headers=req_headers, ssl=httpbin_ssl_context
|
||||||
|
)
|
||||||
assert cassette.play_count == 0
|
assert cassette.play_count == 0
|
||||||
assert_responses(cookies_resp, home_resp)
|
assert_responses(cookies_resp, home_resp)
|
||||||
|
|
||||||
# -------------------------- Play --------------------------- #
|
# -------------------------- Play --------------------------- #
|
||||||
with vcr.use_cassette(tmp, record_mode=vcr.mode.NONE) as cassette:
|
with vcr.use_cassette(tmp, record_mode=vcr.mode.NONE) as cassette:
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
async with aiohttp.ClientSession(loop=loop, cookie_jar=aiohttp.CookieJar(unsafe=True)) as session:
|
||||||
cookies_resp = await session.get(cookies_url)
|
cookies_resp = await session.get(cookies_url, ssl=httpbin_ssl_context)
|
||||||
home_resp = await session.get(home_url, cookies=req_cookies, headers=req_headers)
|
home_resp = await session.get(
|
||||||
|
home_url, cookies=req_cookies, headers=req_headers, ssl=httpbin_ssl_context
|
||||||
|
)
|
||||||
assert cassette.play_count == 2
|
assert cassette.play_count == 2
|
||||||
assert_responses(cookies_resp, home_resp)
|
assert_responses(cookies_resp, home_resp)
|
||||||
|
|
||||||
@@ -360,16 +364,16 @@ def test_cookies(scheme, tmpdir):
|
|||||||
run_in_loop(run)
|
run_in_loop(run)
|
||||||
|
|
||||||
|
|
||||||
def test_cookies_redirect(scheme, tmpdir):
|
def test_cookies_redirect(httpbin_both, httpbin_ssl_context, tmpdir):
|
||||||
async def run(loop):
|
async def run(loop):
|
||||||
# Sets cookie as provided by the query string and redirects
|
# Sets cookie as provided by the query string and redirects
|
||||||
cookies_url = scheme + "://httpbin.org/cookies/set?Cookie_1=Val_1"
|
cookies_url = httpbin_both.url + "/cookies/set?Cookie_1=Val_1"
|
||||||
tmp = str(tmpdir.join("cookies.yaml"))
|
tmp = str(tmpdir.join("cookies.yaml"))
|
||||||
|
|
||||||
# ------------------------- Record -------------------------- #
|
# ------------------------- Record -------------------------- #
|
||||||
with vcr.use_cassette(tmp) as cassette:
|
with vcr.use_cassette(tmp) as cassette:
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
async with aiohttp.ClientSession(loop=loop, cookie_jar=aiohttp.CookieJar(unsafe=True)) as session:
|
||||||
cookies_resp = await session.get(cookies_url)
|
cookies_resp = await session.get(cookies_url, ssl=httpbin_ssl_context)
|
||||||
assert not cookies_resp.cookies
|
assert not cookies_resp.cookies
|
||||||
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
||||||
assert cookies["Cookie_1"].value == "Val_1"
|
assert cookies["Cookie_1"].value == "Val_1"
|
||||||
@@ -378,8 +382,8 @@ def test_cookies_redirect(scheme, tmpdir):
|
|||||||
|
|
||||||
# -------------------------- Play --------------------------- #
|
# -------------------------- Play --------------------------- #
|
||||||
with vcr.use_cassette(tmp, record_mode=vcr.mode.NONE) as cassette:
|
with vcr.use_cassette(tmp, record_mode=vcr.mode.NONE) as cassette:
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
async with aiohttp.ClientSession(loop=loop, cookie_jar=aiohttp.CookieJar(unsafe=True)) as session:
|
||||||
cookies_resp = await session.get(cookies_url)
|
cookies_resp = await session.get(cookies_url, ssl=httpbin_ssl_context)
|
||||||
assert not cookies_resp.cookies
|
assert not cookies_resp.cookies
|
||||||
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
||||||
assert cookies["Cookie_1"].value == "Val_1"
|
assert cookies["Cookie_1"].value == "Val_1"
|
||||||
@@ -391,8 +395,8 @@ def test_cookies_redirect(scheme, tmpdir):
|
|||||||
cassette.responses[0]["headers"]["set-cookie"] = [
|
cassette.responses[0]["headers"]["set-cookie"] = [
|
||||||
"Cookie_1=Val_1; Expires=Wed, 21 Oct 2015 07:28:00 GMT"
|
"Cookie_1=Val_1; Expires=Wed, 21 Oct 2015 07:28:00 GMT"
|
||||||
]
|
]
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
async with aiohttp.ClientSession(loop=loop, cookie_jar=aiohttp.CookieJar(unsafe=True)) as session:
|
||||||
cookies_resp = await session.get(cookies_url)
|
cookies_resp = await session.get(cookies_url, ssl=httpbin_ssl_context)
|
||||||
assert not cookies_resp.cookies
|
assert not cookies_resp.cookies
|
||||||
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
cookies = session.cookie_jar.filter_cookies(cookies_url)
|
||||||
assert cookies["Cookie_1"].value == "Val_1"
|
assert cookies["Cookie_1"].value == "Val_1"
|
||||||
|
|||||||
Reference in New Issue
Block a user