Mercurial > p > roundup > code
annotate test/test_liveserver.py @ 8241:741ea8a86012
fix: issue2551374. Error handling for filter expressions.
Errors in filter expressions are now reported. The UI needs some work
but even the current code is helpful when debugging filter
expressions.
mlink_expr:
defines/raises ExpressionError(error string template,
context=dict())
raises ExpressionError when it detects errors when popping arguments
off stack
raises ExpressionError when more than one element left on the stack
before returning
also ruff fix to group boolean expression with parens
back_anydbm.py, rdbms_common.py:
catches ExpressionError, augments context with class and
attribute being searched. raises the exception
for both link and multilink relations
client.py
catches ExpressionError returning a basic error page. The page is a
dead end. There are no links or anything for the user to move
forward. The user has to go back, possibly refresh the page (because
the submit button may be disalbled) re-enter the query and try
again.
This needs to be improved.
test_liveserver.py
test the error page generated by client.py
db_test_base
unit tests for filter with too few arguments, too many arguments,
check all repr and str formats.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 30 Dec 2024 20:22:55 -0500 |
| parents | 9404d56d830f |
| children | 393dfc750d8b |
| rev | line source |
|---|---|
|
8219
9404d56d830f
test: add file encoding marker so python2 can run
John Rouillard <rouilj@ieee.org>
parents:
8218
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
9404d56d830f
test: add file encoding marker so python2 can run
John Rouillard <rouilj@ieee.org>
parents:
8218
diff
changeset
|
2 |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
3 import shutil, errno, pytest, json, gzip, mimetypes, os, re |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
4 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
5 from roundup import date as rdate |
| 6650 | 6 from roundup import i18n |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
7 from roundup import password |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
8 from roundup.anypy.strings import b2s |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 from roundup.cgi.wsgi_handler import RequestDispatcher |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
10 from .wsgi_liveserver import LiveServerTestCase |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
11 from . import db_test_base |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
12 from time import sleep |
| 7578 | 13 from .test_postgresql import skip_postgresql |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
14 |
|
6548
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
15 from wsgiref.validate import validator |
|
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
16 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 import requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
19 skip_requests = lambda func, *args, **kwargs: func |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
20 except ImportError: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
21 from .pytest_patcher import mark_class |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
22 skip_requests = mark_class(pytest.mark.skip( |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
23 reason='Skipping liveserver tests: requests library not available')) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
24 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
25 try: |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
26 import hypothesis |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
27 skip_hypothesis = lambda func, *args, **kwargs: func |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
28 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
29 # ruff: noqa: E402 |
|
8215
1b15f635ada1
fix(web) issue2551382 - handle crash in request call in test
John Rouillard <rouilj@ieee.org>
parents:
8214
diff
changeset
|
30 from hypothesis import example, given, reproduce_failure, settings |
|
8214
55b0abde56ab
fix(web) issue2551382 - case 1# or 1& failing.
John Rouillard <rouilj@ieee.org>
parents:
8213
diff
changeset
|
31 from hypothesis.strategies import binary, characters, emails, none, one_of, sampled_from, text |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
32 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
33 except ImportError: |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
34 from .pytest_patcher import mark_class |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
35 skip_hypothesis = mark_class(pytest.mark.skip( |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
36 reason='Skipping hypothesis liveserver tests: hypothesis library not available')) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
37 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
38 # define a dummy decorator that can take args |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
39 def noop_decorators_with_args(*args, **kwargs): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
40 def noop_decorators(func): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
41 def internal(): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
42 pass |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
43 return internal |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
44 return noop_decorators |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
45 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
46 # define a dummy strategy |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
47 def noop_strategy(*args, **kwargs): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
48 pass |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
49 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
50 # define the decorator functions |
|
8215
1b15f635ada1
fix(web) issue2551382 - handle crash in request call in test
John Rouillard <rouilj@ieee.org>
parents:
8214
diff
changeset
|
51 example = given = reproduce_failure = settings = noop_decorators_with_args |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
52 # and stratgies using in decorators |
|
8217
cd76d5d59c37
fix(web) issue2551382 - fix missing hypothesis case
John Rouillard <rouilj@ieee.org>
parents:
8216
diff
changeset
|
53 binary = characters = emails = none = one_of = sampled_from = text = noop_strategy |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
54 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
55 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
56 try: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
57 import brotli |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
58 skip_brotli = lambda func, *args, **kwargs: func |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
59 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
60 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
61 skip_brotli = mark_class(pytest.mark.skip( |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
62 reason='Skipping brotli tests: brotli library not available')) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
63 brotli = None |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
64 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
65 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
66 import zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
67 skip_zstd = lambda func, *args, **kwargs: func |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
68 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
69 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
70 skip_zstd = mark_class(pytest.mark.skip( |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
71 reason='Skipping zstd tests: zstd library not available')) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
72 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
73 import sys |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
74 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
75 _py3 = sys.version_info[0] > 2 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
76 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
77 @skip_requests |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
78 class WsgiSetup(LiveServerTestCase): |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
79 # have chicken and egg issue here. Need to encode the base_url |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
80 # in the config file but we don't know it until after |
| 6650 | 81 # the server is started and has read the config.ini. |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
82 # so only allow one port number |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
83 port_range = (9001, 9001) # default is (8080, 8090) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
84 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
85 dirname = '_test_instance' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
86 backend = 'anydbm' |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
87 |
|
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
88 js_mime_type = mimetypes.guess_type("utils.js")[0] |
|
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
89 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
90 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
91 def setup_class(cls): |
| 6650 | 92 '''All tests in this class use the same roundup instance. |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
93 This instance persists across all tests. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
94 Create the tracker dir here so that it is ready for the |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
95 create_app() method to be called. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
96 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
97 # tests in this class. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
98 # set up and open a tracker |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
99 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
100 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
101 # open the database |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
102 cls.db = cls.instance.open('admin') |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
103 |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
104 # add a user without edit access for status. |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
105 cls.db.user.create(username="fred", roles='User', |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
106 password=password.Password('sekrit'), address='fred@example.com') |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
107 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
108 # set the url the test instance will run at. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
109 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
110 # set up mailhost so errors get reported to debuging capture file |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
111 cls.db.config.MAILHOST = "localhost" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
112 cls.db.config.MAIL_HOST = "localhost" |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
113 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
114 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
115 # added to enable csrf forgeries/CORS to be tested |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
116 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
117 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
118 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
6755
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
119 |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
120 # disable web login rate limiting. The fast rate of tests |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
121 # causes them to trip the rate limit and fail. |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
122 cls.db.config.WEB_LOGIN_ATTEMPTS_MIN = 0 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
123 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
124 # enable static precompressed files |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
125 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
126 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
127 cls.db.config.save() |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
128 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
129 # add an issue to allow testing retrieval. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
130 # also used for text searching. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
131 result = cls.db.issue.create(title="foo bar RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
132 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
133 # add a message to allow retrieval |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
134 result = cls.db.msg.create(author = "1", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
135 content = "a message foo bar RESULT", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
136 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
137 messageid="test-msg-id") |
|
7935
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
138 |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
139 # add a query using @current_user |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
140 result = cls.db.query.create( |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
141 klass="issue", |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
142 name="I created", |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
143 private_for=None, |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
144 url=("@columns=title,id,activity,status,assignedto&" |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
145 "@sort=activity&@group=priority&@filter=creator&" |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
146 "@pagesize=50&@startwith=0&creator=%40current_user") |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
147 ) |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
148 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
149 cls.db.commit() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
150 cls.db.close() |
| 6650 | 151 |
| 152 # Force locale config to find locales in checkout not in | |
| 153 # installed directories | |
| 154 cls.backup_domain = i18n.DOMAIN | |
| 155 cls.backup_locale_dirs = i18n.LOCALE_DIRS | |
| 156 i18n.LOCALE_DIRS = ['locale'] | |
| 157 i18n.DOMAIN = '' | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
158 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
159 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
160 def teardown_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
161 '''Close the database and delete the tracker directory |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
162 now that the app should be exiting. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
163 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
164 if cls.db: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
165 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
166 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
167 shutil.rmtree(cls.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
168 except OSError as error: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
169 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
| 6650 | 170 i18n.LOCALE_DIRS = cls.backup_locale_dirs |
| 171 i18n.DOMAIN = cls.backup_domain | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
172 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
173 def create_app(self): |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
174 '''The wsgi app to start - no feature_flags set. |
|
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
175 Post 2.3.0 this enables the cache_tracker feature. |
|
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
176 ''' |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
177 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
178 if _py3: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
179 return validator(RequestDispatcher(self.dirname)) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
180 else: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
181 # wsgiref/validator.py InputWrapper::readline is broke and |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
182 # doesn't support the max bytes to read argument. |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
183 return RequestDispatcher(self.dirname) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
184 |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
185 class ClientSetup(): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
186 """ Utility programs for the client querying a server. |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
187 Just a login session at the moment but more to come I am sure. |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
188 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
189 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
190 def create_login_session(self, username="admin", password="sekrit", |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
191 return_response=True, expect_login_ok=True): |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
192 # Set up session to manage cookies <insert blue monster here> |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
193 session = requests.Session() |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
194 session.headers.update({'Origin': 'http://localhost:9001'}) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
195 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
196 # login using form to get cookie |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
197 login = {"__login_name": username, '__login_password': password, |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
198 "@action": "login"} |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
199 response = session.post(self.url_base()+'/', data=login) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
200 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
201 if expect_login_ok: |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
202 # verify we have a cookie |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
203 self.assertIn('roundup_session_Roundupissuetracker', |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
204 session.cookies) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
205 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
206 if not return_response: |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
207 return session |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
208 return session, response |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
209 |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
210 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
211 @skip_hypothesis |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
212 class FuzzGetUrls(WsgiSetup, ClientSetup): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
213 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
214 _max_examples = 100 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
215 |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
216 @given(sampled_from(['@verbose', '@page_size', '@page_index']), |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
217 text(min_size=1)) |
|
8214
55b0abde56ab
fix(web) issue2551382 - case 1# or 1& failing.
John Rouillard <rouilj@ieee.org>
parents:
8213
diff
changeset
|
218 @example("@verbose", "1#") |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
219 @example("@verbose", "#1stuff") |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
220 @settings(max_examples=_max_examples, |
|
8218
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
221 deadline=10000) # in ms |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
222 def test_class_url_param_accepting_integer_values(self, param, value): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
223 """Tests all integer args for rest url. @page_* is the |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
224 same code for all *. |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
225 """ |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
226 session, _response = self.create_login_session() |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
227 url = '%s/rest/data/status' % (self.url_base()) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
228 query = '%s=%s' % (param, value) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
229 f = session.get(url, params=query) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
230 try: |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
231 # test case '0#' '12345#stuff' '12345&stuff' |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
232 match = re.match('(^[0-9]*)[#&]', value) |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
233 if match is not None: |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
234 value = match[1] |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
235 elif int(value) >= 0: |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
236 self.assertEqual(f.status_code, 200) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
237 except ValueError: |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
238 # test case '#' '#0', '&', '&anything here really' |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
239 if value[0] in ('#', '&'): |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
240 self.assertEqual(f.status_code, 200) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
241 else: |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
242 # invalid value for param |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
243 self.assertEqual(f.status_code, 400) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
244 |
|
8215
1b15f635ada1
fix(web) issue2551382 - handle crash in request call in test
John Rouillard <rouilj@ieee.org>
parents:
8214
diff
changeset
|
245 @given(sampled_from(['@verbose']), text(min_size=1)) |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
246 @example("@verbose", "10#") |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
247 @example("@verbose", u'Ø\U000dd990') |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
248 @settings(max_examples=_max_examples, |
|
8218
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
249 deadline=10000) # in ms |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
250 def test_element_url_param_accepting_integer_values(self, param, value): |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
251 """Tests args accepting int for rest url. |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
252 """ |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
253 session, _response = self.create_login_session() |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
254 url = '%s/rest/data/status/1' % (self.url_base()) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
255 query = '%s=%s' % (param, value) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
256 f = session.get(url, params=query) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
257 try: |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
258 # test case '0#' '12345#stuff' '12345&stuff' |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
259 match = re.match('(^[0-9]*)[#&]', value) |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
260 if match is not None: |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
261 value = match[1] |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
262 elif int(value) >= 0: |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
263 self.assertEqual(f.status_code, 200) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
264 except ValueError: |
|
8216
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
265 # test case '#' '#0', '&', '&anything here really' |
|
03020f08a685
fix(web) issue2551382 - fix more integer param test cases
John Rouillard <rouilj@ieee.org>
parents:
8215
diff
changeset
|
266 if value[0] in ('#', '&'): |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
267 self.assertEqual(f.status_code, 200) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
268 else: |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
269 # invalid value for param |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
270 self.assertEqual(f.status_code, 400) |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
271 |
|
8218
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
272 @given(emails()) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
273 @settings(max_examples=_max_examples, |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
274 deadline=10000) # in ms |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
275 def test_email_param(self,email): |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
276 session, _response = self.create_login_session() |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
277 url = '%s/rest/data/user/1/address' % (self.url_base()) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
278 headers = {"Accept": "application/json", |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
279 "Content-Type": "application/json", |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
280 "x-requested-with": "rest", |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
281 "Origin": self.url_base(), |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
282 "Referer": self.url_base() |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
283 } |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
284 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
285 #--header 'If-Match: "e2e6cc43c3475a4a3d9e5343617c11c3"' \ |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
286 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
287 f = session.get(url) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
288 stored_email = f.json()['data']['data'] |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
289 headers['If-Match'] = f.headers['etag'] |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
290 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
291 payload = {'data': email} |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
292 f = session.put(url, json=payload, headers=headers) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
293 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
294 self.assertEqual(f.status_code, 200) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
295 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
296 if stored_email == email: |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
297 # if the email we are setting is the same as present, we |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
298 # don't make a change so the attribute dict is empty aka false. |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
299 self.assertEqual(f.json()['data']['attribute'], {}) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
300 else: |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
301 self.assertEqual(f.json()['data']['attribute']['address'], |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
302 email) |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
303 |
|
32aaf5dc562b
fix(REST): issue2551383; improve errors for bad json, fix PUT docs
John Rouillard <rouilj@ieee.org>
parents:
8217
diff
changeset
|
304 |
|
8213
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
305 @skip_requests |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
306 class BaseTestCases(WsgiSetup, ClientSetup): |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
307 """Class with all tests to run against wsgi server. Is reused when |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
308 wsgi server is started with various feature flags |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
309 """ |
|
14e92a595828
fix(web) issue2551382 - 409 not 400 errors returned
John Rouillard <rouilj@ieee.org>
parents:
8168
diff
changeset
|
310 |
|
8168
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
311 def test_cookie_attributes(self): |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
312 session, _response = self.create_login_session() |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
313 |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
314 cookie_box = session.cookies._cookies['localhost.local']['/'] |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
315 cookie = cookie_box['roundup_session_Roundupissuetracker'] |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
316 |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
317 # check cookie attributes. This is an http session, so |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
318 # we can't check secure or see cookie with __Secure- prefix 8-(. |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
319 self.assertEqual(cookie.name, 'roundup_session_Roundupissuetracker') |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
320 self.assertEqual(cookie.expires, None) # session cookie |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
321 self.assertEqual(cookie._rest['HttpOnly'], None) # flag is present |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
322 self.assertEqual(cookie._rest['SameSite'], 'Lax') |
|
7937
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
323 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
324 def test_query(self): |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
325 current_user_query = ( |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
326 "@columns=title,id,activity,status,assignedto&" |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
327 "@sort=activity&@group=priority&@filter=creator&" |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
328 "@pagesize=50&@startwith=0&creator=%40current_user&" |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
329 "@dispname=Test1") |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
330 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
331 session, _response = self.create_login_session() |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
332 f = session.get(self.url_base()+'/issue?' + current_user_query) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
333 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
334 # verify the query has run by looking for the query name |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
335 self.assertIn('List of issues\n - Test1', f.text) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
336 # find title of issue 1 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
337 self.assertIn('foo bar RESULT', f.text) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
338 # match footer "1..1 out of 1" if issue is found |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
339 self.assertIn('out of', f.text) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
340 # logout |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
341 f = session.get(self.url_base()+'/?@action=logout') |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
342 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
343 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
344 # set up for another user |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
345 session, _response = self.create_login_session(username="fred") |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
346 f = session.get(self.url_base()+'/issue?' + current_user_query) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
347 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
348 # verify the query has run |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
349 self.assertIn('List of issues\n - Test1', f.text) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
350 # We should have no rows, so verify the static part |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
351 # of the footer is missing. |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
352 self.assertNotIn('out of', f.text) |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
353 |
|
8241
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
354 def test_broken_query(self): |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
355 # query link item |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
356 current_user_query = ( |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
357 "@columns=title,id,activity,status,assignedto&" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
358 "@sort=activity&@group=priority&@filter=creator&" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
359 "@pagesize=50&@startwith=0&creator=-2&" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
360 "@dispname=Test1") |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
361 |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
362 session, _response = self.create_login_session() |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
363 f = session.get(self.url_base()+'/issue?' + current_user_query) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
364 |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
365 # verify the query has run by looking for the query name |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
366 # print(f.text) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
367 self.assertIn('Error when searching issue by creator using: ' |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
368 '[-2]. The operator -2 (not) at position 1 has ' |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
369 'too few arguments.', |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
370 f.text) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
371 |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
372 def test_broken_multiink_query(self): |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
373 # query multilink item |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
374 current_user_query = ( |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
375 "@columns=title,id,activity,status,assignedto" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
376 "&keyword=-3&@sort=activity&@group=priority" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
377 "&@pagesize=50&@startwith=0&@template=index|search" |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
378 "&@action=search") |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
379 session, _response = self.create_login_session() |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
380 f = session.get(self.url_base()+'/issue?' + current_user_query) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
381 |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
382 # verify the query has run by looking for the query name |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
383 print(f.text) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
384 self.assertIn('Error when searching issue by keyword using: ' |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
385 '[-3]. The operator -3 (and) at position 1 has ' |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
386 'too few arguments.', |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
387 f.text) |
|
741ea8a86012
fix: issue2551374. Error handling for filter expressions.
John Rouillard <rouilj@ieee.org>
parents:
8219
diff
changeset
|
388 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
389 def test_start_page(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
390 """ simple test that verifies that the server can serve a start page. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
391 """ |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
392 f = requests.get(self.url_base()) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
393 self.assertEqual(f.status_code, 200) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
394 self.assertTrue(b'Roundup' in f.content) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
395 self.assertTrue(b'Creator' in f.content) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
396 |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
397 def test_start_in_german(self): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
398 """ simple test that verifies that the server can serve a start page |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
399 and translate text to german. Use page title and remeber login |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
400 checkbox label as translation test points.. |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
401 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
402 use: |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
403 url parameter @language |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
404 cookie set by param |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
405 set @language to none and verify language cookie is unset |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
406 """ |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
407 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
408 # test url parameter |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
409 f = requests.get(self.url_base() + "?@language=de") |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
410 self.assertEqual(f.status_code, 200) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
411 print(f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
412 self.assertTrue(b'Roundup' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
413 self.assertTrue(b'Aufgabenliste' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
414 self.assertTrue(b'dauerhaft anmelden?' in f.content) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
415 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
416 # test language cookie - should still be german |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
417 bluemonster = f.cookies |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
418 f = requests.get(self.url_base(), cookies=bluemonster) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
419 self.assertEqual(f.status_code, 200) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
420 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
421 self.assertTrue(b'Roundup' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
422 self.assertTrue(b'Aufgabenliste' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
423 self.assertTrue(b'dauerhaft anmelden?' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
424 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
425 # unset language cookie, should be english |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
426 f = requests.get(self.url_base() + "?@language=none") |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
427 self.assertEqual(f.status_code, 200) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
428 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
429 self.assertTrue(b'Roundup' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
430 self.assertFalse(b'Aufgabenliste' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
431 self.assertFalse(b'dauerhaft anmelden?' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
432 with self.assertRaises(KeyError): |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
433 l = f.cookies['roundup_language'] |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
434 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
435 # check with Accept-Language header |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
436 alh = {"Accept-Language": |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
437 "fr;q=0.2, en;q=0.8, de;q=0.9, *;q=0.5"} |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
438 f = requests.get(self.url_base(), headers=alh) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
439 self.assertEqual(f.status_code, 200) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
440 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
441 self.assertTrue(b'Roundup' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
442 self.assertTrue(b'Aufgabenliste' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
443 self.assertTrue(b'dauerhaft anmelden?' in f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
444 |
|
8062
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
445 def test_classhelper_reflection(self): |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
446 """ simple test that verifies that the generic classhelper |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
447 is escaping the url params correctly. |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
448 """ |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
449 f = requests.get(self.url_base() + "/keyword?@startwith=0&@template=help&properties=name&property=keyword&form=itemSynopsis</script><script>%3balert(1)%2f%2f&type=checkbox&@sort=name&@pagesize=50") |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
450 self.assertEqual(f.status_code, 200) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
451 self.assertNotIn(b"<script>;alert(1)//;\n", f.content) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
452 self.assertIn( |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
453 b"itemSynopsis</script><script>;alert(1)//;\n", |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
454 f.content) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
455 |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
456 f = requests.get(self.url_base() + "/keyword?@startwith=0&@template=help&properties=name&property=keyword</script><script>%3balert(1)%2f%2f&form=itemSynopsis&type=checkbox&@sort=name&@pagesize=50") |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
457 self.assertEqual(f.status_code, 200) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
458 self.assertNotIn(b"<script>;alert(1)//;\n", f.content) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
459 self.assertIn( |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
460 b"keyword</script><script>;alert(1)//';</script>\n", |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
461 f.content) |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
462 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
463 def test_byte_Ranges(self): |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
464 """ Roundup only handles one simple two number range, or |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
465 a single number to start from: |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
466 Range: 10-20 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
467 Range: 10- |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
468 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
469 The following is not supported. |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
470 Range: 10-20, 25-30 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
471 Range: -10 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
472 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
473 Also If-Range only supports strong etags not dates or weak etags. |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
474 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
475 """ |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
476 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
477 # get whole file uncompressed. Extract content length and etag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
478 # for future use |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
479 f = requests.get(self.url_base() + "/@@file/style.css", |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
480 headers = {"Accept-Encoding": "identity"}) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
481 # store etag for condition range testing |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
482 etag = f.headers['etag'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
483 expected_length = f.headers['content-length'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
484 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
485 # get first 11 bytes unconditionally (0 index really??) |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
486 hdrs = {"Range": "bytes=0-10"} |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
487 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
488 self.assertEqual(f.status_code, 206) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
489 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
490 # compression disabled for length < 100, so we can use 11 here |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
491 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
492 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
493 "bytes 0-10/%s"%expected_length) |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
494 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
495 # get bytes 11-21 unconditionally (0 index really??) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
496 hdrs = {"Range": "bytes=10-20"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
497 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
498 self.assertEqual(f.status_code, 206) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
499 self.assertEqual(f.content, b"ge styles *") |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
500 # compression disabled for length < 100, so we can use 11 here |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
501 self.assertEqual(f.headers['content-length'], '11') |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
502 self.assertEqual(f.headers['content-range'], |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
503 "bytes 10-20/%s"%expected_length) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
504 |
|
7816
1b5daee24dc7
test: fix test for invalid etag in if-range.
John Rouillard <rouilj@ieee.org>
parents:
7578
diff
changeset
|
505 # get all bytes starting from 11 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
506 hdrs = {"Range": "bytes=11-"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
507 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
508 self.assertEqual(f.status_code, 206) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
509 self.assertEqual(f.headers['content-range'], |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
510 "bytes 11-%s/%s"%(int(expected_length) - 1, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
511 expected_length)) |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
512 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
513 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
514 # conditional request 11 bytes since etag matches 206 code |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
515 hdrs = {"Range": "bytes=0-10"} |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
516 hdrs['If-Range'] = etag |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
517 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
518 self.assertEqual(f.status_code, 206) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
519 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
520 # compression disabled for length < 100, so we can use 11 here |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
521 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
522 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
523 "bytes 0-10/%s"%expected_length) |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
524 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
525 # conditional request returns all bytes as etag isn't correct 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
526 hdrs['If-Range'] = etag[2:] # bad tag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
527 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
528 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
529 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
530 self.assertNotIn('content-range', f.headers, 'content-range should not be present') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
531 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
532 # range is too large, but etag is bad also, return whole file 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
533 hdrs['Range'] = "0-99999" # too large |
|
7816
1b5daee24dc7
test: fix test for invalid etag in if-range.
John Rouillard <rouilj@ieee.org>
parents:
7578
diff
changeset
|
534 hdrs['If-Range'] = '"' + etag[2:] # start bad tag with " |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
535 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
536 self.assertEqual(f.status_code, 200) |
|
7816
1b5daee24dc7
test: fix test for invalid etag in if-range.
John Rouillard <rouilj@ieee.org>
parents:
7578
diff
changeset
|
537 # note f.content has content-encoding (compression) undone. |
|
1b5daee24dc7
test: fix test for invalid etag in if-range.
John Rouillard <rouilj@ieee.org>
parents:
7578
diff
changeset
|
538 self.assertEqual(len(f.content), int(expected_length)) |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
539 self.assertNotIn('content-range', f.headers, 'content-range should not be present') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
540 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
541 # range is too large, but etag is specified so return whole file |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
542 # 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
543 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
544 hdrs['If-Range'] = etag # any tag works |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
545 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
546 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
547 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
548 self.assertNotIn('content-range', f.headers, 'content-range should not be present') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
549 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
550 # range too large, not if-range so error code 416 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
551 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
552 del(hdrs['If-Range']) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
553 print(hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
554 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
555 self.assertEqual(f.status_code, 416) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
556 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
557 "bytes */%s"%expected_length) |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
558 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
559 # invalid range multiple ranges |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
560 hdrs['Range'] = "bytes=0-10, 20-45" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
561 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
562 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
563 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
564 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
565 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
566 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
567 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
568 # invalid range is single number not number followed by - |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
569 hdrs['Range'] = "bytes=1" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
570 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
571 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
572 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
573 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
574 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
575 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
576 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
577 # range is invalid first number not a number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
578 hdrs['Range'] = "bytes=boom-99" # bad first value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
579 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
580 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
581 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
582 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
583 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
584 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
585 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
586 # range is invalid last number not a number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
587 hdrs['Range'] = "bytes=1-boom" # bad last value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
588 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
589 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
590 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
591 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
592 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
593 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
594 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
595 # range is invalid first position empty |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
596 hdrs['Range'] = "bytes=-11" # missing first value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
597 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
598 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
599 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
600 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
601 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
602 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
603 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
604 # range is invalid #2 < #1 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
605 hdrs['Range'] = "bytes=11-1" # inverted range |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
606 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
607 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
608 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
609 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
610 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
611 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
612 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
613 # range is invalid negative first number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
614 hdrs['Range'] = "bytes=-1-11" # negative first number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
615 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
616 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
617 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
618 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
619 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
620 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
621 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
622 # range is invalid negative second number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
623 hdrs['Range'] = "bytes=1--11" # negative second number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
624 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
625 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
626 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
627 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
628 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
629 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
630 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
631 # range is unsupported units |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
632 hdrs['Range'] = "badunits=1-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
633 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
634 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
635 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
636 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
637 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
638 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
639 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
640 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
641 # valid range, invalid file |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
642 hdrs['Range'] = "bytes=0-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
643 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
644 f = requests.get(self.url_base() + "/@@file/style_nope.css", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
645 headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
646 self.assertEqual(f.status_code, 404) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
647 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
648 'content-range should not be present') |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
649 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
650 def test_rest_preflight_collection(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
651 # no auth for rest csrf preflight |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
652 f = requests.options(self.url_base() + '/rest/data/user', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
653 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
654 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
655 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
656 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
657 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
658 'Origin': "https://client.com"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
659 print(f.status_code) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
660 print(f.headers) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
661 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
662 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
663 self.assertEqual(f.status_code, 204) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
664 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
665 expected = { 'Access-Control-Allow-Origin': 'https://client.com', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
666 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
667 'Allow': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
668 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
669 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
670 } |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
671 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
672 # use dict comprehension to filter headers to the ones we want to check |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
673 self.assertEqual({ key: value for (key, value) in |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
674 f.headers.items() if key in expected }, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
675 expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
676 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
677 # use invalid Origin |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
678 f = requests.options(self.url_base() + '/rest/data/user', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
679 headers = {'content-type': "application/json", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
680 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
681 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
682 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
683 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
684 'Origin': "ZZZ"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
685 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
686 self.assertEqual(f.status_code, 400) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
687 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
688 expected = '{ "error": { "status": 400, "msg": "Client is not ' \ |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
689 'allowed to use Rest Interface." } }' |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
690 self.assertEqual(b2s(f.content), expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
691 |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
692 # Test when Origin is not sent. |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
693 f = requests.options(self.url_base() + '/rest/data/user', |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
694 headers = {'content-type': "application/json", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
695 'x-requested-with': "rest", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
696 'Access-Control-Request-Headers': |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
697 "x-requested-with", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
698 'Access-Control-Request-Method': "PUT",}) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
699 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
700 self.assertEqual(f.status_code, 400) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
701 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
702 expected = ('{ "error": { "status": 400, "msg": "Required' |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
703 ' Header Missing" } }') |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
704 self.assertEqual(b2s(f.content), expected) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
705 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
706 |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
707 def test_rest_invalid_method_collection(self): |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
708 # use basic auth for rest endpoint |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
709 f = requests.put(self.url_base() + '/rest/data/user', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
710 auth=('admin', 'sekrit'), |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
711 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
712 'X-Requested-With': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
713 'Origin': "https://client.com"}) |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
714 print(f.status_code) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
715 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
716 print(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
717 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
718 self.assertEqual(f.status_code, 405) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
719 expected = { 'Access-Control-Allow-Origin': 'https://client.com', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
720 'Access-Control-Allow-Credentials': 'true', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
721 'Allow': 'DELETE, GET, OPTIONS, POST', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
722 } |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
723 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
724 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
725 # use dict comprehension to remove fields like date, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
726 # content-length etc. from f.headers. |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
727 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
728 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
729 content = json.loads(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
730 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
731 exp_content = "Method PUT not allowed. Allowed: DELETE, GET, OPTIONS, POST" |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
732 self.assertEqual(exp_content, content['error']['msg']) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
733 |
|
6386
2a2da73e1e26
Remove Connection: close header for 501 error handling rest
John Rouillard <rouilj@ieee.org>
parents:
6385
diff
changeset
|
734 def test_http_options(self): |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
735 """ options returns an unimplemented error for this case.""" |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
736 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
737 # do not send content-type header for options |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
738 f = requests.options(self.url_base() + '/', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
739 headers = {'content-type': ""}) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
740 # options is not implemented for the non-rest interface. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
741 self.assertEqual(f.status_code, 501) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
742 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
743 def test_rest_endpoint_root_options(self): |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
744 # use basic auth for rest endpoint |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
745 f = requests.options(self.url_base() + '/rest', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
746 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
747 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
748 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
749 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
750 print(f.status_code) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
751 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
752 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
753 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
754 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
755 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
756 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
757 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
758 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
759 'Access-Control-Allow-Credentials': 'true', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
760 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
761 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
762 # use dict comprehension to remove fields like date, |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
763 # content-length etc. from f.headers. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
764 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
765 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
766 def test_rest_endpoint_data_options(self): |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
767 # use basic auth for rest endpoint |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
768 f = requests.options(self.url_base() + '/rest/data', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
769 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
770 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
771 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
772 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
773 print(f.status_code) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
774 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
775 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
776 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
777 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
778 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
779 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
780 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
781 'Access-Control-Allow-Credentials': 'true', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
782 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
783 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
784 # use dict comprehension to remove fields like date, |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
785 # content-length etc. from f.headers. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
786 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
787 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
788 def test_rest_endpoint_collection_options(self): |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
789 # use basic auth for rest endpoint |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
790 f = requests.options(self.url_base() + '/rest/data/user', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
791 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
792 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
793 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
794 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
795 print(f.status_code) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
796 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
797 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
798 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
799 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
800 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
801 'Allow': 'OPTIONS, GET, POST', |
|
6526
3c8322e3fe25
Fix test and remove pdb invocation.
John Rouillard <rouilj@ieee.org>
parents:
6525
diff
changeset
|
802 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
803 'Access-Control-Allow-Credentials': 'true', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
804 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
805 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
806 # use dict comprehension to remove fields like date, |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
807 # content-length etc. from f.headers. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
808 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
809 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
810 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
811 def test_rest_endpoint_item_options(self): |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
812 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
813 f = requests.options(self.url_base() + '/rest/data/user/1', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
814 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
815 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
816 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
817 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
818 print(f.status_code) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
819 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
820 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
821 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
822 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
823 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
824 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
825 'Access-Control-Allow-Methods': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
826 'Access-Control-Allow-Credentials': 'true', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
827 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
828 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
829 # use dict comprehension to remove fields like date, |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
830 # content-length etc. from f.headers. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
831 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
832 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
833 def test_rest_endpoint_attribute_options(self): |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
834 # use basic auth for rest endpoint |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
835 f = requests.options(self.url_base() + '/rest/data/user/1/username', |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
836 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
837 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
838 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
839 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
840 print(f.status_code) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
841 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
842 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
843 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
844 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
845 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
846 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
847 'Access-Control-Allow-Methods': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
848 'Access-Control-Allow-Credentials': 'true', |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
849 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
850 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
851 # use dict comprehension to remove fields like date, |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
852 # content-length etc. from f.headers. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
853 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
854 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
855 ## test a read only property. |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
856 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
857 f = requests.options(self.url_base() + '/rest/data/user/1/creator', |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
858 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
859 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
860 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
861 }) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
862 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
863 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
864 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
865 self.assertEqual(f.status_code, 204) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
866 expected1 = dict(expected) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
867 expected1['Allow'] = 'OPTIONS, GET' |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
868 expected1['Access-Control-Allow-Methods'] = 'OPTIONS, GET' |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
869 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
870 # use dict comprehension to remove fields like date, |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
871 # content-length etc. from f.headers. |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
872 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected1) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
873 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
874 ## test a property that doesn't exist |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
875 f = requests.options(self.url_base() + '/rest/data/user/1/zot', |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
876 auth=('admin', 'sekrit'), |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
877 headers = {'content-type': "", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
878 'Origin': "http://localhost:9001",}) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
879 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
880 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
881 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
882 self.assertEqual(f.status_code, 404) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
883 |
|
7983
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
884 def test_rest_endpoint_user_roles(self): |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
885 # use basic auth for rest endpoint |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
886 f = requests.get(self.url_base() + '/rest/data/user/roles', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
887 auth=('admin', 'sekrit'), |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
888 headers = {'content-type': "", |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
889 'Origin': "http://localhost:9001", |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
890 }) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
891 print(f.status_code) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
892 print(f.headers) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
893 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
894 self.assertEqual(f.status_code, 200) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
895 expected = { 'Access-Control-Expose-Headers': 'X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Limit-Period, Retry-After, Sunset, Allow', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
896 'Access-Control-Allow-Credentials': 'true', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
897 'Allow': 'GET', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
898 } |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
899 # use dict comprehension to remove fields like date, |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
900 # content-length etc. from f.headers. |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
901 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
902 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
903 content = json.loads(f.content) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
904 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
905 self.assertEqual(3, len(json.loads(f.content)['data']['collection'])) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
906 |
|
8020
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
907 def test_inm(self): |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
908 '''retrieve the user_utils.js file without an if-none-match etag |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
909 header, a bad if-none-match header and valid single and |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
910 multiple values. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
911 ''' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
912 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
913 headers = { 'Accept-Encoding': 'gzip, foo', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
914 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
915 print(f.status_code) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
916 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
917 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
918 self.assertEqual(f.status_code, 200) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
919 expected = { 'Content-Type': self.js_mime_type, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
920 'Content-Encoding': 'gzip', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
921 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
922 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
923 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
924 # use dict comprehension to remove fields like date, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
925 # etag etc. from f.headers. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
926 self.assertDictEqual({ key: value for (key, value) in |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
927 f.headers.items() if key in expected }, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
928 expected) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
929 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
930 # use etag in previous response |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
931 etag = f.headers['etag'] |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
932 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
933 headers = { 'Accept-Encoding': 'gzip, foo', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
934 'If-None-Match': etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
935 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
936 print(f.status_code) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
937 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
938 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
939 self.assertEqual(f.status_code, 304) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
940 expected = { 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
941 'Content-Length': '0', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
942 'ETag': etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
943 'Vary': 'Accept-Encoding' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
944 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
945 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
946 # use dict comprehension to remove fields like date, server, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
947 # etc. from f.headers. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
948 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
949 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
950 # test again with etag supplied w/o content-encoding |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
951 # and multiple etags |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
952 self.assertTrue(etag.endswith('-gzip"')) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
953 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
954 # keep etag intact. Used below. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
955 base_etag = etag[:-6] + '"' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
956 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
957 all_etags = ( |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
958 '"a41932-8b5-664ce93d", %s", "a41932-8b5-664ce93d-br"' % |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
959 base_etag |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
960 ) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
961 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
962 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
963 headers = { 'Accept-Encoding': 'gzip, foo', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
964 'If-None-Match': base_etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
965 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
966 print(f.status_code) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
967 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
968 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
969 self.assertEqual(f.status_code, 304) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
970 expected = { 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
971 'Content-Length': '0', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
972 'ETag': base_etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
973 'Vary': 'Accept-Encoding' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
974 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
975 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
976 # use dict comprehension to remove fields like date, server, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
977 # etc. from f.headers. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
978 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
979 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
980 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
981 # test with bad etag |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
982 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
983 headers = { 'Accept-Encoding': 'gzip, foo', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
984 'If-None-Match': '"a41932-8b5-664ce93d"', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
985 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
986 print(f.status_code) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
987 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
988 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
989 self.assertEqual(f.status_code, 200) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
990 expected = { 'Content-Type': self.js_mime_type, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
991 'ETag': etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
992 'Content-Encoding': 'gzip', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
993 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
994 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
995 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
996 # use dict comprehension to remove fields like date, server, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
997 # etc. from f.headers. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
998 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
7983
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
999 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1000 def test_ims(self): |
|
8020
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
1001 ''' retrieve the user_utils.js file with old and new |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1002 if-modified-since timestamps. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1003 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1004 from datetime import datetime |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
1005 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1006 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1007 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1008 'If-Modified-Since': 'Sun, 13 Jul 1986 01:20:00', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1009 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1010 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1011 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1012 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1013 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1014 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1015 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1016 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1017 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1018 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1019 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1020 # etag etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1021 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1022 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1023 # now use today's date |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1024 a_few_seconds_ago = datetime.now().strftime('%a, %d %b %Y %H:%M:%S GMT') |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1025 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1026 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1027 'If-Modified-Since': a_few_seconds_ago, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1028 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1029 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1030 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1031 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1032 self.assertEqual(f.status_code, 304) |
|
6548
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
1033 expected = { 'Vary': 'Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1034 'Content-Length': '0', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1035 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1036 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1037 # use dict comprehension to remove fields like date, etag |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1038 # etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1039 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1040 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1041 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1042 def test_load_issue1(self): |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1043 for tail in [ |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1044 '/issue1', # normal url |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1045 '/issue00001', # leading 0's should be stripped from id |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1046 '/issue1>' # surprise this works too, should it?? |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1047 ]: |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1048 f = requests.get(self.url_base() + tail, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1049 headers = { 'Accept-Encoding': 'gzip', |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1050 'Accept': '*/*'}) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1051 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1052 self.assertIn(b'foo bar RESULT', f.content) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1053 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1054 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1055 def test_load_msg1(self): |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1056 # leading 0's should be stripped from id |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1057 f = requests.get(self.url_base() + '/msg0001', |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1058 headers = { 'Accept-Encoding': 'gzip', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1059 'Accept': '*/*'}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1060 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1061 self.assertIn(b'foo bar RESULT', f.content) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1062 self.assertEqual(f.status_code, 200) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1063 |
|
6749
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1064 def test_bad_path(self): |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1065 f = requests.get(self.url_base() + '/_bad>', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1066 headers = { 'Accept-Encoding': 'gzip, foo', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1067 'Accept': '*/*'}) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1068 |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1069 # test that returned text is encoded. |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1070 self.assertEqual(f.content, b'Not found: _bad>') |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1071 self.assertEqual(f.status_code, 404) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
1072 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1073 def test_compression_gzipfile(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1074 '''Get the compressed dummy file''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1075 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1076 # create a user_utils.js.gz file to test pre-compressed |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1077 # file serving code. Has custom contents to verify |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1078 # that I get the compressed one. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1079 gzfile = "%s/html/user_utils.js.gzip"%self.dirname |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1080 test_text= b"Custom text for user_utils.js\n" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1081 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1082 with gzip.open(gzfile, 'wb') as f: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1083 bytes_written = f.write(test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1084 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1085 self.assertEqual(bytes_written, 30) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1086 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1087 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1088 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1089 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1090 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1091 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1092 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1093 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1094 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1095 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1096 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1097 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1098 'Content-Length': '69', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1099 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1100 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1101 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1102 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1103 self.assertDictEqual({ key: value for (key, value) in |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1104 f.headers.items() if key in expected }, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1105 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1106 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1107 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1108 # check content - verify it's the .gz file not the real file. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1109 self.assertEqual(f.content, test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1110 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1111 '''# verify that a different encoding request returns on the fly |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1112 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1113 # test file x-fer using br, so we get runtime compression |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1114 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1115 headers = { 'Accept-Encoding': 'br, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1116 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1117 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1118 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1119 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1120 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1121 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1122 'Content-Encoding': 'br', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1123 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1124 'Content-Length': '960', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1125 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1126 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1127 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1128 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1129 self.assertDictEqual({ key: value for (key, value) in |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1130 f.headers.items() if key in expected }, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1131 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1132 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1133 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1134 from urllib3.response import BrotliDecoder |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1135 # requests has decoded br to text for me |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1136 data = f.content |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1137 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1138 # I need to decode |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1139 data = brotli.decompress(f.content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1140 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1141 self.assertEqual(b2s(data)[0:25], '// User Editing Utilities') |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1142 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1143 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1144 # re-request file, but now make .gzip out of date. So we get the |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1145 # real file compressed on the fly, not our test file. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1146 os.utime(gzfile, (0,0)) # use 1970/01/01 or os base time |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1147 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1148 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1149 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1150 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1151 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1152 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1153 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1154 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1155 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1156 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1157 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1158 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1159 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1160 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1161 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1162 self.assertDictEqual({ key: value for (key, value) in |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1163 f.headers.items() if key in expected }, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1164 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1165 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1166 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1167 # check content - verify it's the real file, not crafted .gz. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1168 self.assertEqual(b2s(f.content)[0:25], '// User Editing Utilities') |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1169 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1170 # cleanup |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1171 os.remove(gzfile) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1172 |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1173 def test_compression_none_etag(self): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1174 # use basic auth for rest endpoint |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1175 f = requests.get(self.url_base() + '/rest/data/user/1/username', |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1176 auth=('admin', 'sekrit'), |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1177 headers = {'content-type': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1178 'Accept-Encoding': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1179 'Accept': '*/*'}) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1180 print(f.status_code) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1181 print(f.headers) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1182 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1183 self.assertEqual(f.status_code, 200) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1184 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1185 'Access-Control-Allow-Credentials': 'true', |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1186 'Allow': 'OPTIONS, GET, POST, PUT, DELETE, PATCH', |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1187 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1188 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1189 content_str = '''{ "data": { |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1190 "id": "1", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1191 "link": "http://localhost:9001/rest/data/user/1/username", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1192 "data": "admin" |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1193 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1194 }''' |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1195 content = json.loads(content_str) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1196 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1197 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1198 if (type("") == type(f.content)): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1199 json_dict = json.loads(f.content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1200 else: |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1201 json_dict = json.loads(b2s(f.content)) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1202 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1203 # etag wil not match, creation date different |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1204 del(json_dict['data']['@etag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1205 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1206 # type is "class 'str'" under py3, "type 'str'" py2 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1207 # just skip comparing it. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1208 del(json_dict['data']['type']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1209 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1210 self.assertDictEqual(json_dict, content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1211 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1212 # verify that ETag header has no - delimiter |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1213 print(f.headers['ETag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1214 with self.assertRaises(ValueError): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1215 f.headers['ETag'].index('-') |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1216 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1217 # use dict comprehension to remove fields like date, |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1218 # content-length etc. from f.headers. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1219 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1220 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1221 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1222 def test_compression_gzip(self, method='gzip'): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1223 if method == 'gzip': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1224 decompressor = None |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1225 elif method == 'br': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1226 decompressor = brotli.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1227 elif method == 'zstd': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1228 decompressor = zstd.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1229 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1230 # use basic auth for rest endpoint |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1231 f = requests.get(self.url_base() + '/rest/data/user/1/username', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1232 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1233 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1234 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1235 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1236 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1237 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1238 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1239 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1240 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1241 'Access-Control-Allow-Credentials': 'true', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1242 'Allow': 'OPTIONS, GET, POST, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1243 'Content-Encoding': method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1244 'Vary': 'Origin, Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1245 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1246 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1247 content_str = '''{ "data": { |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1248 "id": "1", |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1249 "link": "http://localhost:9001/rest/data/user/1/username", |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1250 "data": "admin" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1251 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1252 }''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1253 content = json.loads(content_str) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1254 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1255 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1256 print(type(f.content)) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1257 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1258 try: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1259 if (type("") == type(f.content)): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1260 json_dict = json.loads(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1261 else: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1262 json_dict = json.loads(b2s(f.content)) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1263 except (ValueError, UnicodeDecodeError): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1264 # Handle error from trying to load compressed data as only |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1265 # gzip gets decompressed automatically |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1266 # ValueError - raised by loads on compressed content python2 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1267 # UnicodeDecodeError - raised by loads on compressed content |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1268 # python3 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1269 json_dict = json.loads(b2s(decompressor(f.content))) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1270 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1271 # etag will not match, creation date different |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1272 del(json_dict['data']['@etag']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1273 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1274 # type is "class 'str'" under py3, "type 'str'" py2 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1275 # just skip comparing it. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1276 del(json_dict['data']['type']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1277 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1278 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1279 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1280 # verify that ETag header ends with -<method> |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1281 try: |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1282 self.assertRegex(f.headers['ETag'], r'^"[0-9a-f]{32}-%s"$'%method) |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1283 except AttributeError: |
|
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1284 # python2 no assertRegex so try substring match |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1285 self.assertEqual(33, f.headers['ETag'].rindex('-' + method)) |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1286 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1287 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1288 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1289 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1290 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1291 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1292 # use basic auth for rest endpoint, error case, bad attribute |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1293 f = requests.get(self.url_base() + '/rest/data/user/1/foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1294 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1295 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1296 'Accept-Encoding': '%s, foo'%method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1297 'Accept': '*/*', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
1298 'Origin': 'https://client.com'}) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1299 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1300 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1301 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1302 # NOTE: not compressed payload too small |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1303 self.assertEqual(f.status_code, 400) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1304 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1305 'Access-Control-Allow-Credentials': 'true', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
1306 'Access-Control-Allow-Origin': 'https://client.com', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1307 'Allow': 'OPTIONS, GET, POST, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1308 'Vary': 'Origin' |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1309 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1310 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1311 content = { "error": |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1312 { |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1313 "status": 400, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1314 "msg": "Invalid attribute foo" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1315 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1316 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1317 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1318 json_dict = json.loads(b2s(f.content)) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1319 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1320 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1321 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1322 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1323 self.assertDictEqual({ key: value for (key, value) in f.headers.items() if key in expected }, expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1324 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1325 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1326 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1327 headers = { 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1328 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1329 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1330 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1331 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1332 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1333 expected = { 'Content-Type': self.js_mime_type, |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1334 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1335 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1336 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1337 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1338 # compare to byte string as f.content may be compressed. |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1339 # so running b2s on it will throw a UnicodeError |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1340 if f.content[0:25] == b'// User Editing Utilities': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1341 # no need to decompress, urlib3.response did it for gzip and br |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1342 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1343 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1344 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1345 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1346 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1347 # check first few bytes. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1348 self.assertEqual(b2s(data)[0:25], '// User Editing Utilities') |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1349 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1350 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1351 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1352 self.assertDictEqual({ key: value for (key, value) in |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1353 f.headers.items() if key in expected }, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1354 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1355 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1356 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1357 f = requests.get(self.url_base() + '/user1', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1358 headers = { 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1359 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1360 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1361 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1362 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1363 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1364 expected = { 'Content-Type': 'text/html; charset=utf-8', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1365 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1366 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1367 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1368 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1369 if f.content[0:25] == b'<!-- dollarId: user.item,': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1370 # no need to decompress, urlib3.response did it for gzip and br |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1371 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1372 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1373 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1374 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1375 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1376 # check first few bytes. |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1377 self.assertEqual(b2s(data[0:25]), '<!-- dollarId: user.item,') |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1378 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1379 # use dict comprehension to remove fields like date, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1380 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1381 self.assertDictEqual({ key: value for (key, value) in |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1382 f.headers.items() if key in expected }, |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1383 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1384 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1385 @skip_brotli |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1386 def test_compression_br(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1387 self.test_compression_gzip(method="br") |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1388 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1389 @skip_zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1390 def test_compression_zstd(self): |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1391 self.test_compression_gzip(method="zstd") |
|
6546
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1392 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1393 def test_cache_control_css(self): |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1394 f = requests.get(self.url_base() + '/@@file/style.css', |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1395 headers = {'content-type': "", |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1396 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1397 print(f.status_code) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1398 print(f.headers) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1399 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1400 self.assertEqual(f.status_code, 200) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1401 self.assertEqual(f.headers['Cache-Control'], 'public, max-age=4838400') |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1402 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1403 def test_cache_control_js(self): |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1404 f = requests.get(self.url_base() + '/@@file/help_controls.js', |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1405 headers = {'content-type': "", |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1406 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1407 print(f.status_code) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1408 print(f.headers) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1409 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1410 self.assertEqual(f.status_code, 200) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1411 self.assertEqual(f.headers['Cache-Control'], 'public, max-age=1209600') |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1412 |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1413 def test_missing_session_key(self): |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1414 '''Test case where we have an outdated session cookie. Make |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1415 sure cookie is removed. |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1416 ''' |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1417 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1418 session, f = self.create_login_session() |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1419 |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1420 # verify cookie is present and we are logged in |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1421 self.assertIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1422 self.assertIn('roundup_session_Roundupissuetracker', |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1423 session.cookies) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1424 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1425 f = session.get(self.url_base()+'/') |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1426 self.assertIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1427 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1428 for cookie in session.cookies: |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1429 if cookie.name == 'roundup_session_Roundupissuetracker': |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1430 cookie.value = 'bad_cookie_no_chocolate' |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1431 break |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1432 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1433 f = session.get(self.url_base()+'/') |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1434 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1435 self.assertNotIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1436 self.assertNotIn('roundup_session_Roundupissuetracker', session.cookies) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1437 |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1438 def test_login_fail_then_succeed(self): |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1439 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1440 session, f = self.create_login_session(password="bad_sekrit", |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1441 expect_login_ok=False) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1442 |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1443 # verify error message and no hello message in sidebar. |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1444 self.assertIn('class="error-message">Invalid login <br/ >', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1445 self.assertNotIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1446 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1447 session, f = self.create_login_session(return_response=True) |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1448 self.assertIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1449 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1450 def test__generic_item_template_editok(self, user="admin"): |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1451 """Load /status7 object. Admin has edit rights so should see |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1452 a submit button. fred doesn't have edit rights |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1453 so should not have a submit button. |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1454 """ |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1455 session, f = self.create_login_session(username=user) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1456 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1457 # look for change in text in sidebar post login |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1458 self.assertIn('Hello, %s'%user, f.text) |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1459 f = session.get(self.url_base()+'/status7') |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1460 print(f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1461 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1462 # status7's name is done-cbb |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1463 self.assertIn(b'done-cbb', f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1464 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1465 if user == 'admin': |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1466 self.assertIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content) |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1467 else: |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1468 self.assertNotIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1469 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1470 # logout |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1471 f = session.get(self.url_base()+'/?@action=logout') |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1472 self.assertIn(b"Remember me?", f.content) |
|
6756
1572568fe146
See if explicit logout prevents fred from having a submit button.
John Rouillard <rouilj@ieee.org>
parents:
6755
diff
changeset
|
1473 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1474 def test__generic_item_template_editbad(self, user="fred"): |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1475 self.test__generic_item_template_editok(user=user) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1476 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1477 def test_new_issue_with_file_upload(self): |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1478 session, f = self.create_login_session() |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1479 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1480 # look for change in text in sidebar post login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1481 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1482 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1483 # create a new issue and upload a file |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1484 file_content = 'this is a test file\n' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1485 file = {"@file": ('test1.txt', file_content, "text/plain") } |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1486 issue = {"title": "my title", "priority": "1", "@action": "new"} |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1487 f = session.post(self.url_base()+'/issue?@template=item', data=issue, files=file) |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1488 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1489 # use redirected url to determine which issue and file were created. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1490 m = re.search(r'[0-9]/issue(?P<issue>[0-9]+)\?@ok_message.*file%20(?P<file>[0-9]+)%20', f.url) |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1491 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1492 # verify message in redirected url: file 1 created\nissue 1 created |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1493 # warning may fail if another test loads tracker with files. |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1494 # Escape % signs in string by doubling them. This verifies the |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1495 # search is working correctly. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1496 # use groupdict for python2. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1497 self.assertEqual('http://localhost:9001/issue%(issue)s?@ok_message=file%%20%(file)s%%20created%%0Aissue%%20%(issue)s%%20created&@template=item'%m.groupdict(), f.url) |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1498 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1499 # we have an issue display, verify filename is listed there |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1500 # seach for unique filename given to it. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1501 self.assertIn("test1.txt", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1502 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1503 # download file and verify content |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1504 f = session.get(self.url_base()+'/file%(file)s/text1.txt'%m.groupdict()) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1505 self.assertEqual(f.text, file_content) |
|
7159
765222ef4cec
- issue2551257: add 'X-Content-Type-Options: nosniff' header for file download
John Rouillard <rouilj@ieee.org>
parents:
7151
diff
changeset
|
1506 self.assertEqual(f.headers["X-Content-Type-Options"], "nosniff") |
|
8062
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
1507 self.assertEqual(f.headers["Content-Security-Policy"], "script-src 'none'") |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1508 print(f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1509 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1510 def test_new_file_via_rest(self): |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1511 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1512 session = requests.Session() |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1513 session.auth = ('admin', 'sekrit') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1514 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1515 url = self.url_base() + '/rest/data/' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1516 fname = 'a-bigger-testfile' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1517 d = dict(name = fname, type='application/octet-stream') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1518 c = dict (content = r'xyzzy') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1519 r = session.post(url + 'file', files = c, data = d, |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1520 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1521 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1522 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1523 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1524 # was a 500 before fix for issue2551178 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1525 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1526 # just compare the path leave off the number |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1527 self.assertIn('http://localhost:9001/rest/data/file/', |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1528 r.headers["location"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1529 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1530 self.assertEqual(json_dict["data"]["link"], r.headers["location"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1531 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1532 # download file and verify content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1533 r = session.get(r.headers["location"] +'/content', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1534 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1535 'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1536 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1537 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1538 self.assertEqual(json_dict['data']['data'], c["content"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1539 print(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1540 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1541 # Upload a file via rest interface - no auth |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1542 session.auth = None |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1543 r = session.post(url + 'file', files = c, data = d, |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1544 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1545 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1546 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1547 self.assertEqual(r.status_code, 403) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1548 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1549 # get session variable from web form login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1550 # and use it to upload file |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1551 session, f = self.create_login_session() |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1552 # look for change in text in sidebar post login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1553 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1554 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1555 r = session.post(url + 'file', files = c, data = d, |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1556 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1557 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1558 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1559 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1560 print(r.status_code) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1561 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1562 def test_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1563 f = requests.get(self.url_base() + "?@search_text=RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1564 self.assertIn("foo bar", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1565 |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1566 @skip_requests |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1567 class TestFeatureFlagCacheTrackerOff(BaseTestCases, WsgiSetup): |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1568 """Class to run all test in BaseTestCases with the cache_tracker |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1569 feature flag disabled when starting the wsgi server |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1570 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1571 def create_app(self): |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1572 '''The wsgi app to start with feature flag disabled''' |
|
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1573 ff = { "cache_tracker": False } |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1574 if _py3: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1575 return validator(RequestDispatcher(self.dirname, feature_flags=ff)) |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1576 else: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1577 # wsgiref/validator.py InputWrapper::readline is broke and |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1578 # doesn't support the max bytes to read argument. |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1579 return RequestDispatcher(self.dirname, feature_flags=ff) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1580 |
|
7577
0abc225864d1
only run TestPostgresWsgiServer if ostgresl is available.
John Rouillard <rouilj@ieee.org>
parents:
7557
diff
changeset
|
1581 @skip_postgresql |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1582 @skip_requests |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1583 class TestPostgresWsgiServer(BaseTestCases, WsgiSetup): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1584 """Class to run all test in BaseTestCases with the cache_tracker |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1585 feature enabled when starting the wsgi server |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1586 """ |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1587 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1588 backend = 'postgresql' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1589 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1590 @classmethod |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1591 def setup_class(cls): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1592 '''All tests in this class use the same roundup instance. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1593 This instance persists across all tests. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1594 Create the tracker dir here so that it is ready for the |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1595 create_app() method to be called. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1596 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1597 cribbed from WsgiSetup::setup_class |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1598 ''' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1599 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1600 # tests in this class. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1601 # set up and open a tracker |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1602 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1603 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1604 # open the database |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1605 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1606 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1607 # add a user without edit access for status. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1608 cls.db.user.create(username="fred", roles='User', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1609 password=password.Password('sekrit'), address='fred@example.com') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1610 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1611 # set the url the test instance will run at. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1612 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1613 # set up mailhost so errors get reported to debuging capture file |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1614 cls.db.config.MAILHOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1615 cls.db.config.MAIL_HOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1616 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1617 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1618 # added to enable csrf forgeries/CORS to be tested |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1619 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1620 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1621 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1622 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1623 cls.db.config.INDEXER = "native-fts" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1624 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1625 # disable web login rate limiting. The fast rate of tests |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1626 # causes them to trip the rate limit and fail. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1627 cls.db.config.WEB_LOGIN_ATTEMPTS_MIN = 0 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1628 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1629 # enable static precompressed files |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1630 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1631 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1632 cls.db.config.save() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1633 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1634 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1635 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1636 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1637 # re-open the database to get the updated INDEXER |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1638 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1639 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1640 result = cls.db.issue.create(title="foo bar RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1641 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1642 # add a message to allow retrieval |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1643 result = cls.db.msg.create(author = "1", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1644 content = "a message foo bar RESULT", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1645 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1646 messageid="test-msg-id") |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1647 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1648 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1649 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1650 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1651 # Force locale config to find locales in checkout not in |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1652 # installed directories |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1653 cls.backup_domain = i18n.DOMAIN |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1654 cls.backup_locale_dirs = i18n.LOCALE_DIRS |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1655 i18n.LOCALE_DIRS = ['locale'] |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1656 i18n.DOMAIN = '' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1657 |
|
6918
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1658 @classmethod |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1659 def tearDownClass(cls): |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1660 # cleanup |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1661 cls.instance.backend.db_nuke(cls.db.config) |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1662 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1663 def test_native_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1664 self.assertIn("postgresql_fts", str(self.db.indexer)) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1665 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1666 # use a ts: search as well so it only works on postgres_fts indexer |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1667 f = requests.get(self.url_base() + "?@search_text=ts:RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1668 self.assertIn("foo bar RESULT", f.text) |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1669 |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1670 @skip_requests |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1671 class TestApiRateLogin(WsgiSetup): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1672 """Class to run test in BaseTestCases with the cache_tracker |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1673 feature flag enabled when starting the wsgi server |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1674 """ |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1675 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1676 backend = 'sqlite' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1677 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1678 @classmethod |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1679 def setup_class(cls): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1680 '''All tests in this class use the same roundup instance. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1681 This instance persists across all tests. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1682 Create the tracker dir here so that it is ready for the |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1683 create_app() method to be called. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1684 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1685 cribbed from WsgiSetup::setup_class |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1686 ''' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1687 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1688 # tests in this class. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1689 # set up and open a tracker |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1690 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1691 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1692 # open the database |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1693 cls.db = cls.instance.open('admin') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1694 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1695 # add a user without edit access for status. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1696 cls.db.user.create(username="fred", roles='User', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1697 password=password.Password('sekrit'), address='fred@example.com') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1698 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1699 # set the url the test instance will run at. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1700 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1701 # set up mailhost so errors get reported to debuging capture file |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1702 cls.db.config.MAILHOST = "localhost" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1703 cls.db.config.MAIL_HOST = "localhost" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1704 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1705 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1706 # added to enable csrf forgeries/CORS to be tested |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1707 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1708 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1709 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1710 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1711 # set login failure api limits |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1712 cls.db.config.WEB_API_FAILED_LOGIN_LIMIT = 4 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1713 cls.db.config.WEB_API_FAILED_LOGIN_INTERVAL_IN_SEC = 12 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1714 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1715 # enable static precompressed files |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1716 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1717 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1718 cls.db.config.save() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1719 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1720 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1721 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1722 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1723 # re-open the database to get the updated INDEXER |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1724 cls.db = cls.instance.open('admin') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1725 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1726 result = cls.db.issue.create(title="foo bar RESULT") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1727 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1728 # add a message to allow retrieval |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1729 result = cls.db.msg.create(author = "1", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1730 content = "a message foo bar RESULT", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1731 date=rdate.Date(), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1732 messageid="test-msg-id") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1733 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1734 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1735 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1736 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1737 # Force locale config to find locales in checkout not in |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1738 # installed directories |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1739 cls.backup_domain = i18n.DOMAIN |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1740 cls.backup_locale_dirs = i18n.LOCALE_DIRS |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1741 i18n.LOCALE_DIRS = ['locale'] |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1742 i18n.DOMAIN = '' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1743 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1744 def test_rest_login_RateLimit(self): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1745 """login rate limit applies to api endpoints. Only failure |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1746 logins count though. So log in 10 times in a row |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1747 to verify that valid username/passwords aren't limited. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1748 """ |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1749 # On windows, using localhost in the URL with requests |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1750 # tries an IPv6 address first. This causes a request to |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1751 # take 2 seconds which is too slow to ever trip the rate |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1752 # limit. So replace localhost with 127.0.0.1 that does an |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1753 # IPv4 request only. |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1754 url_base_numeric = self.url_base() |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1755 url_base_numeric = url_base_numeric.replace('localhost','127.0.0.1') |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1756 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1757 # verify that valid logins are not counted against the limit. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1758 for i in range(10): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1759 # use basic auth for rest endpoint |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1760 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1761 request_headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1762 'Origin': "http://localhost:9001",} |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1763 f = requests.options(url_base_numeric + '/rest/data', |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1764 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1765 headers=request_headers |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1766 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1767 #print(f.status_code) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1768 #print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1769 #print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1770 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1771 self.assertEqual(f.status_code, 204) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1772 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1773 # Save time. check headers only for final response. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1774 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1775 'Access-Control-Allow-Origin': request_headers['Origin'], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1776 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1777 'Allow': 'OPTIONS, GET', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1778 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1779 'Access-Control-Allow-Credentials': 'true', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1780 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1781 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1782 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1783 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1784 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1785 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1786 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1787 # first 3 logins should report 401 then the rest should report |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1788 # 429 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1789 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1790 'Content-Type': 'text/plain' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1791 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1792 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1793 for i in range(10): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1794 # use basic auth for rest endpoint |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1795 |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1796 f = requests.options(url_base_numeric + '/rest/data', |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1797 auth=('admin', 'ekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1798 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1799 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1800 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1801 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1802 if (i < 4): # assuming limit is 4. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1803 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1804 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1805 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1806 self.assertEqual(f.status_code, 401) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1807 else: |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1808 self.assertEqual(f.status_code, 429) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1809 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1810 headers_expected = { 'Content-Type': 'text/plain', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1811 'X-RateLimit-Limit': '4', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1812 'X-RateLimit-Limit-Period': '12', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1813 'X-RateLimit-Remaining': '0', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1814 'Retry-After': '3', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1815 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1816 ('X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1817 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1818 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1819 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1820 'Retry-After'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1821 'Content-Length': '50'} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1822 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1823 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1824 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1825 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1826 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1827 self.assertAlmostEqual(float(f.headers['X-RateLimit-Reset']), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1828 10.0, delta=3, |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1829 msg="limit reset not within 3 seconds of 10") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1830 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1831 # test lockout this is a valid login but should be rejected |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1832 # with 429. |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1833 f = requests.options(url_base_numeric + '/rest/data', |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1834 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1835 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1836 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1837 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1838 self.assertEqual(f.status_code, 429) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1839 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1840 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1841 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1842 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1843 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1844 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1845 sleep(4) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1846 # slept long enough to get a login slot. Should work with |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1847 # 200 return code. |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1848 f = requests.get(url_base_numeric + '/rest/data', |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1849 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1850 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1851 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1852 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1853 self.assertEqual(f.status_code, 200) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1854 print(i, f.status_code) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1855 print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1856 print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1857 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1858 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1859 'Content-Type': 'application/json', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1860 'Vary': 'Origin, Accept-Encoding', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1861 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1862 ( 'X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1863 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1864 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1865 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1866 'Retry-After, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1867 'Sunset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1868 'Allow'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1869 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1870 'Access-Control-Allow-Credentials': 'true', |
|
7557
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1871 'Allow': 'OPTIONS, GET, POST, PUT, DELETE, PATCH' |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1872 } |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1873 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1874 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1875 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1876 headers_expected[header]) |
|
7557
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1877 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1878 expected_data = { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1879 "status": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1880 "link": "http://localhost:9001/rest/data/status" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1881 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1882 "keyword": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1883 "link": "http://localhost:9001/rest/data/keyword" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1884 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1885 "priority": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1886 "link": "http://localhost:9001/rest/data/priority" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1887 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1888 "user": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1889 "link": "http://localhost:9001/rest/data/user" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1890 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1891 "file": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1892 "link": "http://localhost:9001/rest/data/file" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1893 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1894 "msg": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1895 "link": "http://localhost:9001/rest/data/msg" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1896 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1897 "query": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1898 "link": "http://localhost:9001/rest/data/query" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1899 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1900 "issue": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1901 "link": "http://localhost:9001/rest/data/issue" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1902 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1903 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1904 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1905 json_dict = json.loads(f.text) |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1906 self.assertEqual(json_dict['data'], expected_data) |
