Mercurial > p > roundup > code
annotate test/test_liveserver.py @ 6693:9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
Add support for unauthenticated CORS preflight and fix headers for
CORS.
client.py:
pass through unauthenticated CORS preflight to rest backend. Normal
rest OPTION handlers (including tracker defined extensions) can
see and handle the request.
make some error cases return error json with crrect mime type rather
than plain text tracebacks.
create new functions to verify origin and referer that filter using
allowed origins setting.
remove tracker base url from error message is referer is not at an
allowed origin.
rest.py:
fix up OPTION methods handlers to include
Access-Control-Allow-Methods that are the same as the Allow
header.
set cache to one week for all Access-Control headers for CORS
preflight only.
remove self.client.setHeader("Access-Control-Allow-Origin", "*") and
set Access-Control-Allow-Origin to the client supplied origin if
it passes allowed origin checks. Required for CORS otherwise data
isn't available to caller. Set for all responses.
set Vary header now includes Origin as responses can differ based on
Origin for all responses.
set Access-Control-Allow-Credentials to true on all responses.
test_liveserver.py:
run server with setting to enforce origin csrf header check
run server with setting to enforce x-requested-with csrf header check
run server with setting for allowed_api_origins
requests now set required csrf headers
test preflight request on collections
check new headers and Origin is no longer '*'
rewrite all compression checks to use a single method with argument
to use different compression methods. Reduce a lot of code
duplication and makes updating for new headers easier.
test_cgi:
test new error messages in client.py
account for new headers
test preflight and new code paths
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 07 Jun 2022 09:39:35 -0400 |
| parents | a193653d6fa4 |
| children | d32d43e4a5ba |
| rev | line source |
|---|---|
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1 import shutil, errno, pytest, json, gzip, os, re |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
2 |
| 6650 | 3 from roundup import i18n |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
4 from roundup.anypy.strings import b2s |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
5 from roundup.cgi.wsgi_handler import RequestDispatcher |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
6 from .wsgi_liveserver import LiveServerTestCase |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 from . import db_test_base |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 |
|
6548
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
9 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
|
10 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
11 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 import requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
13 skip_requests = lambda func, *args, **kwargs: func |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
14 except ImportError: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
15 from .pytest_patcher import mark_class |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
16 skip_requests = mark_class(pytest.mark.skip( |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 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
|
18 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
19 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
20 import brotli |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
21 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
|
22 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
23 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
24 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
|
25 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
|
26 brotli = None |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
27 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
28 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
29 import zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
30 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
|
31 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
32 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
33 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
|
34 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
|
35 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
36 import sys |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
37 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
38 _py3 = sys.version_info[0] > 2 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
39 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
40 @skip_requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
41 class SimpleTest(LiveServerTestCase): |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
42 # 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
|
43 # in the config file but we don't know it until after |
| 6650 | 44 # 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
|
45 # 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
|
46 port_range = (9001, 9001) # default is (8080, 8090) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
47 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
48 dirname = '_test_instance' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
49 backend = 'anydbm' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
50 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 def setup_class(cls): |
| 6650 | 53 '''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
|
54 This instance persists across all tests. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
55 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
|
56 create_app() method to be called. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
57 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
58 # tests in this class. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
59 # set up and open a tracker |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
60 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
|
61 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
62 # open the database |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
63 cls.db = cls.instance.open('admin') |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
64 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
65 # 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
|
66 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
|
67 # 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
|
68 cls.db.config.MAILHOST = "localhost" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
69 cls.db.config.MAIL_HOST = "localhost" |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
70 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
71 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
|
72 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
73 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
74 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
75 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
76 # enable static precompressed files |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
77 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
|
78 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
79 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
|
80 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
81 cls.db.commit() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
82 cls.db.close() |
| 6650 | 83 |
| 84 # Force locale config to find locales in checkout not in | |
| 85 # installed directories | |
| 86 cls.backup_domain = i18n.DOMAIN | |
| 87 cls.backup_locale_dirs = i18n.LOCALE_DIRS | |
| 88 i18n.LOCALE_DIRS = ['locale'] | |
| 89 i18n.DOMAIN = '' | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
90 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
91 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
92 def teardown_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
93 '''Close the database and delete the tracker directory |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
94 now that the app should be exiting. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
95 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
96 if cls.db: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
97 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
98 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
99 shutil.rmtree(cls.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
100 except OSError as error: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
101 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
| 6650 | 102 i18n.LOCALE_DIRS = cls.backup_locale_dirs |
| 103 i18n.DOMAIN = cls.backup_domain | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
104 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
105 def create_app(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
106 '''The wsgi app to start''' |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
107 if _py3: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
108 return validator(RequestDispatcher(self.dirname)) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
109 else: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
110 # wsgiref/validator.py InputWrapper::readline is broke and |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
111 # 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
|
112 return RequestDispatcher(self.dirname) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
113 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
114 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
115 def test_start_page(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
116 """ 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
|
117 """ |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
118 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
|
119 self.assertEqual(f.status_code, 200) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
120 self.assertTrue(b'Roundup' in f.content) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
121 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
|
122 |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
123 def test_start_in_german(self): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
124 """ 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
|
125 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
|
126 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
|
127 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
128 use: |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
129 url parameter @language |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
130 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
|
131 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
|
132 """ |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
133 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
134 # test url parameter |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
135 f = requests.get(self.url_base() + "?@language=de") |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
136 self.assertEqual(f.status_code, 200) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
137 print(f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
138 self.assertTrue(b'Roundup' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
139 self.assertTrue(b'Aufgabenliste' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
140 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
|
141 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
142 # 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
|
143 bluemonster = f.cookies |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
144 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
|
145 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
|
146 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
147 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
|
148 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
|
149 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
|
150 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
151 # 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
|
152 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
|
153 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
|
154 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
155 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
|
156 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
|
157 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
|
158 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
|
159 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
|
160 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
161 # 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
|
162 alh = {"Accept-Language": |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
163 "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
|
164 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
|
165 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
|
166 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
167 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
|
168 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
|
169 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
|
170 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
171 def test_byte_Ranges(self): |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
172 """ Roundup only handles one simple two number range. |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
173 Range: 10-20 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
174 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
175 The following are not supported. |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
176 Range: 10-20, 25-30 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
177 Range: 10- |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
178 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
179 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
|
180 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
181 """ |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
182 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
183 # get whole file uncompressed. Extract content length and etag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
184 # for future use |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
185 f = requests.get(self.url_base() + "/@@file/style.css", |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
186 headers = {"Accept-Encoding": "identity"}) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
187 # store etag for condition range testing |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
188 etag = f.headers['etag'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
189 expected_length = f.headers['content-length'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
190 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
191 # 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
|
192 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
|
193 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
|
194 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
|
195 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
196 # 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
|
197 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
198 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
199 "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
|
200 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
201 # conditional request 11 bytes since etag matches 206 code |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
202 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
|
203 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
|
204 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
|
205 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
206 # 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
|
207 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
208 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
209 "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
|
210 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
211 # 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
|
212 hdrs['If-Range'] = etag[2:] # bad tag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
213 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
|
214 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
215 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
216 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
|
217 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
218 # 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
|
219 hdrs['Range'] = "0-99999" # too large |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
220 hdrs['If-Range'] = etag[2:] # bad tag |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
221 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
|
222 self.assertEqual(f.status_code, 200) |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
223 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
224 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
|
225 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
226 # 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
|
227 # 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
228 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
229 hdrs['If-Range'] = etag # any tag works |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
230 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
|
231 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
232 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
233 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
|
234 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
235 # 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
|
236 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
237 del(hdrs['If-Range']) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
238 print(hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
239 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
|
240 self.assertEqual(f.status_code, 416) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
241 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
242 "bytes */%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
|
243 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
244 def test_rest_preflight_collection(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
245 # no auth for rest csrf preflight |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
246 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
|
247 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
248 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
249 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
250 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
251 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
252 'Origin': "https://client.com"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
253 print(f.status_code) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
254 print(f.headers) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
255 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
256 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
257 self.assertEqual(f.status_code, 204) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
258 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
259 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
|
260 '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
|
261 'Allow': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
262 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
263 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
264 } |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
265 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
266 # 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
|
267 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
|
268 f.headers.items() if key in expected }, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
269 expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
270 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
271 # use invalid Origin |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
272 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
|
273 headers = {'content-type': "application/json", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
274 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
275 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
276 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
277 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
278 'Origin': "ZZZ"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
279 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
280 self.assertEqual(f.status_code, 400) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
281 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
282 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
|
283 'allowed to use Rest Interface." } }' |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
284 self.assertEqual(b2s(f.content), expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
285 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
286 |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
287 def test_rest_invalid_method_collection(self): |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
288 # use basic auth for rest endpoint |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
289 f = requests.put(self.url_base() + '/rest/data/user', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
290 auth=('admin', 'sekrit'), |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
291 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
292 'X-Requested-With': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
293 'Origin': "https://client.com"}) |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
294 print(f.status_code) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
295 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
296 print(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
297 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
298 self.assertEqual(f.status_code, 405) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
299 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
|
300 'Access-Control-Allow-Credentials': 'true', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
301 'Allow': 'DELETE, GET, OPTIONS, POST', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
302 } |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
303 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
304 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
305 # use dict comprehension to remove fields like date, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
306 # content-length etc. from f.headers. |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
307 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
|
308 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
309 content = json.loads(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
310 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
311 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
|
312 self.assertEqual(exp_content, content['error']['msg']) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
313 |
|
6386
2a2da73e1e26
Remove Connection: close header for 501 error handling rest
John Rouillard <rouilj@ieee.org>
parents:
6385
diff
changeset
|
314 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
|
315 """ 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
|
316 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
317 # 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
|
318 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
|
319 headers = {'content-type': ""}) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
320 # 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
|
321 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
|
322 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
323 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
|
324 # 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
|
325 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
|
326 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
327 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
328 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
329 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
330 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
|
331 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
332 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
333 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
334 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
335 '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
|
336 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
337 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
338 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
339 '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
|
340 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
341 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
342 # 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
|
343 # 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
|
344 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
|
345 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
346 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
|
347 # 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
|
348 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
|
349 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
350 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
351 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
352 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
353 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
|
354 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
355 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
356 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
357 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
358 '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
|
359 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
360 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
361 '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
|
362 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
363 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
364 # 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
|
365 # 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
|
366 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
|
367 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
368 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
|
369 # 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
|
370 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
|
371 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
372 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
373 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
374 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
375 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
|
376 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
377 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
378 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
379 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
380 '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
|
381 'Allow': 'OPTIONS, GET, POST', |
|
6526
3c8322e3fe25
Fix test and remove pdb invocation.
John Rouillard <rouilj@ieee.org>
parents:
6525
diff
changeset
|
382 '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
|
383 '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
|
384 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
385 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
386 # 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
|
387 # 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
|
388 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
|
389 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
390 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
391 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
|
392 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
393 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
|
394 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
395 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
396 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
397 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
398 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
|
399 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
400 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
401 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
402 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
403 '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
|
404 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
405 '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
|
406 '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
|
407 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
408 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
409 # 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
|
410 # 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
|
411 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
|
412 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
413 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
|
414 # 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
|
415 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
|
416 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
417 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
418 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
419 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
420 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
|
421 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
422 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
423 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
424 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
425 '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
|
426 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
427 '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
|
428 '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
|
429 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
430 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
431 # 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
|
432 # 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
|
433 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
|
434 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
435 ## test a read only property. |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
436 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
437 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
|
438 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
439 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
440 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
441 }) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
442 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
443 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
444 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
445 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
|
446 expected1 = dict(expected) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
447 expected1['Allow'] = 'OPTIONS, GET' |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
448 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
|
449 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
450 # 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
|
451 # 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
|
452 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
|
453 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
454 ## 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
|
455 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
|
456 auth=('admin', 'sekrit'), |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
457 headers = {'content-type': ""}) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
458 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
459 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
460 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
461 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
|
462 |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
463 def test_rest_login_rate_limit(self): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
464 """login rate limit applies to api endpoints. Only failure |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
465 logins count though. So log in 10 times in a row |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
466 to verify that valid username/passwords aren't limited. |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
467 """ |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
468 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
469 for i in range(10): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
470 # use basic auth for rest endpoint |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
471 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
472 f = requests.options(self.url_base() + '/rest/data', |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
473 auth=('admin', 'sekrit'), |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
474 headers = {'content-type': ""} |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
475 ) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
476 print(f.status_code) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
477 print(f.headers) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
478 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
479 self.assertEqual(f.status_code, 204) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
480 expected = { 'Access-Control-Allow-Origin': '*', |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
481 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
482 'Allow': 'OPTIONS, GET', |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
483 'Access-Control-Allow-Methods': 'HEAD, OPTIONS, GET, POST, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
484 'Access-Control-Allow-Credentials': 'true', |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
485 } |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
486 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
487 for i in range(10): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
488 # use basic auth for rest endpoint |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
489 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
490 f = requests.options(self.url_base() + '/rest/data', |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
491 auth=('admin', 'ekrit'), |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
492 headers = {'content-type': ""} |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
493 ) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
494 print(i, f.status_code) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
495 print(f.headers) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
496 print(f.text) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
497 |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
498 self.assertEqual(f.status_code, 401) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
499 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
500 def test_ims(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
501 ''' retreive the user_utils.js file with old and new |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
502 if-modified-since timestamps. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
503 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
504 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
|
505 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
506 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
|
507 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
508 '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
|
509 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
510 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
511 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
512 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
513 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
514 expected = { 'Content-Type': 'application/javascript', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
515 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
516 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
517 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
518 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
519 # 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
|
520 # etag etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
521 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
|
522 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
523 # now use today's date |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
524 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
|
525 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
|
526 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
527 '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
|
528 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
529 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
530 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
531 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
532 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
|
533 expected = { 'Vary': 'Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
534 'Content-Length': '0', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
535 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
536 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
537 # 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
|
538 # etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
539 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
|
540 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
541 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
542 def test_compression_gzipfile(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
543 '''Get the compressed dummy file''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
544 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
545 # 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
|
546 # 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
|
547 # that I get the compressed one. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
548 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
|
549 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
|
550 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
551 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
|
552 bytes_written = f.write(test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
553 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
554 self.assertEqual(bytes_written, 30) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
555 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
556 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
557 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
|
558 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
559 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
560 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
561 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
562 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
563 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
564 expected = { 'Content-Type': 'application/javascript', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
565 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
566 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
567 'Content-Length': '69', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
568 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
569 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
570 # 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
|
571 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
572 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
|
573 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
|
574 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
575 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
576 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
577 # 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
|
578 self.assertEqual(f.content, test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
579 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
580 '''# 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
|
581 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
582 # 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
|
583 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
|
584 headers = { 'Accept-Encoding': 'br, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
585 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
586 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
587 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
588 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
589 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
590 expected = { 'Content-Type': 'application/javascript', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
591 'Content-Encoding': 'br', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
592 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
593 'Content-Length': '960', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
594 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
595 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
596 # 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
|
597 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
598 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
|
599 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
|
600 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
601 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
602 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
603 from urllib3.response import BrotliDecoder |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
604 # 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
|
605 data = f.content |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
606 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
607 # I need to decode |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
608 data = brotli.decompress(f.content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
609 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
610 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
|
611 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
612 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
613 # 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
|
614 # 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
|
615 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
|
616 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
617 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
|
618 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
619 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
620 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
621 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
622 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
623 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
624 expected = { 'Content-Type': 'application/javascript', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
625 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
626 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
627 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
628 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
629 # 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
|
630 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
631 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
|
632 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
|
633 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
634 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
635 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
636 # 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
|
637 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
|
638 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
639 # cleanup |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
640 os.remove(gzfile) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
641 |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
642 def test_compression_none_etag(self): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
643 # use basic auth for rest endpoint |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
644 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
|
645 auth=('admin', 'sekrit'), |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
646 headers = {'content-type': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
647 'Accept-Encoding': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
648 'Accept': '*/*'}) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
649 print(f.status_code) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
650 print(f.headers) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
651 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
652 self.assertEqual(f.status_code, 200) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
653 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
654 'Access-Control-Allow-Credentials': 'true', |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
655 '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
|
656 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
657 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
658 content_str = '''{ "data": { |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
659 "id": "1", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
660 "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
|
661 "data": "admin" |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
662 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
663 }''' |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
664 content = json.loads(content_str) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
665 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
666 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
667 if (type("") == type(f.content)): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
668 json_dict = json.loads(f.content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
669 else: |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
670 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
|
671 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
672 # 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
|
673 del(json_dict['data']['@etag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
674 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
675 # 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
|
676 # just skip comparing it. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
677 del(json_dict['data']['type']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
678 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
679 self.assertDictEqual(json_dict, content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
680 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
681 # 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
|
682 print(f.headers['ETag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
683 with self.assertRaises(ValueError): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
684 f.headers['ETag'].index('-') |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
685 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
686 # 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
|
687 # content-length etc. from f.headers. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
688 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
|
689 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
690 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
691 def test_compression_gzip(self, method='gzip'): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
692 if method == 'gzip': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
693 decompressor = None |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
694 elif method == 'br': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
695 decompressor = brotli.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
696 elif method == 'zstd': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
697 decompressor = zstd.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
698 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
699 # use basic auth for rest endpoint |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
700 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
|
701 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
702 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
703 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
704 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
705 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
706 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
707 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
708 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
709 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
710 'Access-Control-Allow-Credentials': 'true', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
711 '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
|
712 'Content-Encoding': method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
713 'Vary': 'Origin, Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
714 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
715 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
716 content_str = '''{ "data": { |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
717 "id": "1", |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
718 "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
|
719 "data": "admin" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
720 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
721 }''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
722 content = json.loads(content_str) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
723 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
724 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
725 print(type(f.content)) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
726 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
727 try: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
728 if (type("") == type(f.content)): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
729 json_dict = json.loads(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
730 else: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
731 json_dict = json.loads(b2s(f.content)) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
732 except (ValueError, UnicodeDecodeError): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
733 # 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
|
734 # gzip gets decompressed automatically |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
735 # 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
|
736 # UnicodeDecodeError - raised by loads on compressed content |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
737 # python3 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
738 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
|
739 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
740 # 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
|
741 del(json_dict['data']['@etag']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
742 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
743 # 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
|
744 # just skip comparing it. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
745 del(json_dict['data']['type']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
746 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
747 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
748 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
749 # verify that ETag header ends with -<method> |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
750 try: |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
751 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
|
752 except AttributeError: |
|
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
753 # 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
|
754 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
|
755 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
756 # 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
|
757 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
758 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
|
759 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
760 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
761 # 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
|
762 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
|
763 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
764 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
765 'Accept-Encoding': '%s, foo'%method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
766 'Accept': '*/*', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
767 'Origin': 'ZZZZ'}) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
768 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
769 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
770 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
771 # NOTE: not compressed payload too small |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
772 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
|
773 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
774 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
775 'Access-Control-Allow-Origin': 'ZZZZ', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
776 '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
|
777 'Vary': 'Origin' |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
778 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
779 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
780 content = { "error": |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
781 { |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
782 "status": 400, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
783 "msg": "Invalid attribute foo" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
784 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
785 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
786 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
787 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
|
788 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
789 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
790 # 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
|
791 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
792 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
|
793 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
794 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
795 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
|
796 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
|
797 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
798 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
799 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
800 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
801 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
802 expected = { 'Content-Type': 'application/javascript', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
803 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
804 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
805 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
806 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
807 # 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
|
808 # 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
|
809 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
|
810 # 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
|
811 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
812 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
813 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
814 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
815 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
816 # check first few bytes. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
817 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
|
818 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
819 # 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
|
820 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
821 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
|
822 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
|
823 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
824 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
825 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
826 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
|
827 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
|
828 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
829 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
830 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
831 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
832 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
833 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
|
834 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
835 'Vary': 'Accept-Encoding', |
|
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 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
838 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
|
839 # 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
|
840 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
841 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
842 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
843 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
844 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
845 # check first few bytes. |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
846 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
|
847 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
848 # 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
|
849 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
850 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
|
851 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
|
852 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
853 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
854 @skip_brotli |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
855 def test_compression_br(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
856 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
|
857 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
858 @skip_zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
859 def test_compression_zstd(self): |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
860 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
|
861 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
862 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
|
863 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
|
864 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
|
865 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
866 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
|
867 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
|
868 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
869 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
|
870 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
|
871 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
872 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
|
873 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
|
874 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
|
875 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
876 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
|
877 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
|
878 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
879 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
|
880 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
|
881 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
882 def test_new_issue_with_file_upload(self): |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
883 # Set up session to manage cookies <insert blue monster here> |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
884 session = requests.Session() |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
885 session.headers.update({'Origin': 'http://localhost:9001'}) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
886 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
887 # login using form |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
888 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
889 "@action": "login"} |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
890 f = session.post(self.url_base()+'/', data=login) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
891 # 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
|
892 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
893 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
894 # 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
|
895 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
|
896 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
|
897 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
|
898 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
|
899 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
900 # 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
|
901 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
|
902 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
903 # 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
|
904 # 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
|
905 # 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
|
906 # search is working correctly. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
907 # use groupdict for python2. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
908 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
|
909 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
910 # 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
|
911 # seach for unique filename given to it. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
912 self.assertIn("test1.txt", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
913 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
914 # download file and verify content |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
915 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
|
916 self.assertEqual(f.text, file_content) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
917 print(f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
918 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
919 def test_new_file_via_rest(self): |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
920 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
921 session = requests.Session() |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
922 session.auth = ('admin', 'sekrit') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
923 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
924 url = self.url_base() + '/rest/data/' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
925 fname = 'a-bigger-testfile' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
926 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
|
927 c = dict (content = r'xyzzy') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
928 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
|
929 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
930 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
931 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
932 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
933 # was a 500 before fix for issue2551178 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
934 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
935 # 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
|
936 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
|
937 r.headers["location"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
938 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
939 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
|
940 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
941 # download file and verify content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
942 r = session.get(r.headers["location"] +'/content', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
943 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
944 'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
945 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
946 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
947 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
|
948 print(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
949 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
950 # 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
|
951 session.auth = None |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
952 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
|
953 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
954 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
955 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
956 self.assertEqual(r.status_code, 403) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
957 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
958 # get session variable from web form login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
959 # and use it to upload file |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
960 # login using form |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
961 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
962 "@action": "login"} |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
963 f = session.post(self.url_base()+'/', data=login, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
964 headers = {'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
965 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
966 # 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
|
967 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
968 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
969 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
|
970 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
971 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
972 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
973 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
974 print(r.status_code) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
975 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
976 |
