Mercurial > p > roundup > code
annotate test/test_liveserver.py @ 8168:3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
Limit use of roundup session cookie to HTTPS protocol by adding
__Secure- prefix. Automatic testing includes http behavior only.
Https behavious has been manually tested only. Need to be able to spin
up an https server using wsgiref to test https behavior in CI.
issue 2551373 opened to track automatic testing of https behavior.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 26 Nov 2024 17:11:13 -0500 |
| parents | 603aa730b067 |
| children | 14e92a595828 |
| rev | line source |
|---|---|
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1 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
|
2 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
3 from roundup import date as rdate |
| 6650 | 4 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
|
5 from roundup import password |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
6 from roundup.anypy.strings import b2s |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 from roundup.cgi.wsgi_handler import RequestDispatcher |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 from .wsgi_liveserver import LiveServerTestCase |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 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
|
10 from time import sleep |
| 7578 | 11 from .test_postgresql import skip_postgresql |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 |
|
6548
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
13 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
|
14 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
15 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
16 import requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 skip_requests = lambda func, *args, **kwargs: func |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 except ImportError: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
19 from .pytest_patcher import mark_class |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
20 skip_requests = mark_class(pytest.mark.skip( |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
21 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
|
22 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
23 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
24 import brotli |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
25 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
|
26 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
27 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
28 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
|
29 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
|
30 brotli = None |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
31 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
32 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
33 import zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
34 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
|
35 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
36 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
37 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
|
38 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
|
39 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
40 import sys |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
41 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
42 _py3 = sys.version_info[0] > 2 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
43 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
44 @skip_requests |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
45 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
|
46 # 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
|
47 # in the config file but we don't know it until after |
| 6650 | 48 # 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
|
49 # 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
|
50 port_range = (9001, 9001) # default is (8080, 8090) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 dirname = '_test_instance' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
53 backend = 'anydbm' |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
54 |
|
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
55 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
|
56 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
57 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
58 def setup_class(cls): |
| 6650 | 59 '''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
|
60 This instance persists across all tests. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
61 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
|
62 create_app() method to be called. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
63 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
64 # tests in this class. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
65 # set up and open a tracker |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
66 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
|
67 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
68 # open the database |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
69 cls.db = cls.instance.open('admin') |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
70 |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
71 # 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
|
72 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
|
73 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
|
74 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
75 # 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
|
76 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
|
77 # 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
|
78 cls.db.config.MAILHOST = "localhost" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
79 cls.db.config.MAIL_HOST = "localhost" |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
80 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
|
81 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
82 # 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
|
83 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
|
84 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
|
85 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
|
86 |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
87 # 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
|
88 # 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
|
89 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
|
90 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
91 # enable static precompressed files |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
92 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
|
93 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
94 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
|
95 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
96 # add an issue to allow testing retrieval. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
97 # also used for text searching. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
98 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
|
99 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
100 # 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
|
101 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
|
102 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
|
103 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
104 messageid="test-msg-id") |
|
7935
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
105 |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
106 # add a query using @current_user |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
107 result = cls.db.query.create( |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
108 klass="issue", |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
109 name="I created", |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
110 private_for=None, |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
111 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
|
112 "@sort=activity&@group=priority&@filter=creator&" |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
113 "@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
|
114 ) |
|
f670446b5e50
test: populate db with query using @current_user
John Rouillard <rouilj@ieee.org>
parents:
7934
diff
changeset
|
115 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
116 cls.db.commit() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
117 cls.db.close() |
| 6650 | 118 |
| 119 # Force locale config to find locales in checkout not in | |
| 120 # installed directories | |
| 121 cls.backup_domain = i18n.DOMAIN | |
| 122 cls.backup_locale_dirs = i18n.LOCALE_DIRS | |
| 123 i18n.LOCALE_DIRS = ['locale'] | |
| 124 i18n.DOMAIN = '' | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
125 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
126 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
127 def teardown_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
128 '''Close the database and delete the tracker directory |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
129 now that the app should be exiting. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
130 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
131 if cls.db: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
132 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
133 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
134 shutil.rmtree(cls.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
135 except OSError as error: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
136 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
| 6650 | 137 i18n.LOCALE_DIRS = cls.backup_locale_dirs |
| 138 i18n.DOMAIN = cls.backup_domain | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
139 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
140 def create_app(self): |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
141 '''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
|
142 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
|
143 ''' |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
144 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
145 if _py3: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
146 return validator(RequestDispatcher(self.dirname)) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
147 else: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
148 # wsgiref/validator.py InputWrapper::readline is broke and |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
149 # 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
|
150 return RequestDispatcher(self.dirname) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
151 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
152 |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
153 @skip_requests |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
154 class BaseTestCases(WsgiSetup): |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
155 """Class with all tests to run against wsgi server. Is reused when |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
156 wsgi server is started with various feature flags |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
157 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
158 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
159 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
|
160 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
|
161 # 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
|
162 session = requests.Session() |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
163 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
|
164 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
165 # login using form to get cookie |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
166 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
|
167 "@action": "login"} |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
168 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
|
169 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
170 if expect_login_ok: |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
171 # verify we have a cookie |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
172 self.assertIn('roundup_session_Roundupissuetracker', |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
173 session.cookies) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
174 |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
175 if not return_response: |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
176 return session |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
177 return session, response |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
178 |
|
8168
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
179 def test_cookie_attributes(self): |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
180 session, _response = self.create_login_session() |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
181 |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
182 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
|
183 cookie = cookie_box['roundup_session_Roundupissuetracker'] |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
184 |
|
3f0f4746dc7e
issue2551370 - prefix session cookie with __Secure- over https
John Rouillard <rouilj@ieee.org>
parents:
8132
diff
changeset
|
185 # 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
|
186 # 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
|
187 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
|
188 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
|
189 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
|
190 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
|
191 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
192 def test_query(self): |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
193 current_user_query = ( |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
194 "@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
|
195 "@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
|
196 "@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
|
197 "@dispname=Test1") |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
198 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
199 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
|
200 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
|
201 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
202 # 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
|
203 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
|
204 # find title of issue 1 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
205 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
|
206 # 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
|
207 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
|
208 # logout |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
209 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
|
210 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
211 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
212 # set up for another user |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
213 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
|
214 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
|
215 |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
216 # verify the query has run |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
217 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
|
218 # 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
|
219 # of the footer is missing. |
|
22354d7fc94a
test: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7935
diff
changeset
|
220 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
|
221 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
222 def test_start_page(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
223 """ 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
|
224 """ |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
225 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
|
226 self.assertEqual(f.status_code, 200) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
227 self.assertTrue(b'Roundup' in f.content) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
228 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
|
229 |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
230 def test_start_in_german(self): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
231 """ 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
|
232 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
|
233 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
|
234 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
235 use: |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
236 url parameter @language |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
237 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
|
238 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
|
239 """ |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
240 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
241 # test url parameter |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
242 f = requests.get(self.url_base() + "?@language=de") |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
243 self.assertEqual(f.status_code, 200) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
244 print(f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
245 self.assertTrue(b'Roundup' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
246 self.assertTrue(b'Aufgabenliste' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
247 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
|
248 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
249 # 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
|
250 bluemonster = f.cookies |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
251 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
|
252 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
|
253 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
254 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
|
255 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
|
256 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
|
257 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
258 # 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
|
259 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
|
260 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
|
261 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
262 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
|
263 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
|
264 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
|
265 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
|
266 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
|
267 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
268 # 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
|
269 alh = {"Accept-Language": |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
270 "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
|
271 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
|
272 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
|
273 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
274 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
|
275 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
|
276 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
|
277 |
|
8062
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
278 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
|
279 """ 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
|
280 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
|
281 """ |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
282 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
|
283 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
|
284 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
|
285 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
|
286 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
|
287 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
|
288 |
|
28aa76443f58
fix(security): fix CVE-2024-39124, CVE-2024-39124, and CVE-2024-39125
John Rouillard <rouilj@ieee.org>
parents:
8020
diff
changeset
|
289 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
|
290 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
|
291 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
|
292 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
|
293 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
|
294 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
|
295 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
296 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
|
297 """ 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
|
298 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
|
299 Range: 10-20 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
300 Range: 10- |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
301 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
302 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
|
303 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
|
304 Range: -10 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
305 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
306 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
|
307 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
308 """ |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
309 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
310 # get whole file uncompressed. Extract content length and etag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
311 # for future use |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
312 f = requests.get(self.url_base() + "/@@file/style.css", |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
313 headers = {"Accept-Encoding": "identity"}) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
314 # store etag for condition range testing |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
315 etag = f.headers['etag'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
316 expected_length = f.headers['content-length'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
317 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
318 # 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
|
319 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
|
320 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
|
321 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
|
322 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
323 # 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
|
324 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
325 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
326 "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
|
327 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
328 # 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
|
329 hdrs = {"Range": "bytes=10-20"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
330 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
|
331 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
|
332 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
|
333 # 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
|
334 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
|
335 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
|
336 "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
|
337 |
|
7816
1b5daee24dc7
test: fix test for invalid etag in if-range.
John Rouillard <rouilj@ieee.org>
parents:
7578
diff
changeset
|
338 # 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
|
339 hdrs = {"Range": "bytes=11-"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
340 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
|
341 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
|
342 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
|
343 "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
|
344 expected_length)) |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
345 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
|
346 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
347 # 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
|
348 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
|
349 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
|
350 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
|
351 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
|
352 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
353 # 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
|
354 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
355 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
356 "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
|
357 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
358 # 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
|
359 hdrs['If-Range'] = etag[2:] # bad tag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
360 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
|
361 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
362 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
363 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
|
364 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
365 # 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
|
366 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
|
367 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
|
368 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
|
369 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
|
370 # 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
|
371 self.assertEqual(len(f.content), int(expected_length)) |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
372 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
|
373 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
374 # 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
|
375 # 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
376 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
377 hdrs['If-Range'] = etag # any tag works |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
378 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
|
379 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
380 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
381 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
|
382 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
383 # 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
|
384 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
385 del(hdrs['If-Range']) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
386 print(hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
387 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
|
388 self.assertEqual(f.status_code, 416) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
389 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
390 "bytes */%s"%expected_length) |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
391 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
392 # invalid range multiple ranges |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
393 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
|
394 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
395 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
|
396 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
|
397 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
|
398 '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
|
399 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
|
400 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
401 # 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
|
402 hdrs['Range'] = "bytes=1" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
403 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
404 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
|
405 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
|
406 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
|
407 '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
|
408 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
|
409 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
410 # 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
|
411 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
|
412 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
413 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
|
414 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
|
415 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
|
416 '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
|
417 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
|
418 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
419 # 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
|
420 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
|
421 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
422 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
|
423 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
|
424 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
|
425 '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
|
426 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
|
427 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
428 # 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
|
429 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
|
430 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
431 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
|
432 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
|
433 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
|
434 '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
|
435 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
|
436 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
437 # range is invalid #2 < #1 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
438 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
|
439 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
440 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
|
441 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
|
442 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
|
443 '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
|
444 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
|
445 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
446 # 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
|
447 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
|
448 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
449 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
|
450 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
|
451 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
|
452 '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
|
453 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
|
454 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
455 # 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
|
456 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
|
457 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
458 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
|
459 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
|
460 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
|
461 '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
|
462 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
|
463 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
464 # range is unsupported units |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
465 hdrs['Range'] = "badunits=1-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
466 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
467 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
|
468 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
|
469 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
|
470 '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
|
471 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
|
472 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
473 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
474 # valid range, invalid file |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
475 hdrs['Range'] = "bytes=0-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
476 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
477 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
|
478 headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
479 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
|
480 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
|
481 '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
|
482 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
483 def test_rest_preflight_collection(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
484 # no auth for rest csrf preflight |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
485 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
|
486 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
487 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
488 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
489 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
490 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
491 'Origin': "https://client.com"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
492 print(f.status_code) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
493 print(f.headers) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
494 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
495 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
496 self.assertEqual(f.status_code, 204) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
497 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
498 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
|
499 '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
|
500 'Allow': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
501 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
502 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
503 } |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
504 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
505 # 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
|
506 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
|
507 f.headers.items() if key in expected }, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
508 expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
509 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
510 # use invalid Origin |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
511 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
|
512 headers = {'content-type': "application/json", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
513 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
514 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
515 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
516 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
517 'Origin': "ZZZ"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
518 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
519 self.assertEqual(f.status_code, 400) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
520 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
521 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
|
522 'allowed to use Rest Interface." } }' |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
523 self.assertEqual(b2s(f.content), expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
524 |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
525 # Test when Origin is not sent. |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
526 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
|
527 headers = {'content-type': "application/json", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
528 'x-requested-with': "rest", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
529 'Access-Control-Request-Headers': |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
530 "x-requested-with", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
531 'Access-Control-Request-Method': "PUT",}) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
532 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
533 self.assertEqual(f.status_code, 400) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
534 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
535 expected = ('{ "error": { "status": 400, "msg": "Required' |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
536 ' Header Missing" } }') |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
537 self.assertEqual(b2s(f.content), expected) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
538 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
539 |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
540 def test_rest_invalid_method_collection(self): |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
541 # use basic auth for rest endpoint |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
542 f = requests.put(self.url_base() + '/rest/data/user', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
543 auth=('admin', 'sekrit'), |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
544 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
545 'X-Requested-With': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
546 'Origin': "https://client.com"}) |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
547 print(f.status_code) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
548 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
549 print(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
550 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
551 self.assertEqual(f.status_code, 405) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
552 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
|
553 'Access-Control-Allow-Credentials': 'true', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
554 'Allow': 'DELETE, GET, OPTIONS, POST', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
555 } |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
556 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
557 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
558 # use dict comprehension to remove fields like date, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
559 # content-length etc. from f.headers. |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
560 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
|
561 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
562 content = json.loads(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
563 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
564 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
|
565 self.assertEqual(exp_content, content['error']['msg']) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
566 |
|
6386
2a2da73e1e26
Remove Connection: close header for 501 error handling rest
John Rouillard <rouilj@ieee.org>
parents:
6385
diff
changeset
|
567 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
|
568 """ 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
|
569 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
570 # 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
|
571 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
|
572 headers = {'content-type': ""}) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
573 # 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
|
574 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
|
575 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
576 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
|
577 # 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
|
578 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
|
579 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
580 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
581 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
582 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
583 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
|
584 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
585 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
586 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
587 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
588 '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
|
589 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
590 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
591 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
592 '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
|
593 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
594 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
595 # 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
|
596 # 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
|
597 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
|
598 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
599 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
|
600 # 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
|
601 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
|
602 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
603 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
604 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
605 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
606 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
|
607 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
608 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
609 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
610 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
611 '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
|
612 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
613 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
614 '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
|
615 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
616 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
617 # 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
|
618 # 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
|
619 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
|
620 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
621 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
|
622 # 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
|
623 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
|
624 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
625 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
626 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
627 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
628 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
|
629 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
630 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
631 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
632 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
633 '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
|
634 'Allow': 'OPTIONS, GET, POST', |
|
6526
3c8322e3fe25
Fix test and remove pdb invocation.
John Rouillard <rouilj@ieee.org>
parents:
6525
diff
changeset
|
635 '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
|
636 '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
|
637 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
638 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
639 # 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
|
640 # 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
|
641 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
|
642 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
643 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
644 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
|
645 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
646 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
|
647 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
648 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
649 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
650 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
651 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
|
652 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
653 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
654 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
655 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
656 '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
|
657 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
658 '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
|
659 '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
|
660 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
661 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
662 # 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
|
663 # 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
|
664 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
|
665 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
666 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
|
667 # 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
|
668 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
|
669 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
670 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
671 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
672 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
673 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
|
674 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
675 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
676 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
677 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
678 '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
|
679 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
680 '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
|
681 '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
|
682 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
683 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
684 # 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
|
685 # 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
|
686 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
|
687 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
688 ## test a read only property. |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
689 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
690 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
|
691 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
692 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
693 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
694 }) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
695 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
696 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
697 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
698 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
|
699 expected1 = dict(expected) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
700 expected1['Allow'] = 'OPTIONS, GET' |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
701 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
|
702 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
703 # 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
|
704 # 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
|
705 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
|
706 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
707 ## 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
|
708 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
|
709 auth=('admin', 'sekrit'), |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
710 headers = {'content-type': "", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
711 'Origin': "http://localhost:9001",}) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
712 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
713 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
714 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
715 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
|
716 |
|
7983
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
717 def test_rest_endpoint_user_roles(self): |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
718 # use basic auth for rest endpoint |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
719 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
|
720 auth=('admin', 'sekrit'), |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
721 headers = {'content-type': "", |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
722 'Origin': "http://localhost:9001", |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
723 }) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
724 print(f.status_code) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
725 print(f.headers) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
726 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
727 self.assertEqual(f.status_code, 200) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
728 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
|
729 'Access-Control-Allow-Credentials': 'true', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
730 'Allow': 'GET', |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
731 } |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
732 # use dict comprehension to remove fields like date, |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
733 # content-length etc. from f.headers. |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
734 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
|
735 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
736 content = json.loads(f.content) |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
737 |
|
dd229bbdd32d
issue 2551353 - add roundup-classhelper
John Rouillard <rouilj@ieee.org>
parents:
7937
diff
changeset
|
738 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
|
739 |
|
8020
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
740 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
|
741 '''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
|
742 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
|
743 multiple values. |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
744 ''' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
745 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
|
746 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
|
747 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
748 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
|
749 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
750 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
751 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
|
752 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
|
753 'Content-Encoding': 'gzip', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
754 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
755 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
756 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
757 # 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
|
758 # 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
|
759 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
|
760 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
|
761 expected) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
762 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
763 # 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
|
764 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
|
765 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
|
766 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
|
767 '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
|
768 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
769 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
|
770 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
771 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
772 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
|
773 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
|
774 'Content-Length': '0', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
775 'ETag': etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
776 'Vary': 'Accept-Encoding' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
777 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
778 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
779 # 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
|
780 # 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
|
781 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
|
782 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
783 # 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
|
784 # and multiple etags |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
785 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
|
786 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
787 # 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
|
788 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
|
789 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
790 all_etags = ( |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
791 '"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
|
792 base_etag |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
793 ) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
794 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
795 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
|
796 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
|
797 '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
|
798 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
799 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
|
800 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
801 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
802 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
|
803 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
|
804 'Content-Length': '0', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
805 'ETag': base_etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
806 'Vary': 'Accept-Encoding' |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
807 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
808 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
809 # 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
|
810 # 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
|
811 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
|
812 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
813 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
814 # 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
|
815 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
|
816 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
|
817 '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
|
818 'Accept': '*/*'}) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
819 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
|
820 print(f.headers) |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
821 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
822 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
|
823 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
|
824 'ETag': etag, |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
825 'Content-Encoding': 'gzip', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
826 'Vary': 'Accept-Encoding', |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
827 } |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
828 |
|
60c98a8a23bd
fix: make If-None-Match work for static file (@@file) case
John Rouillard <rouilj@ieee.org>
parents:
7983
diff
changeset
|
829 # 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
|
830 # 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
|
831 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
|
832 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
833 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
|
834 ''' 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
|
835 if-modified-since timestamps. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
836 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
837 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
|
838 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
839 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
|
840 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
841 '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
|
842 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
843 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
844 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
845 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
846 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
847 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
|
848 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
849 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
850 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
851 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
852 # 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
|
853 # etag etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
854 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
|
855 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
856 # now use today's date |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
857 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
|
858 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
|
859 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
860 '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
|
861 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
862 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
863 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
864 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
865 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
|
866 expected = { 'Vary': 'Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
867 'Content-Length': '0', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
868 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
869 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
870 # 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
|
871 # etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
872 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
|
873 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
874 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
875 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
|
876 for tail in [ |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
877 '/issue1', # normal url |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
878 '/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
|
879 '/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
|
880 ]: |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
881 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
|
882 headers = { 'Accept-Encoding': 'gzip', |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
883 'Accept': '*/*'}) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
884 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
885 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
|
886 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
|
887 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
888 def test_load_msg1(self): |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
889 # 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
|
890 f = requests.get(self.url_base() + '/msg0001', |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
891 headers = { 'Accept-Encoding': 'gzip', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
892 'Accept': '*/*'}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
893 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
894 self.assertIn(b'foo bar RESULT', f.content) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
895 self.assertEqual(f.status_code, 200) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
896 |
|
6749
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
897 def test_bad_path(self): |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
898 f = requests.get(self.url_base() + '/_bad>', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
899 headers = { 'Accept-Encoding': 'gzip, foo', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
900 'Accept': '*/*'}) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
901 |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
902 # test that returned text is encoded. |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
903 self.assertEqual(f.content, b'Not found: _bad>') |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
904 self.assertEqual(f.status_code, 404) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
905 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
906 def test_compression_gzipfile(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
907 '''Get the compressed dummy file''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
908 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
909 # 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
|
910 # 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
|
911 # that I get the compressed one. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
912 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
|
913 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
|
914 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
915 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
|
916 bytes_written = f.write(test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
917 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
918 self.assertEqual(bytes_written, 30) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
919 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
920 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
921 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
|
922 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
923 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
924 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
925 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
926 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
927 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
928 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
|
929 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
930 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
931 'Content-Length': '69', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
932 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
933 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
934 # 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
|
935 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
936 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
|
937 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
|
938 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
939 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
940 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
941 # 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
|
942 self.assertEqual(f.content, test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
943 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
944 '''# 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
|
945 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
946 # 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
|
947 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
|
948 headers = { 'Accept-Encoding': 'br, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
949 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
950 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
951 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
952 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
953 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
954 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
|
955 'Content-Encoding': 'br', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
956 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
957 'Content-Length': '960', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
958 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
959 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
960 # 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
|
961 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
962 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
|
963 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
|
964 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
965 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
966 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
967 from urllib3.response import BrotliDecoder |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
968 # 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
|
969 data = f.content |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
970 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
971 # I need to decode |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
972 data = brotli.decompress(f.content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
973 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
974 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
|
975 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
976 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
977 # 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
|
978 # 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
|
979 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
|
980 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
981 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
|
982 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
983 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
984 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
985 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
986 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
987 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
988 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
|
989 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
990 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
991 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
992 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
993 # 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
|
994 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
995 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
|
996 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
|
997 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
998 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
999 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1000 # 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
|
1001 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
|
1002 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1003 # cleanup |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1004 os.remove(gzfile) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1005 |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1006 def test_compression_none_etag(self): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1007 # use basic auth for rest endpoint |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1008 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
|
1009 auth=('admin', 'sekrit'), |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1010 headers = {'content-type': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1011 'Accept-Encoding': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1012 'Accept': '*/*'}) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1013 print(f.status_code) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1014 print(f.headers) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1015 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1016 self.assertEqual(f.status_code, 200) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1017 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1018 'Access-Control-Allow-Credentials': 'true', |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1019 '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
|
1020 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1021 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1022 content_str = '''{ "data": { |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1023 "id": "1", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1024 "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
|
1025 "data": "admin" |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1026 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1027 }''' |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1028 content = json.loads(content_str) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1029 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1030 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1031 if (type("") == type(f.content)): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1032 json_dict = json.loads(f.content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1033 else: |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1034 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
|
1035 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1036 # 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
|
1037 del(json_dict['data']['@etag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1038 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1039 # 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
|
1040 # just skip comparing it. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1041 del(json_dict['data']['type']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1042 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1043 self.assertDictEqual(json_dict, content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1044 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1045 # 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
|
1046 print(f.headers['ETag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1047 with self.assertRaises(ValueError): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1048 f.headers['ETag'].index('-') |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1049 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1050 # 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
|
1051 # content-length etc. from f.headers. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1052 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
|
1053 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
1054 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1055 def test_compression_gzip(self, method='gzip'): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1056 if method == 'gzip': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1057 decompressor = None |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1058 elif method == 'br': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1059 decompressor = brotli.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1060 elif method == 'zstd': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1061 decompressor = zstd.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1062 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1063 # use basic auth for rest endpoint |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1064 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
|
1065 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1066 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1067 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1068 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1069 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1070 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1071 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1072 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1073 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1074 'Access-Control-Allow-Credentials': 'true', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1075 '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
|
1076 'Content-Encoding': method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1077 'Vary': 'Origin, Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1078 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1079 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1080 content_str = '''{ "data": { |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1081 "id": "1", |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1082 "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
|
1083 "data": "admin" |
|
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 }''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1086 content = json.loads(content_str) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1087 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1088 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1089 print(type(f.content)) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1090 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1091 try: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1092 if (type("") == type(f.content)): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1093 json_dict = json.loads(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1094 else: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1095 json_dict = json.loads(b2s(f.content)) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1096 except (ValueError, UnicodeDecodeError): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1097 # 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
|
1098 # gzip gets decompressed automatically |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1099 # 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
|
1100 # UnicodeDecodeError - raised by loads on compressed content |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1101 # python3 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1102 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
|
1103 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1104 # 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
|
1105 del(json_dict['data']['@etag']) |
|
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 # 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
|
1108 # just skip comparing it. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1109 del(json_dict['data']['type']) |
|
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 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1112 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1113 # verify that ETag header ends with -<method> |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1114 try: |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1115 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
|
1116 except AttributeError: |
|
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
1117 # 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
|
1118 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
|
1119 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1120 # 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
|
1121 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1122 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
|
1123 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1124 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1125 # 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
|
1126 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
|
1127 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1128 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1129 'Accept-Encoding': '%s, foo'%method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1130 'Accept': '*/*', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
1131 'Origin': 'https://client.com'}) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1132 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1133 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1134 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1135 # NOTE: not compressed payload too small |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1136 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
|
1137 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1138 'Access-Control-Allow-Credentials': 'true', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
1139 '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
|
1140 '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
|
1141 'Vary': 'Origin' |
|
6458
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 content = { "error": |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1145 { |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1146 "status": 400, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
1147 "msg": "Invalid attribute foo" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1148 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1149 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1150 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1151 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
|
1152 self.assertDictEqual(json_dict, content) |
|
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 # 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
|
1155 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1156 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
|
1157 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1158 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1159 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
|
1160 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
|
1161 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1162 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1163 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1164 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1165 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1166 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
|
1167 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1168 'Vary': 'Accept-Encoding', |
|
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 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1171 # 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
|
1172 # 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
|
1173 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
|
1174 # 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
|
1175 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1176 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1177 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1178 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1179 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1180 # check first few bytes. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1181 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
|
1182 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1183 # 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
|
1184 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1185 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
|
1186 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
|
1187 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1188 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1189 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1190 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
|
1191 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
|
1192 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1193 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1194 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1195 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1196 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1197 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
|
1198 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1199 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1200 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1201 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1202 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
|
1203 # 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
|
1204 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1205 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1206 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1207 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1208 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1209 # check first few bytes. |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1210 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
|
1211 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1212 # 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
|
1213 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1214 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
|
1215 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
|
1216 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1217 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1218 @skip_brotli |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1219 def test_compression_br(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1220 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
|
1221 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1222 @skip_zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1223 def test_compression_zstd(self): |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1224 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
|
1225 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1226 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
|
1227 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
|
1228 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
|
1229 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1230 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
|
1231 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
|
1232 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1233 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
|
1234 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
|
1235 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1236 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
|
1237 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
|
1238 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
|
1239 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1240 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
|
1241 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
|
1242 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1243 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
|
1244 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
|
1245 |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1246 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
|
1247 '''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
|
1248 sure cookie is removed. |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1249 ''' |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1250 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1251 session, f = self.create_login_session() |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1252 |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1253 # 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
|
1254 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
|
1255 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
|
1256 session.cookies) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1257 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1258 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
|
1259 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
|
1260 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1261 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
|
1262 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
|
1263 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
|
1264 break |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1265 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1266 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
|
1267 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1268 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
|
1269 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
|
1270 |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1271 def test_login_fail_then_succeed(self): |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1272 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1273 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
|
1274 expect_login_ok=False) |
|
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1275 |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1276 # 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
|
1277 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
|
1278 self.assertNotIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1279 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1280 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
|
1281 self.assertIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1282 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1283 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
|
1284 """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
|
1285 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
|
1286 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
|
1287 """ |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1288 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
|
1289 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1290 # 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
|
1291 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
|
1292 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
|
1293 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
|
1294 |
|
7934
6a13cf7bdca5
test: refactor tests to use create_login_session
John Rouillard <rouilj@ieee.org>
parents:
7916
diff
changeset
|
1295 # 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
|
1296 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
|
1297 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1298 if user == 'admin': |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1299 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
|
1300 else: |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1301 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
|
1302 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1303 # logout |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1304 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
|
1305 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
|
1306 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1307 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
|
1308 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
|
1309 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1310 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
|
1311 session, f = self.create_login_session() |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1312 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1313 # 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
|
1314 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1315 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1316 # 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
|
1317 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
|
1318 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
|
1319 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
|
1320 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
|
1321 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1322 # 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
|
1323 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
|
1324 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1325 # 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
|
1326 # 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
|
1327 # 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
|
1328 # search is working correctly. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1329 # use groupdict for python2. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1330 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
|
1331 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1332 # 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
|
1333 # seach for unique filename given to it. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1334 self.assertIn("test1.txt", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1335 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1336 # download file and verify content |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1337 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
|
1338 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
|
1339 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
|
1340 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
|
1341 print(f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1342 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1343 def test_new_file_via_rest(self): |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1344 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1345 session = requests.Session() |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1346 session.auth = ('admin', 'sekrit') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1347 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1348 url = self.url_base() + '/rest/data/' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1349 fname = 'a-bigger-testfile' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1350 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
|
1351 c = dict (content = r'xyzzy') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1352 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
|
1353 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1354 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1355 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1356 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1357 # was a 500 before fix for issue2551178 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1358 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1359 # 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
|
1360 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
|
1361 r.headers["location"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1362 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1363 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
|
1364 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1365 # download file and verify content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1366 r = session.get(r.headers["location"] +'/content', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1367 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1368 'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1369 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1370 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1371 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
|
1372 print(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1373 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1374 # 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
|
1375 session.auth = None |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1376 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
|
1377 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1378 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1379 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1380 self.assertEqual(r.status_code, 403) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1381 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1382 # get session variable from web form login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1383 # 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
|
1384 session, f = self.create_login_session() |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1385 # 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
|
1386 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1387 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1388 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
|
1389 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1390 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1391 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1392 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1393 print(r.status_code) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1394 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1395 def test_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1396 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
|
1397 self.assertIn("foo bar", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1398 |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1399 @skip_requests |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1400 class TestFeatureFlagCacheTrackerOff(BaseTestCases, WsgiSetup): |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1401 """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
|
1402 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
|
1403 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1404 def create_app(self): |
|
7819
0fe2b9f6e19f
issue2551212 - enable wsgi cache_tracker by default
John Rouillard <rouilj@ieee.org>
parents:
7816
diff
changeset
|
1405 '''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
|
1406 ff = { "cache_tracker": False } |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1407 if _py3: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1408 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
|
1409 else: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1410 # 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
|
1411 # 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
|
1412 return RequestDispatcher(self.dirname, feature_flags=ff) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1413 |
|
7577
0abc225864d1
only run TestPostgresWsgiServer if ostgresl is available.
John Rouillard <rouilj@ieee.org>
parents:
7557
diff
changeset
|
1414 @skip_postgresql |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1415 @skip_requests |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1416 class TestPostgresWsgiServer(BaseTestCases, WsgiSetup): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1417 """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
|
1418 feature enabled when starting the wsgi server |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1419 """ |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1420 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1421 backend = 'postgresql' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1422 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1423 @classmethod |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1424 def setup_class(cls): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1425 '''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
|
1426 This instance persists across all tests. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1427 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
|
1428 create_app() method to be called. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1429 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1430 cribbed from WsgiSetup::setup_class |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1431 ''' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1432 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1433 # tests in this class. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1434 # set up and open a tracker |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1435 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
|
1436 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1437 # open the database |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1438 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1439 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1440 # add a user without edit access for status. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1441 cls.db.user.create(username="fred", roles='User', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1442 password=password.Password('sekrit'), address='fred@example.com') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1443 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1444 # 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
|
1445 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1446 # 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
|
1447 cls.db.config.MAILHOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1448 cls.db.config.MAIL_HOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1449 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
|
1450 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1451 # 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
|
1452 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
|
1453 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
|
1454 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
|
1455 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1456 cls.db.config.INDEXER = "native-fts" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1457 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1458 # 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
|
1459 # 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
|
1460 cls.db.config.WEB_LOGIN_ATTEMPTS_MIN = 0 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1461 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1462 # enable static precompressed files |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1463 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1464 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1465 cls.db.config.save() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1466 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1467 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1468 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1469 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1470 # 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
|
1471 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1472 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1473 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
|
1474 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1475 # 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
|
1476 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
|
1477 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
|
1478 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1479 messageid="test-msg-id") |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1480 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1481 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1482 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1483 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1484 # 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
|
1485 # installed directories |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1486 cls.backup_domain = i18n.DOMAIN |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1487 cls.backup_locale_dirs = i18n.LOCALE_DIRS |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1488 i18n.LOCALE_DIRS = ['locale'] |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1489 i18n.DOMAIN = '' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1490 |
|
6918
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1491 @classmethod |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1492 def tearDownClass(cls): |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1493 # cleanup |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1494 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
|
1495 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1496 def test_native_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1497 self.assertIn("postgresql_fts", str(self.db.indexer)) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1498 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1499 # 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
|
1500 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
|
1501 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
|
1502 |
|
7909
80cf6098ea65
issue2551334 - Get test suite to pass using windows python
John Rouillard <rouilj@ieee.org>
parents:
7819
diff
changeset
|
1503 @skip_requests |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1504 class TestApiRateLogin(WsgiSetup): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1505 """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
|
1506 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
|
1507 """ |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1508 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1509 backend = 'sqlite' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1510 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1511 @classmethod |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1512 def setup_class(cls): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1513 '''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
|
1514 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
|
1515 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
|
1516 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
|
1517 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1518 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
|
1519 ''' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1520 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1521 # tests in this class. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1522 # 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
|
1523 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
|
1524 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1525 # open the database |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1526 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
|
1527 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1528 # 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
|
1529 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
|
1530 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
|
1531 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1532 # 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
|
1533 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
|
1534 # 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
|
1535 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
|
1536 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
|
1537 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
|
1538 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1539 # 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
|
1540 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
|
1541 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
|
1542 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
|
1543 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1544 # 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
|
1545 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
|
1546 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
|
1547 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1548 # enable static precompressed files |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1549 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
|
1550 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1551 cls.db.config.save() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1552 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1553 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1554 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1555 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1556 # 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
|
1557 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
|
1558 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1559 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
|
1560 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1561 # 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
|
1562 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
|
1563 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
|
1564 date=rdate.Date(), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1565 messageid="test-msg-id") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1566 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1567 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1568 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1569 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1570 # 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
|
1571 # installed directories |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1572 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
|
1573 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
|
1574 i18n.LOCALE_DIRS = ['locale'] |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1575 i18n.DOMAIN = '' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1576 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1577 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
|
1578 """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
|
1579 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
|
1580 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
|
1581 """ |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1582 # 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
|
1583 # 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
|
1584 # 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
|
1585 # 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
|
1586 # IPv4 request only. |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1587 url_base_numeric = self.url_base() |
|
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1588 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
|
1589 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1590 # 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
|
1591 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
|
1592 # 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
|
1593 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1594 request_headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1595 'Origin': "http://localhost:9001",} |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1596 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
|
1597 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1598 headers=request_headers |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1599 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1600 #print(f.status_code) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1601 #print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1602 #print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1603 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1604 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
|
1605 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1606 # 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
|
1607 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1608 '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
|
1609 '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
|
1610 'Allow': 'OPTIONS, GET', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1611 '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
|
1612 '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
|
1613 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1614 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1615 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
|
1616 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
|
1617 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1618 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1619 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1620 # 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
|
1621 # 429 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1622 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1623 'Content-Type': 'text/plain' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1624 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1625 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1626 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
|
1627 # 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
|
1628 |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1629 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
|
1630 auth=('admin', 'ekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1631 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1632 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1633 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1634 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1635 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
|
1636 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
|
1637 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
|
1638 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1639 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
|
1640 else: |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1641 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
|
1642 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1643 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
|
1644 'X-RateLimit-Limit': '4', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1645 '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
|
1646 'X-RateLimit-Remaining': '0', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1647 'Retry-After': '3', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1648 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1649 ('X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1650 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1651 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1652 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1653 'Retry-After'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1654 'Content-Length': '50'} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1655 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1656 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
|
1657 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
|
1658 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1659 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1660 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
|
1661 10.0, delta=3, |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1662 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
|
1663 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1664 # 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
|
1665 # with 429. |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1666 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
|
1667 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1668 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1669 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1670 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1671 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
|
1672 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1673 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
|
1674 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
|
1675 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1676 |
|
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 sleep(4) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1679 # 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
|
1680 # 200 return code. |
|
7916
4cca0ae9f901
issue2551334 - get test suite running under windows
John Rouillard <rouilj@ieee.org>
parents:
7909
diff
changeset
|
1681 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
|
1682 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1683 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1684 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1685 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1686 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
|
1687 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
|
1688 print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1689 print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1690 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1691 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1692 'Content-Type': 'application/json', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1693 'Vary': 'Origin, Accept-Encoding', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1694 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1695 ( 'X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1696 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1697 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1698 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1699 'Retry-After, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1700 'Sunset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1701 'Allow'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1702 '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
|
1703 '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
|
1704 '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
|
1705 } |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1706 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1707 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
|
1708 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
|
1709 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
|
1710 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1711 expected_data = { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1712 "status": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1713 "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
|
1714 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1715 "keyword": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1716 "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
|
1717 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1718 "priority": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1719 "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
|
1720 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1721 "user": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1722 "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
|
1723 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1724 "file": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1725 "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
|
1726 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1727 "msg": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1728 "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
|
1729 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1730 "query": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1731 "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
|
1732 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1733 "issue": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1734 "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
|
1735 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1736 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1737 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1738 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
|
1739 self.assertEqual(json_dict['data'], expected_data) |
