[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