[Python-modules-commits] [webtest] 01/04: Import webtest_2.0.27.orig.tar.gz
Piotr Ożarowski
piotr at moszumanska.debian.org
Tue Jun 20 18:05:02 UTC 2017
This is an automated email from the git hooks/post-receive script.
piotr pushed a commit to branch master
in repository webtest.
commit c776afe9ea43d9eeb2462e0754707508484a0041
Author: Piotr Ożarowski <piotr at debian.org>
Date: Tue Jun 20 20:01:24 2017 +0200
Import webtest_2.0.27.orig.tar.gz
---
CHANGELOG.rst | 23 ++
PKG-INFO | 2 +-
WebTest.egg-info/PKG-INFO | 2 +-
docs/changelog.rst | 583 +++++++++++++++++++++++++++++++++++++++++++++-
docs/forms.rst | 2 +-
setup.py | 5 +-
tests/test_app.py | 9 +-
tests/test_forms.py | 10 +-
webtest/app.py | 25 +-
webtest/compat.py | 5 -
webtest/forms.py | 2 +-
webtest/response.py | 7 +-
webtest/utils.py | 2 +-
13 files changed, 644 insertions(+), 33 deletions(-)
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 505e206..73a53cb 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,29 @@
News
====
+2.0.27 (2017-03-15)
+-------------------
+
+- Bugfix: Allow to use set_cookie when HTTP_HOST is set
+
+- Fix #177: resp.json now always decode body as utf8
+
+
+2.0.26 (2017-03-05)
+-------------------
+
+- Added JWT auth support
+
+- Always show response body when response status is invalid
+
+
+2.0.25 (2017-02-05)
+-------------------
+
+- Fix #173: Do not omit file uploads without a file from post.
+ [Michael Howitz]
+
+
2.0.24 (2016-12-16)
-------------------
diff --git a/PKG-INFO b/PKG-INFO
index e5dce83..f11b688 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: WebTest
-Version: 2.0.24
+Version: 2.0.27
Summary: Helper to test WSGI applications
Home-page: http://webtest.pythonpaste.org/
Author: Gael Pasgrimaud
diff --git a/WebTest.egg-info/PKG-INFO b/WebTest.egg-info/PKG-INFO
index e5dce83..f11b688 100644
--- a/WebTest.egg-info/PKG-INFO
+++ b/WebTest.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: WebTest
-Version: 2.0.24
+Version: 2.0.27
Summary: Helper to test WSGI applications
Home-page: http://webtest.pythonpaste.org/
Author: Gael Pasgrimaud
diff --git a/docs/changelog.rst b/docs/changelog.rst
deleted file mode 120000
index e22698b..0000000
--- a/docs/changelog.rst
+++ /dev/null
@@ -1 +0,0 @@
-../CHANGELOG.rst
\ No newline at end of file
diff --git a/docs/changelog.rst b/docs/changelog.rst
new file mode 100644
index 0000000..73a53cb
--- /dev/null
+++ b/docs/changelog.rst
@@ -0,0 +1,582 @@
+News
+====
+
+2.0.27 (2017-03-15)
+-------------------
+
+- Bugfix: Allow to use set_cookie when HTTP_HOST is set
+
+- Fix #177: resp.json now always decode body as utf8
+
+
+2.0.26 (2017-03-05)
+-------------------
+
+- Added JWT auth support
+
+- Always show response body when response status is invalid
+
+
+2.0.25 (2017-02-05)
+-------------------
+
+- Fix #173: Do not omit file uploads without a file from post.
+ [Michael Howitz]
+
+
+2.0.24 (2016-12-16)
+-------------------
+
+- Drop python 2.6 support. Newer versions may still work if you use waitress < 1.0
+
+- Remove bs4 warnings
+
+- Docs improvments
+
+- Tets are WebOb 1.7.x compatible
+
+
+2.0.23 (2016-07-21)
+-------------------
+
+- Create universal wheels.
+
+
+2.0.22 (2016-07-21)
+-------------------
+
+- Fix #160: Do not guess encoding if response's charset is set.
+
+2.0.21 (2016-04-12)
+-------------------
+
+- PR #154 Allow Bearer auth
+
+- PR #147,#148 Take care of REFERER when using form.submit(), .click() and
+ .clickbutton()
+
+- PR #145 Allow to override content-type when using json methods
+
+2.0.20 (2015-11-03)
+-------------------
+
+- nothing new release. just try to make wheel available on pypi
+
+
+2.0.19 (2015-11-01)
+-------------------
+
+- fixed #131 prevent passing HTML parameters that conflict with Field kwargs
+
+- fixed #135 Document that WSGIProxy2 is required for "using webtest with a real url"
+
+- fixed #136 reset values of select multiple
+
+- drop py32 support (still work but test dependencies fail)
+
+2.0.18 (2015-02-05)
+-------------------
+
+- Avoid deprecation warning with py3.4
+
+
+2.0.17 (2014-12-20)
+-------------------
+
+- Properly check for default cookiejar arguments
+ [Julian Berman]
+
+- Avoid raising encoding errors from debugapp (needed to use with WSGIProxy2)
+ [Laurence Rowe]
+
+
+2.0.16 (2014-09-19)
+-------------------
+
+- Fixed #110. Forced values for Radio inputs are no longer ignored by value
+ property on get.
+ [bayprogrammer]
+
+- Added method TestApp.set_parser_features to change the parser_features used
+ by BeautifulSoup.
+ [tomasmoreyra]
+
+- Added app.set_cookie
+ [luhn]
+
+
+2.0.15 (2014-04-17)
+-------------------
+
+- Fixed #73. Python < 2.6.5 does not support unicode as keyword arguments names.
+ [Stepan Kolesnik]
+
+- Fixed #84 Application cookies for localhost are no longer ignored
+ [gawel]
+
+- Fixed #89 remove WSGIWarning: You are not supposed to send a body in a DELETE
+ request because we now have a good reason for that. See http://bit.ly/1tb3yxW
+ [gawel]
+
+- Fixed #92 You can now override TestApp.JSONEncoder to use a custom encoder
+ [gawel]
+
+- Fixed #93 Support basic authentication
+ [gawel]
+
+- Fixed #103 Broken "Edit me on GitHub" links in documentation
+ [gawel]
+
+- Fixed #106 Make wrapping the app in the lint middleware optional
+ [dmlayton]
+
+- Fixed #107 Explicit error message when WSGIProxy2 is not installer
+ [gawel]
+
+- Fixed #108 cgi.parse_qsl is pending deprecation
+ [gawel]
+
+2.0.14 (2014-01-23)
+-------------------
+
+- Allow `.select()` on <select>s and <select multiple>s.
+ [Markus Bertheau]
+
+
+2.0.13 (2014-01-23)
+-------------------
+
+- Allow selecting <select> options by text
+ [Markus Bertheau]
+
+
+2.0.12 (2014-01-17)
+-------------------
+
+- Ignore the `value` attribute of file inputs
+ [Markus Bertheau]
+
+- Allow selecting the form submit button by its value
+ [Markus Bertheau]
+
+
+2.0.11 (2013-12-29)
+-------------------
+
+- Depend on `unittest2` only for Python versions lower than 2.7
+ [iElectric]
+
+- Add an optional parameter to `TestApp`, allowing the user to specify the
+ parser used by BeautifulSoup
+ [lyndsysimon]
+
+
+2.0.10 (2013-11-14)
+-------------------
+
+- Make StopableWSGIServer thread daemonic
+ [lrowe]
+
+
+2.0.9 (2013-09-18)
+------------------
+
+- Make sure Upload.content_type is not ignored
+ https://github.com/Pylons/webtest/pull/88
+ [Marius Gedminas]
+
+
+2.0.8 (2013-09-17)
+------------------
+
+- Allow checking/unchecking a set of same-named checkboxes by assigning a list of values.
+ [carljm]
+
+- fix "AttributeError: 'InputWrapper' object has no attribute 'seek'"
+ [iElectric]
+
+- Added `xhr=True` parameter to `TestApp.get`, `TestApp.post`, `TestApp.head`, `TestApp.delete`
+ [kharandziuk]
+
+- Remove old (and broken?) casperjs/selenium backward compat imports. Fix
+ https://github.com/gawel/webtest-selenium/issues/9
+ [gawel]
+
+- Allow optionally specifying the MIME type of an uploaded form file. Fixes #86
+ [Marius Gedminas]
+
+
+2.0.7 (2013-08-07)
+------------------
+
+- Detect JSON if mimetype ends with +json, such as application/vnd.webtest+json
+ [homm]
+
+- Fixed #72. Use WSGIServer new api even if there waitress has backward compat.
+ [gawel]
+
+- Fixed #50. Corrected default value for the delete params argument.
+ [noonat]
+
+- Be sure to decode the content if it is gziped before returning it
+ [Alexis Métaireau]
+
+
+2.0.6 (2013-05-23)
+------------------
+
+- fixed #64. cookiejar api has changed in python3.3 [gawel]
+
+- allow to use a fixed StopableWSGIServer [gawel]
+
+- Do not alter the BeautifulSoup object when parsing forms. [Georges
+ Dubus]
+
+- Remove first newline while parse textarea block, how modern browsers does.
+ [Victor Safronovich] pull #69
+
+
+2.0.5 (2013-04-12)
+------------------
+
+* Ignore select.error (not socket.error) following
+ StopableWSGIServer.shutdown. [Laurence Rowe]
+
+* Handle the short form of <select multiple> [Marius Gedminas]
+
+
+2.0.4 (2013-03-28)
+------------------
+
+* Correctly handle <option> elements with no value attribute
+ [Marius Gedminas]
+
+* Ignore socket.error following StopableWSGIServer.shutdown. [Laurence Rowe]
+
+* <button> without type='submit' attribute is treated as Submit
+ control [Andrey Lebedev].
+
+* Support for redirects having relative "Location" header [Andrey Lebedev]
+
+
+2.0.3 (2013-03-19)
+------------------
+
+* Treat strings in the WSGI environment as native strings, compliant with
+ PEP-3333. [wosc]
+
+
+2.0.2 (2013-03-15)
+------------------
+
+* Allow TestResponse.click() to match HTML content again. [ender672]
+
+* Support secure cookies [Andrey Lebedev]
+
+2.0.1 (2013-03-05)
+------------------
+
+* Added Pasword field [diarmuidbourke]
+
+* re-allow to use unknow field type. Like ``type="email"``. [gawel]
+
+* Don't let BeautifulSoup use lxml. Fix GH-51 [kmike]
+
+* added :meth:`webtest.response.TestResponse.maybe_follow` method [kmike]
+
+2.0 (2013-02-25)
+----------------
+
+* drop zc.buildout usage for development, now using only virtualenv
+ [Domen Kožar]
+
+* Backward incompatibility : Removed the ``anchor`` argument of
+ :meth:`webtest.response.TestResponse.click` and the ``button`` argument of
+ :meth:`webtest.response.TestResponse.clickbutton`. It is for the greater good.
+ [madjar]
+
+* Rewrote API documentation [Domen Kožar]
+
+* Added `wsgiproxy` support to do HTTP request to an URL [gawel]
+
+* Use BeautifulSoup4 to parse forms [gawel]
+
+* Added `webtest.app.TestApp.patch_json` [gawel]
+
+* Implement `webtest.app.TestApp.cookiejar` support and kindof keep
+ `webtest.app.TestApp.cookies` functionality. `webtest.app.TestApp.cookies`
+ should be treated as read-only.
+ [Domen Kožar]
+
+* Split Selenium integration into separate package webtest-selenium
+ [gawel]
+
+* Split casperjs integration into separate package webtest-casperjs
+ [gawel]
+
+* Test coverage improvements [harobed, cdevienne, arthru, Domen Kožar, gawel]
+
+* Fully implement decoding of HTML entities
+
+* Fix tox configuration
+
+1.4.2
+-----
+
+* fix tests error due to CLRF in a tarball
+
+1.4.1
+-----
+
+* add travis-ci
+
+* migrate repository to https://github.com/Pylons/webtest
+
+* Fix a typo in apps.py: selectedIndicies
+
+* Preserve field order during parsing (support for deform and such)
+
+* allow equals sign in the cookie by spliting name-value-string pairs on
+ the first '=' sign as per
+ http://tools.ietf.org/html/rfc6265#section-5.2
+
+* fix an error when you use AssertionError(response) with unicode chars in
+ response
+
+1.4.0
+-----
+
+* added webtest.ext - allow to use casperjs
+
+1.3.6
+------
+
+* fix `#42 <https://bitbucket.org/ianb/webtest/issue/42>`_ Check uppercase
+ method.
+
+* fix `#36 <https://bitbucket.org/ianb/webtest/issue/36>`_ Radio can use forced
+ value.
+
+* fix `#24 <https://bitbucket.org/ianb/webtest/issue/24>`_ Include test
+ fixtures.
+
+* fix bug when trying to print a response which contain some unicode chars
+
+1.3.5
+------
+
+* fix `#39 <https://bitbucket.org/ianb/webtest/issue/39>`_ Add PATCH to
+ acceptable methods.
+
+
+1.3.4
+-----
+
+* fix `#33 <https://bitbucket.org/ianb/webtest/issue/33>`_ Remove
+ CaptureStdout. Do nothing and break pdb
+
+* use OrderedDict to store fields in form. See
+ `#31 <https://bitbucket.org/ianb/webtest/issue/31>`_
+
+* fix `#38 <https://bitbucket.org/ianb/webtest/issue/38>`_ Allow to post falsey
+ values.
+
+* fix `#37 <https://bitbucket.org/ianb/webtest/issue/37>`_ Allow
+ Content-Length: 0 without Content-Type
+
+* `fix #30 <https://bitbucket.org/ianb/webtest/issue/30>`_ bad link to pyquery
+ documentation
+
+* Never catch NameError during iteration
+
+1.3.3
+-----
+
+* added ``post_json``, ``put_json``, ``delete_json``
+
+* fix `#25 <https://bitbucket.org/ianb/webtest/issue/25>`_ params dictionary of
+ webtest.AppTest.post() does not support unicode values
+
+1.3.2
+-----
+
+* improve showbrowser. fixed `#23 <https://bitbucket.org/ianb/webtest/issue/23>`_
+
+* print_stderr fail with unicode string on python2
+
+1.3.1
+-----
+
+* Added .option() `#20 <https://bitbucket.org/ianb/webtest/issue/20>`_
+
+* Fix #21
+
+* Full python3 compat
+
+1.3
+---
+
+* Moved TestApp to app.py
+
+* Added selenium testing framework. See :mod:`~webtest.sel` module.
+
+
+1.2.4
+------
+
+* Accept lists for ``app.post(url, params=[...])``
+
+* Allow to use url that starts with the SCRIPT_NAME found in extra_environ
+
+* Fix `#16 <https://bitbucket.org/ianb/webtest/issue/16>`_ Default
+ content-type is now correctly set to `application/octet-stream`
+
+* Fix `#14 and #18 <https://bitbucket.org/ianb/webtest/issue/18>`_ Allow to use
+ `.delete(params={})`
+
+* Fix `#12 <https://bitbucket.org/ianb/webtest/issue/12>`_
+
+
+1.2.3
+-----
+
+* Fix `#10
+ <http://bitbucket.org/ianb/webtest/issue/10/testapprequest-method-overwrites-specifics-with-testapp-scoped>`_,
+ now `TestApp.extra_environ` doesn't take precedence over a WSGI
+ environment passed in through the request.
+
+* Removed stray print
+
+1.2.2
+-----
+
+* Revert change to cookies that would add ``"`` around cookie values.
+
+* Added property :meth:`webtest.Response.pyquery` which returns a
+ `PyQuery <http://pyquery.org/>`_ object.
+
+* Set base_url on ``resp.lxml``
+
+* Include tests and docs in tarball.
+
+* Fix sending in webob.Request (or webtest.TestRequest) objects.
+
+* Fix handling forms with file uploads, when no file is selected.
+
+* Added ``extra_environ`` argument to :meth:`webtest.TestResponse.click`.
+
+* Fixed/added wildcard statuses, like ``status="4*"``
+
+* Fix file upload fields in forms: allow upload field to be empty.
+
+* Added support for single-quoted html attributes.
+
+* `TestResponse` now has unicode support. It is turned on by default
+ for all responses with charset information. **This is backward
+ incompatible change** if you rely (e.g. in doctests) on parsed
+ form fields or responses returned by `json` and `lxml` methods
+ being encoded strings when charset header is in response. In order
+ to switch to old behaviour pass `use_unicode=False` flag to
+ `TestApp` constructor.
+
+
+1.2.1
+-----
+
+* Added method :meth:`TestApp.request`, which can be used for
+ sending requests with different methods (e.g., ``MKCOL``). This
+ method sends all its keyword arguments to
+ :meth:`webtest.TestRequest.blank` and then executes the request.
+ The parameters are somewhat different than other methods (like
+ :meth:`webtest.TestApp.get`), as they match WebOb's attribute
+ names exactly (the other methods were written before WebOb existed).
+
+* Removed the copying of stdout to stderr during requests.
+
+* Fix file upload fields in forms (`#340
+ <http://trac.pythonpaste.org/pythonpaste/ticket/340>`_) -- you could
+ upload files with :meth:`webtest.TestApp.post`, but if you use
+ ``resp.form`` file upload fields would not work (from rcs-comp.com
+ and Matthew Desmarais).
+
+1.2
+---
+
+* Fix form inputs; text inputs always default to the empty string, and
+ unselected radio inputs default to nothing at all. From Daniele
+ Paolella.
+
+* Fix following links with fragments (these fragments should not be
+ sent to the WSGI application). From desmaj.
+
+* Added ``force_value`` to select fields, like
+ ``res.form['select'].force_value("new_value")``. This makes it
+ possible to simulate forms that are dynamically updated. From
+ Matthew Desmarais.
+
+* Fixed :meth:`webtest.Response.mustcontain` when you pass in a
+ ``no=[strings]`` argument.
+
+1.1
+---
+
+* Changed the ``__str__`` of responses to make them more doctest
+ friendly:
+
+ - All headers are displayed capitalized, like Content-Type
+ - Headers are sorted alphabetically
+
+* Changed ``__repr__`` to only show the body length if the complete
+ body is not shown (for short bodies the complete body is in the
+ repr)
+
+* Note: **these are backward incompatible changes** if you are using
+ doctest (you'll have to update your doctests with the new format).
+
+* Fixed exception in the ``.delete`` method.
+
+* Added a ``content_type`` argument to ``app.post`` and ``app.put``,
+ which sets the ``Content-Type`` of the request. This is more
+ convenient when testing REST APIs.
+
+* Skip links in ``<script>...</script>`` tags (since that's not real
+ markup).
+
+1.0.2
+-----
+
+* Don't submit unnamed form fields.
+
+* Checkboxes with no explicit ``value`` send ``on`` (previously they
+ sent ``checked``, which isn't what browsers send).
+
+* Support for ``<select multiple>`` fields (from Matthew Desmarais)
+
+1.0.1
+---
+
+* Fix the ``TestApp`` validator's InputWrapper lacking support for
+ readline with an argument as needed by the cgi module.
+
+1.0
+---
+
+* Keep URLs in-tact in cases such as
+ ``app.get('http://www.python.org')`` (so HTTP_HOST=www.python.org,
+ etc).
+
+* Fix ``lxml.html`` import, so lxml 2.0 users can get HTML lxml
+ objects from ``resp.lxml``
+
+* Treat ``<input type="image">`` like a submit button.
+
+* Use ``BaseCookie`` instead of ``SimpleCookie`` for storing cookies
+ (avoids quoting cookie values).
+
+* Accept any ``params`` argument that has an ``items`` method (like
+ MultiDict)
+
+0.9
+---
+
+Initial release
diff --git a/docs/forms.rst b/docs/forms.rst
index 74fc6a3..0bd5740 100644
--- a/docs/forms.rst
+++ b/docs/forms.rst
@@ -43,7 +43,7 @@ object:
.. code-block:: python
>>> # dict of fields
- >>> form.fields.values() #doctest: +SKIP
+ >>> form.fields.items() #doctest: +SKIP
[(u'text', [<Text name="text">]), ..., (u'submit', [<Submit name="submit">])]
You can check the current value:
diff --git a/setup.py b/setup.py
index e7f0add..cd0eebf 100644
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ import sys
from setuptools import setup
from setuptools import find_packages
-version = '2.0.24'
+version = '2.0.27'
install_requires = [
'six',
@@ -19,9 +19,6 @@ tests_require = [
'PasteDeploy', 'WSGIProxy2', 'pyquery'
]
-if sys.version_info[0:2] < (2, 7):
- install_requires.append('ordereddict')
-
setup(name='WebTest',
version=version,
diff --git a/tests/test_app.py b/tests/test_app.py
index 4da0350..ed442b7 100644
--- a/tests/test_app.py
+++ b/tests/test_app.py
@@ -4,7 +4,7 @@ from webob import Request
from webob import Response
from webtest.compat import to_bytes
from webtest.compat import PY3
-from webtest.compat import OrderedDict
+from collections import OrderedDict
from webtest.debugapp import debug_app
from webtest import http
from tests.compat import unittest
@@ -199,6 +199,13 @@ class TestCookies(unittest.TestCase):
app.get('/')
app.reset()
+ app = webtest.TestApp(cookie_app,
+ extra_environ={'HTTP_HOST': 'testserver'})
+ app.set_cookie('foo', 'bar')
+ app.set_cookie('fizz', ';bar=baz') # Make sure we're escaping.
+ app.get('/')
+ app.reset()
+
def test_preserves_cookies(self):
def cookie_app(environ, start_response):
req = Request(environ)
diff --git a/tests/test_forms.py b/tests/test_forms.py
index 474e766..62f30e6 100644
--- a/tests/test_forms.py
+++ b/tests/test_forms.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
+import cgi
import os.path
import struct
import sys
@@ -776,9 +777,12 @@ class SingleUploadFileApp(object):
uploaded_files = [(k, v) for k, v in req.POST.items() if 'file' in k]
uploaded_files = sorted(uploaded_files)
for name, uploaded_file in uploaded_files:
- filename = to_bytes(uploaded_file.filename)
- value = to_bytes(uploaded_file.value, 'ascii')
- content_type = to_bytes(uploaded_file.type, 'ascii')
+ if isinstance(uploaded_file, cgi.FieldStorage):
+ filename = to_bytes(uploaded_file.filename)
+ value = to_bytes(uploaded_file.value, 'ascii')
+ content_type = to_bytes(uploaded_file.type, 'ascii')
+ else:
+ filename = value = content_type = b''
file_parts.append(b"""
<p>You selected '""" + filename + b"""'</p>
<p>with contents: '""" + value + b"""'</p>
diff --git a/webtest/app.py b/webtest/app.py
index b3012cd..736a865 100644
--- a/webtest/app.py
+++ b/webtest/app.py
@@ -11,7 +11,6 @@ from __future__ import unicode_literals
import os
import re
-import sys
import json
import random
import fnmatch
@@ -70,13 +69,13 @@ class CookiePolicy(http_cookiejar.DefaultCookiePolicy):
Domain=localhost."""
def return_ok_domain(self, cookie, request):
- if cookie.domain == '.localhost':
+ if cookie.domain.endswith(request.origin_req_host):
return True
return http_cookiejar.DefaultCookiePolicy.return_ok_domain(
self, cookie, request)
def set_ok_domain(self, cookie, request):
- if cookie.domain == '.localhost':
+ if cookie.domain.endswith(request.origin_req_host):
return True
return http_cookiejar.DefaultCookiePolicy.set_ok_domain(
self, cookie, request)
@@ -196,7 +195,8 @@ class TestApp(object):
self.authorization_value = value
if value is not None:
invalid_value = (
- "You should use a value like ('Basic', ('user', 'password')) OR ('Bearer', 'token')"
+ "You should use a value like ('Basic', ('user', 'password'))"
+ " OR ('Bearer', 'token') OR ('JWT', 'token')"
)
if isinstance(value, (list, tuple)) and len(value) == 2:
authtype, val = value
@@ -205,7 +205,7 @@ class TestApp(object):
val = ':'.join(list(val))
val = b64encode(to_bytes(val)).strip()
val = val.decode('latin1')
- elif authtype == 'Bearer' and val and \
+ elif authtype in ('Bearer', 'JWT') and val and \
isinstance(val, (str, text_type)):
val = val.strip()
else:
@@ -231,6 +231,9 @@ class TestApp(object):
Sets a cookie to be passed through with requests.
"""
+ cookie_domain = self.extra_environ.get('HTTP_HOST', 'localhost')
+ cookie_domain = cookie_domain.split(':', 1)[0]
+ cookie_domain = '.' + cookie_domain
value = escape_cookie_value(value)
cookie = http_cookiejar.Cookie(
version=0,
@@ -238,7 +241,7 @@ class TestApp(object):
value=value,
port=None,
port_specified=False,
- domain='.localhost',
+ domain=cookie_domain,
domain_specified=True,
domain_initial_dot=False,
path='/',
@@ -503,6 +506,10 @@ class TestApp(object):
if isinstance(value, forms.File):
if value.value:
_append_file([key] + list(value.value))
+ else:
+ # If no file was uploaded simulate an empty file with no
+ # name like real browsers do:
+ _append_file([key, b'', b''])
elif isinstance(value, forms.Upload):
file_info = [key, value.filename]
if value.content is not None:
@@ -606,7 +613,7 @@ class TestApp(object):
# verify wsgi compatibility
app = lint.middleware(self.app) if self.lint else self.app
- ## FIXME: should it be an option to not catch exc_info?
+ # FIXME: should it be an option to not catch exc_info?
res = req.get_response(app, catch_exc_info=True)
# be sure to decode the content
@@ -618,7 +625,7 @@ class TestApp(object):
res.app = app
res.test_app = self
- # We do this to make sure the app_iter is exausted:
+ # We do this to make sure the app_iter is exhausted:
try:
res.body
except TypeError: # pragma: no cover
@@ -668,7 +675,7 @@ class TestApp(object):
res)
if status != res.status_int:
raise AppError(
- "Bad response: %s (not %s)", res_status, status)
+ "Bad response: %s (not %s)\n%s", res_status, status, res)
def _check_errors(self, res):
errors = res.errors
diff --git a/webtest/compat.py b/webtest/compat.py
index 1c9714d..9ce0828 100644
--- a/webtest/compat.py
+++ b/webtest/compat.py
@@ -35,11 +35,6 @@ def print_stderr(value):
value = value.encode('utf8')
six.print_(value, file=sys.stderr)
-try:
- from collections import OrderedDict
-except ImportError: # pragma: no cover
- from ordereddict import OrderedDict # noqa
-
def escape_cookie_value(value):
"""
diff --git a/webtest/forms.py b/webtest/forms.py
index 9ff0a17..f46e101 100644
--- a/webtest/forms.py
+++ b/webtest/forms.py
@@ -5,7 +5,7 @@ import re
import sys
from bs4 import BeautifulSoup
-from webtest.compat import OrderedDict
+from collections import OrderedDict
from webtest import utils
diff --git a/webtest/response.py b/webtest/response.py
index e00f65a..0364d5b 100644
--- a/webtest/response.py
+++ b/webtest/response.py
@@ -493,17 +493,14 @@ class TestResponse(webob.Response):
@property
def json(self):
"""
- Return the response as a JSON response. You must have `simplejson
- <http://goo.gl/B9g6s>`_ installed to use this, or be using a Python
- version with the json module.
-
+ Return the response as a JSON response.
The content type must be one of json type to use this.
"""
if not self.content_type.endswith(('+json', '/json')):
raise AttributeError(
"Not a JSON response body (content-type: %s)"
% self.content_type)
- return loads(self.testbody)
+ return self.json_body
@property
def pyquery(self):
diff --git a/webtest/utils.py b/webtest/utils.py
index 3eb7f90..adb01f3 100644
--- a/webtest/utils.py
+++ b/webtest/utils.py
@@ -97,7 +97,7 @@ class _RequestCookieAdapter(object):
"""
def __init__(self, request):
self._request = request
- self.origin_req_host = request.host
+ self.origin_req_host = request.host.split(':')[0]
def is_unverifiable(self):
return True # sure? Why not?
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/webtest.git
More information about the Python-modules-commits
mailing list