Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split exceptions tests #2

Merged
merged 3 commits into from
Oct 15, 2016
Merged

Conversation

seemethere
Copy link
Member

This PR splits exceptions tests so that when run they convey more pertinent information about which tests fail and so that if one tests fail the rest of the tests can still run.

Also moves the helpers from the tests directory to the sanic directory, it could possible be useful to outside consumers if they want to test their applications and it makes it less of a magical import.

Output from tests:

projects/pycharm/sanic on fix_tests [!?] via sanic351
➔ py.test -v tests/test_exception*
============================================================================================================================= test session starts ==============================================================================================================================
platform darwin -- Python 3.5.1, pytest-3.0.3, py-1.4.31, pluggy-0.4.0 -- /Users/eli9558/.pyenv/versions/3.5.1/envs/sanic351/bin/python3.5
cachedir: .cache
rootdir: /Users/eli9558/projects/pycharm/sanic, inifile:
collected 8 items

tests/test_exceptions.py::test_no_exception PASSED
tests/test_exceptions.py::test_server_error_exception PASSED
tests/test_exceptions.py::test_invalid_usage_exception PASSED
tests/test_exceptions.py::test_not_found_exception PASSED
tests/test_exceptions_handler.py::test_invalid_usage_exception_handler PASSED
tests/test_exceptions_handler.py::test_server_error_exception_handler PASSED
tests/test_exceptions_handler.py::test_not_found_exception_handler PASSED
tests/test_exceptions_handler.py::test_text_exception__handler PASSED

=========================================================================================================================== 8 passed in 0.16 seconds ===========================================================================================================================

@channelcat channelcat merged commit d7a873c into sanic-org:master Oct 15, 2016
seemethere pushed a commit that referenced this pull request Nov 21, 2016
@seemethere seemethere deleted the fix_tests branch January 16, 2017 01:37
seemethere pushed a commit that referenced this pull request Feb 14, 2017
* PEP8 cleanups

* PEP8 cleanups (server.py)

* PEP8 cleanups (blueprints.py)

* PEP8 cleanups (config.py)

* PEP8 cleanups (cookies.py)

* PEP8 cleanups (handlers.py)

* PEP8 cleanups (request.py)

* PEP8 cleanups (response.py)

* PEP8 cleanups (router.py)

* PEP8 cleanups (sanic.py) #2

* PEP8 cleanups (server.py) #2

* PEP8 cleanups (static.py)

* PEP8 cleanups (utils.py)

* PEP8 cleanups (views.py)
Updated docstring
r0fls pushed a commit that referenced this pull request Apr 4, 2017
zenixls2 pushed a commit to zenixls2/sanic that referenced this pull request Apr 11, 2017
zenixls2 pushed a commit to zenixls2/sanic that referenced this pull request Apr 11, 2017
seemethere pushed a commit that referenced this pull request Jun 12, 2017
remote-tracking with upstream
r0fls pushed a commit that referenced this pull request Jan 8, 2018
Tronic added a commit to Tronic/sanic that referenced this pull request Sep 1, 2019
sjsadowski pushed a commit that referenced this pull request Sep 2, 2019
* Added support for HTTP Forwarded header and combined parsing of other proxy headers.

- Accessible via request.forwarded that tries parse_forwarded and then parse_xforwarded
- parse_forwarded uses the Forwarded header, if config.FORWARDED_SECRET is provided and a matching header field is found
- parse_xforwarded uses X-Real-IP and X-Forwarded-* much alike the existing implementation
- This commit does not change existing request properties that still use the old code and won't make use of Forwarded headers.

* Use req.forwarded in req properties server_name, server_port, scheme and remote_addr.

X-Scheme handling moved to parse_xforwarded.

* Cleanup and fix req.server_port; no longer reports socket port if any forwards headers are used.

* Update docstrings to incidate that forwarded header is used first.

* Remove testing function.

* Fix tests and linting.

- One test removed due to change of semantics - no socket port will be used if any forwarded headers are in effect.
- Other tests augmented with X-Forwarded-For, to allow the header being tested take effect (shouldn't affect old implementation).

* Try to workaround buggy tools complaining about incorrect ordering of imports.

* Cleanup forwarded processing, add comments. secret is now also returned.

* Added tests, fixed quoted string handling, cleanup.

* Further tests for full coverage.

* Try'n make linter happy.

* Add support for multiple Forwarded headers. Unify parse_forwarded parameters with parse_xforwarded.

* Implement multiple headers support for X-Forwarded-For.

- Previously only the first header was used, so this BUGFIX may affect functionality.

* Bugfix for request.server_name: strip port and other parts.

- request.server_name docs claim that it returns the hostname only (no port).
- config.SERVER_NAME may be full URL, so strip scheme, port and path
- HTTP Host and consequently forwarded Host may include port number, so
  strip that also for forwarded hosts (previously only done for HTTP Host).
- Possible performance benefit of limiting to one split.

* Fallback to app.url_for and let it handle SERVER_NAME if defined (until a proper solution is implemented).

* Revise previous commit. Only fallback for full URL SERVER_NAMEs; allows host to be defined and proxied information still being used.

* Heil lintnazi.

* Modify testcase not to use underscores in URLs. Use hyphens which the spec allows for.

* Forwarded and Host header parsing improved.

- request.forwarded lowercases hosts, separates host:port into their own fields and lowercases addresses
- forwarded.parse_host helper function added and used for parsing all host-style headers (IPv6 cannot be simply split(":")).
- more tests fixed not to use underscores in hosts as those are no longer accepted and lead to the field being rejected

* Fixed typo in docstring.

* Added IPv6 address tests for Host header.

* Fix regex.

* Further tests and stricter forwarded handling.

* Fix merge commit

* Linter

* Linter

* Linter

* Add  to avoid re-using the  variable. Make a few raw strings non-raw.

* Remove unnecessary or

* Updated docs (work in progress).

* Enable REAL_IP_HEADER parsing irregardless of PROXIES_COUNT setting.

- Also cleanup and added comments

* New defaults for PROXIES_COUNT and REAL_IP_HEADER, updated tests.

* Remove support for PROXIES_COUNT=-1.

* Linter errors.

- This is getting ridiculous: cannot fit an URL on one line, linter requires
  splitting the string literal!

* Add support for by=_proxySecret, updated docs, updated tests.

* Forwarded headers' semantics tuning.

- Forwarded host is now preserved in original format
- request.host now returns a forwarded host if available, else the Host header
- Forwarded options are preserved in original order, and later keys override earlier ones
- Forwarded path is automatically URL-unquoted
- Forwarded 'by' and 'for' are omitted if their value is unknown
- Tests modified accordingly
- Cleanup and improved documentation

* Add ASGI test.

* Linter

* Linter #2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants