From 867782faf7c17484dd5a6d950994ab503878be86 Mon Sep 17 00:00:00 2001
From: Pawel Nuckowski
Date: Thu, 18 May 2017 18:58:40 +0200
Subject: [PATCH] fix startswith error
---
aioresponses/core.py | 26 +++++++++++---------------
requirements-dev.txt | 18 +++++++++---------
setup.cfg | 13 -------------
tests/test_aioresponses.py | 32 ++++++++++++++++++++++----------
tox.ini | 2 +-
5 files changed, 43 insertions(+), 48 deletions(-)
diff --git a/aioresponses/core.py b/aioresponses/core.py
index 09ff03b..9096ced 100644
--- a/aioresponses/core.py
+++ b/aioresponses/core.py
@@ -1,21 +1,16 @@
# -*- coding: utf-8 -*-
import asyncio
-import collections
import json
-
-from functools import wraps
-from multidict import CIMultiDict
-
-try:
- from typing import Dict, Tuple
-except ImportError:
- Dict = dict
- Tuple = tuple
+from typing import Dict, Tuple
from unittest.mock import patch
from urllib.parse import urlparse, parse_qsl, urlencode
+import collections
from aiohttp import hdrs, ClientResponse, ClientConnectionError, client
+from functools import wraps
+from multidict import CIMultiDict
+
from .compat import URL
@@ -133,8 +128,8 @@ def add(self, url: str, method: str = hdrs.METH_GET, status: int = 200,
body: str = '',
exception: 'Exception' = None,
content_type: str = 'application/json',
- payload: Dict=None,
- headers: Dict=None) -> None:
+ payload: Dict = None,
+ headers: Dict = None) -> None:
self._responses.append(UrlResponse(
url,
method=method,
@@ -166,9 +161,10 @@ def _request_mock(self, orig_self: client.ClientSession,
**kwargs: Dict) -> 'ClientResponse':
"""Return mocked response object or raise connection error."""
for prefix in self._passthrough:
- if url.startswith(prefix):
- return self.patcher.temp_original(
- orig_self, method, url, *args, **kwargs)
+ if str(url).startswith(prefix):
+ return (yield from self.patcher.temp_original(
+ orig_self, method, url, *args, **kwargs
+ ))
response = self.match(method, url)
if response is None:
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 3457f06..291ce54 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,11 +1,11 @@
pip
-bumpversion
wheel
-watchdog
-flake8
-tox
-coverage
-Sphinx
-nose2
-cov-core
-ddt
+watchdog==0.8.3
+flake8==3.3.0
+tox==2.7.0
+coverage==4.4.1
+Sphinx==1.5.6
+nose2==0.6.5
+cov-core==1.15.0
+ddt==1.1.1
+typing
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
index f8aeb0e..fa25d8d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -25,19 +25,6 @@ all_files = 1
build-dir = docs/build
source-dir = docs/source
-[bumpversion]
-current_version = 0.1.0
-commit = True
-tag = True
-
-[bumpversion:file:setup.py]
-search = version='{current_version}'
-replace = version='{new_version}'
-
-[bumpversion:file:aioresponses/__init__.py]
-search = __version__ = '{current_version}'
-replace = __version__ = '{new_version}'
-
[bdist_wheel]
universal = 1
diff --git a/tests/test_aioresponses.py b/tests/test_aioresponses.py
index c0a4351..9a65ff8 100644
--- a/tests/test_aioresponses.py
+++ b/tests/test_aioresponses.py
@@ -1,12 +1,14 @@
# -*- coding: utf-8 -*-
import asyncio
from unittest.case import TestCase
-from unittest.mock import patch, Mock
+from unittest.mock import patch
from aiohttp import hdrs
from aiohttp.client import ClientSession
from aiohttp.client_reqrep import ClientResponse
+from aioresponses.compat import URL
+
try:
from aiohttp.errors import ClientConnectionError, HttpProcessingError
except ImportError:
@@ -136,13 +138,23 @@ def test_multiple_requests(self):
self.assertIn(key, m.requests)
self.assertEqual(len(m.requests[key]), 3)
self.assertEqual(m.requests[key][0].args, tuple())
- self.assertEqual(m.requests[key][0].kwargs, {'allow_redirects': True})
+ self.assertEqual(m.requests[key][0].kwargs,
+ {'allow_redirects': True})
- def test_passthrough(self):
- self.session._request = mocked = Mock()
- mocked.side_effect = asyncio.coroutine(
- lambda method, url, *args, **kwargs: None)
- with aioresponses(passthrough=['http://example.com']) as m:
- resp = self.loop.run_until_complete(self.session.get(self.url))
- mocked.assert_called_once_with(
- 'GET', 'http://example.com/api', allow_redirects=True)
+ def test_address_as_instance_of_url_combined_with_pass_through(self):
+ external_api = 'http://google.com'
+
+ @asyncio.coroutine
+ def doit():
+ api_resp = yield from self.session.get(self.url)
+ # we have to hit actual url,
+ # otherwise we do not test pass through option properly
+ ext_rep = yield from self.session.get(URL(external_api))
+ return api_resp, ext_rep
+
+ with aioresponses(passthrough=[external_api]) as m:
+ m.get(self.url, status=200)
+ api, ext = self.loop.run_until_complete(doit())
+
+ self.assertEqual(api.status, 200)
+ self.assertEqual(ext.status, 200)
diff --git a/tox.ini b/tox.ini
index ce11420..283480c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -2,7 +2,7 @@
envlist =
flake8,
coverage,
- {py34,py35}-aiohttp{10,11,12,master}
+ {py34,py35}-aiohttp{10,11,12,13,20,master}
skipsdist=True
[testenv:flake8]