Mercurial > p > roundup > code
annotate test/test_liveserver.py @ 7695:2be7a8f66ea7
fix: windows install using pip mislocates share directory
The setup code that tries to make the share install path absolute
prependeds something like:
c:\program files\python_venv
to the paths. The equivalent on linux is recognized as an absolute
path. On windows this is treated oddly. This resulted in
the share files being placed in:
c:\program files\python_venv\Lib\site-packages\program files\python_venv\share
Roundup was unable to find the files there. On windows (where the
platform starts with 'win') don't make the path absolute. This puts
share in:
c:\program files\python_venv\Lib\share
and Roundup finds them.
The translations and templates are found by the roundup-server.
The docs are also installed under the share directory. The man pages
are not installed as windows doesn't have groff to format the source
documents.
This is the second fix from issues getting Roundup running on windows
discussed on mailing list by Simon Eigeldinger.
Thread starts with:
https://sourceforge.net/p/roundup/mailman/message/41557096/
subject: Installing Roundup on Windows 2023-10-05.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 05 Nov 2023 23:01:29 -0500 |
| parents | ec59729b3b7e |
| children | 1b5daee24dc7 |
| rev | line source |
|---|---|
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
1 import shutil, errno, pytest, json, gzip, mimetypes, os, re |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
2 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
3 from roundup import date as rdate |
| 6650 | 4 from roundup import i18n |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
5 from roundup import password |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
6 from roundup.anypy.strings import b2s |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
7 from roundup.cgi.wsgi_handler import RequestDispatcher |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
8 from .wsgi_liveserver import LiveServerTestCase |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
9 from . import db_test_base |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
10 from time import sleep |
| 7578 | 11 from .test_postgresql import skip_postgresql |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 |
|
6548
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
13 from wsgiref.validate import validator |
|
de5f5f9c02f2
Fix spurious content-ty on 304; xfail css Cache-Control
John Rouillard <rouilj@ieee.org>
parents:
6546
diff
changeset
|
14 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
15 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
16 import requests |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
17 skip_requests = lambda func, *args, **kwargs: func |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 except ImportError: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
19 from .pytest_patcher import mark_class |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
20 skip_requests = mark_class(pytest.mark.skip( |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
21 reason='Skipping liveserver tests: requests library not available')) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
22 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
23 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
24 import brotli |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
25 skip_brotli = lambda func, *args, **kwargs: func |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
26 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
27 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
28 skip_brotli = mark_class(pytest.mark.skip( |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
29 reason='Skipping brotli tests: brotli library not available')) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
30 brotli = None |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
31 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
32 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
33 import zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
34 skip_zstd = lambda func, *args, **kwargs: func |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
35 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
36 from .pytest_patcher import mark_class |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
37 skip_zstd = mark_class(pytest.mark.skip( |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
38 reason='Skipping zstd tests: zstd library not available')) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
39 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
40 import sys |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
41 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
42 _py3 = sys.version_info[0] > 2 |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
43 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
44 @skip_requests |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
45 class WsgiSetup(LiveServerTestCase): |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
46 # have chicken and egg issue here. Need to encode the base_url |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
47 # in the config file but we don't know it until after |
| 6650 | 48 # the server is started and has read the config.ini. |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
49 # so only allow one port number |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
50 port_range = (9001, 9001) # default is (8080, 8090) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 dirname = '_test_instance' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
53 backend = 'anydbm' |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
54 |
|
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
55 js_mime_type = mimetypes.guess_type("utils.js")[0] |
|
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
56 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
57 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
58 def setup_class(cls): |
| 6650 | 59 '''All tests in this class use the same roundup instance. |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
60 This instance persists across all tests. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
61 Create the tracker dir here so that it is ready for the |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
62 create_app() method to be called. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
63 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
64 # tests in this class. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
65 # set up and open a tracker |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
66 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
67 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
68 # open the database |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
69 cls.db = cls.instance.open('admin') |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
70 |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
71 # add a user without edit access for status. |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
72 cls.db.user.create(username="fred", roles='User', |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
73 password=password.Password('sekrit'), address='fred@example.com') |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
74 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
75 # set the url the test instance will run at. |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
76 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
77 # set up mailhost so errors get reported to debuging capture file |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
78 cls.db.config.MAILHOST = "localhost" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
79 cls.db.config.MAIL_HOST = "localhost" |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
80 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
81 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
82 # added to enable csrf forgeries/CORS to be tested |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
83 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
84 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
85 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
6755
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
86 |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
87 # disable web login rate limiting. The fast rate of tests |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
88 # causes them to trip the rate limit and fail. |
|
d308fb5ba9b0
Disable rate limit. Tests log in and trip the limit causeing failures.
John Rouillard <rouilj@ieee.org>
parents:
6754
diff
changeset
|
89 cls.db.config.WEB_LOGIN_ATTEMPTS_MIN = 0 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
90 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
91 # enable static precompressed files |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
92 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
93 |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
94 cls.db.config.save() |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
95 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
96 # add an issue to allow testing retrieval. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
97 # also used for text searching. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
98 result = cls.db.issue.create(title="foo bar RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
99 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
100 # add a message to allow retrieval |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
101 result = cls.db.msg.create(author = "1", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
102 content = "a message foo bar RESULT", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
103 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
104 messageid="test-msg-id") |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
105 cls.db.commit() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
106 cls.db.close() |
| 6650 | 107 |
| 108 # Force locale config to find locales in checkout not in | |
| 109 # installed directories | |
| 110 cls.backup_domain = i18n.DOMAIN | |
| 111 cls.backup_locale_dirs = i18n.LOCALE_DIRS | |
| 112 i18n.LOCALE_DIRS = ['locale'] | |
| 113 i18n.DOMAIN = '' | |
|
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 @classmethod |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
116 def teardown_class(cls): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
117 '''Close the database and delete the tracker directory |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
118 now that the app should be exiting. |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
119 ''' |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
120 if cls.db: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
121 cls.db.close() |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
122 try: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
123 shutil.rmtree(cls.dirname) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
124 except OSError as error: |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
125 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
| 6650 | 126 i18n.LOCALE_DIRS = cls.backup_locale_dirs |
| 127 i18n.DOMAIN = cls.backup_domain | |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
128 |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
129 def create_app(self): |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
130 '''The wsgi app to start - no feature_flags set.''' |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
131 |
|
6569
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
132 if _py3: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
133 return validator(RequestDispatcher(self.dirname)) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
134 else: |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
135 # wsgiref/validator.py InputWrapper::readline is broke and |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
136 # 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
|
137 return RequestDispatcher(self.dirname) |
|
3ae0c0fb2d08
Fix test_new_file_via_rest
John Rouillard <rouilj@ieee.org>
parents:
6568
diff
changeset
|
138 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
139 |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
140 class BaseTestCases(WsgiSetup): |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
141 """Class with all tests to run against wsgi server. Is reused when |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
142 wsgi server is started with various feature flags |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
143 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
144 |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
145 def test_start_page(self): |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
146 """ 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
|
147 """ |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
148 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
|
149 self.assertEqual(f.status_code, 200) |
|
6383
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
150 self.assertTrue(b'Roundup' in f.content) |
|
e9760702bf0c
Add live server test to suite.
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
151 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
|
152 |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
153 def test_start_in_german(self): |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
154 """ 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
|
155 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
|
156 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
|
157 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
158 use: |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
159 url parameter @language |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
160 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
|
161 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
|
162 """ |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
163 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
164 # test url parameter |
|
6640
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
165 f = requests.get(self.url_base() + "?@language=de") |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
166 self.assertEqual(f.status_code, 200) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
167 print(f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
168 self.assertTrue(b'Roundup' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
169 self.assertTrue(b'Aufgabenliste' in f.content) |
|
6ac3667706be
Test german translation of start page.
John Rouillard <rouilj@ieee.org>
parents:
6570
diff
changeset
|
170 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
|
171 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
172 # 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
|
173 bluemonster = f.cookies |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
174 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
|
175 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
|
176 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
177 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
|
178 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
|
179 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
|
180 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
181 # 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
|
182 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
|
183 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
|
184 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
185 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
|
186 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
|
187 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
|
188 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
|
189 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
|
190 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
191 # 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
|
192 alh = {"Accept-Language": |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
193 "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
|
194 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
|
195 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
|
196 print(f.content) |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
197 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
|
198 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
|
199 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
|
200 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
201 def test_byte_Ranges(self): |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
202 """ Roundup only handles one simple two number range, or |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
203 a single number to start from: |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
204 Range: 10-20 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
205 Range: 10- |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
206 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
207 The following is not supported. |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
208 Range: 10-20, 25-30 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
209 Range: -10 |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
210 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
211 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
|
212 |
|
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
213 """ |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
214 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
215 # get whole file uncompressed. Extract content length and etag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
216 # for future use |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
217 f = requests.get(self.url_base() + "/@@file/style.css", |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
218 headers = {"Accept-Encoding": "identity"}) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
219 # store etag for condition range testing |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
220 etag = f.headers['etag'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
221 expected_length = f.headers['content-length'] |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
222 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
223 # 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
|
224 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
|
225 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
|
226 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
|
227 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
228 # 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
|
229 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
230 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
231 "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
|
232 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
233 # get bytes 11-21 unconditionally (0 index really??) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
234 hdrs = {"Range": "bytes=10-20"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
235 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
236 self.assertEqual(f.status_code, 206) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
237 self.assertEqual(f.content, b"ge styles *") |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
238 # compression disabled for length < 100, so we can use 11 here |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
239 self.assertEqual(f.headers['content-length'], '11') |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
240 self.assertEqual(f.headers['content-range'], |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
241 "bytes 10-20/%s"%expected_length) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
242 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
243 # get all bytest starting from 11 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
244 hdrs = {"Range": "bytes=11-"} |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
245 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
246 self.assertEqual(f.status_code, 206) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
247 self.assertEqual(f.headers['content-range'], |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
248 "bytes 11-%s/%s"%(int(expected_length) - 1, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
249 expected_length)) |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
250 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
251 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
252 # conditional request 11 bytes since etag matches 206 code |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
253 hdrs = {"Range": "bytes=0-10"} |
|
6648
53c9b62494e6
Add language test for cookie and accept-header; Test Range header
John Rouillard <rouilj@ieee.org>
parents:
6640
diff
changeset
|
254 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
|
255 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
|
256 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
|
257 self.assertEqual(f.content, b"/* main pag") |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
258 # 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
|
259 self.assertEqual(f.headers['content-length'], '11') |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
260 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
261 "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
|
262 |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
263 # 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
|
264 hdrs['If-Range'] = etag[2:] # bad tag |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
265 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
|
266 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
267 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
268 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
|
269 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
270 # 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
|
271 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
|
272 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
|
273 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
|
274 self.assertEqual(f.status_code, 200) |
|
6655
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
275 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
276 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
|
277 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
278 # 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
|
279 # 200 code |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
280 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
281 hdrs['If-Range'] = etag # any tag works |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
282 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
|
283 self.assertEqual(f.status_code, 200) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
284 # not checking content length since it could be compressed |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
285 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
|
286 |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
287 # 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
|
288 hdrs['Range'] = "bytes=0-99999" # too large |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
289 del(hdrs['If-Range']) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
290 print(hdrs) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
291 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
|
292 self.assertEqual(f.status_code, 416) |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
293 self.assertEqual(f.headers['content-range'], |
|
a193653d6fa4
Test more range error cases.
John Rouillard <rouilj@ieee.org>
parents:
6651
diff
changeset
|
294 "bytes */%s"%expected_length) |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
295 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
296 # invalid range multiple ranges |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
297 hdrs['Range'] = "bytes=0-10, 20-45" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
298 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
299 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
300 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
301 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
302 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
303 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
304 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
305 # invalid range is single number not number followed by - |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
306 hdrs['Range'] = "bytes=1" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
307 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
308 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
309 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
310 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
311 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
312 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
313 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
314 # range is invalid first number not a number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
315 hdrs['Range'] = "bytes=boom-99" # bad first value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
316 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
317 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
318 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
319 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
320 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
321 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
322 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
323 # range is invalid last number not a number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
324 hdrs['Range'] = "bytes=1-boom" # bad last value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
325 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
326 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
327 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
328 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
329 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
330 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
331 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
332 # range is invalid first position empty |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
333 hdrs['Range'] = "bytes=-11" # missing first value |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
334 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
335 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
336 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
337 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
338 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
339 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
340 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
341 # range is invalid #2 < #1 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
342 hdrs['Range'] = "bytes=11-1" # inverted range |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
343 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
344 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
345 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
346 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
347 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
348 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
349 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
350 # range is invalid negative first number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
351 hdrs['Range'] = "bytes=-1-11" # negative first number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
352 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
353 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
354 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
355 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
356 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
357 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
358 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
359 # range is invalid negative second number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
360 hdrs['Range'] = "bytes=1--11" # negative second number |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
361 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
362 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
363 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
364 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
365 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
366 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
367 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
368 # range is unsupported units |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
369 hdrs['Range'] = "badunits=1-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
370 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
371 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
372 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
373 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
374 'content-range should not be present') |
|
6978
3c4047cdc77a
cange type or arg to assertIn from string to byte.
John Rouillard <rouilj@ieee.org>
parents:
6977
diff
changeset
|
375 self.assertIn(b"SHA:", f.content) # detect sha sum at end of file |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
376 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
377 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
378 # valid range, invalid file |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
379 hdrs['Range'] = "bytes=0-11" |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
380 print(hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
381 f = requests.get(self.url_base() + "/@@file/style_nope.css", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
382 headers=hdrs) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
383 self.assertEqual(f.status_code, 404) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
384 self.assertNotIn('content-range', f.headers, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
385 'content-range should not be present') |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
386 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
387 def test_rest_preflight_collection(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
388 # no auth for rest csrf preflight |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
389 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
|
390 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
391 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
392 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
393 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
394 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
395 'Origin': "https://client.com"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
396 print(f.status_code) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
397 print(f.headers) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
398 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
399 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
400 self.assertEqual(f.status_code, 204) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
401 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
402 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
|
403 '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
|
404 'Allow': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
405 'Access-Control-Allow-Methods': 'OPTIONS, GET, POST', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
406 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
407 } |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
408 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
409 # 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
|
410 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
|
411 f.headers.items() if key in expected }, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
412 expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
413 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
414 # use invalid Origin |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
415 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
|
416 headers = {'content-type': "application/json", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
417 'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
418 'Access-Control-Request-Headers': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
419 "x-requested-with", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
420 'Access-Control-Request-Method': "PUT", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
421 'Origin': "ZZZ"}) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
422 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
423 self.assertEqual(f.status_code, 400) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
424 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
425 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
|
426 'allowed to use Rest Interface." } }' |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
427 self.assertEqual(b2s(f.content), expected) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
428 |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
429 # Test when Origin is not sent. |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
430 f = requests.options(self.url_base() + '/rest/data/user', |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
431 headers = {'content-type': "application/json", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
432 'x-requested-with': "rest", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
433 'Access-Control-Request-Headers': |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
434 "x-requested-with", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
435 'Access-Control-Request-Method': "PUT",}) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
436 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
437 self.assertEqual(f.status_code, 400) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
438 |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
439 expected = ('{ "error": { "status": 400, "msg": "Required' |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
440 ' Header Missing" } }') |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
441 self.assertEqual(b2s(f.content), expected) |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
442 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
443 |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
444 def test_rest_invalid_method_collection(self): |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
445 # use basic auth for rest endpoint |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
446 f = requests.put(self.url_base() + '/rest/data/user', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
447 auth=('admin', 'sekrit'), |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
448 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
449 'X-Requested-With': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
450 'Origin': "https://client.com"}) |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
451 print(f.status_code) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
452 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
453 print(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
454 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
455 self.assertEqual(f.status_code, 405) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
456 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
|
457 'Access-Control-Allow-Credentials': 'true', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
458 'Allow': 'DELETE, GET, OPTIONS, POST', |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
459 } |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
460 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
461 print(f.headers) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
462 # use dict comprehension to remove fields like date, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
463 # content-length etc. from f.headers. |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
464 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
|
465 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
466 content = json.loads(f.content) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
467 |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
468 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
|
469 self.assertEqual(exp_content, content['error']['msg']) |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
470 |
|
6386
2a2da73e1e26
Remove Connection: close header for 501 error handling rest
John Rouillard <rouilj@ieee.org>
parents:
6385
diff
changeset
|
471 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
|
472 """ 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
|
473 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
474 # 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
|
475 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
|
476 headers = {'content-type': ""}) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
477 # 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
|
478 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
|
479 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
480 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
|
481 # 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
|
482 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
|
483 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
484 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
485 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
486 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
487 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
|
488 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
489 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
490 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
491 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
492 '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
|
493 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
494 'Access-Control-Allow-Credentials': 'true', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
495 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
496 '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
|
497 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
498 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
499 # 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
|
500 # 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
|
501 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
|
502 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
503 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
|
504 # 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
|
505 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
|
506 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
507 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
508 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
509 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
510 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
|
511 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
512 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
513 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
514 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
515 '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
|
516 'Allow': 'OPTIONS, GET', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
517 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
518 '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
|
519 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
520 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
521 # 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
|
522 # 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
|
523 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
|
524 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
525 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
|
526 # 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
|
527 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
|
528 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
529 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
530 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
531 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
532 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
|
533 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
534 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
535 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
536 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
537 '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
|
538 'Allow': 'OPTIONS, GET, POST', |
|
6526
3c8322e3fe25
Fix test and remove pdb invocation.
John Rouillard <rouilj@ieee.org>
parents:
6525
diff
changeset
|
539 '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
|
540 '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
|
541 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
542 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
543 # 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
|
544 # 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
|
545 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
|
546 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
547 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
548 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
|
549 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
550 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
|
551 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
552 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
553 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
554 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
555 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
|
556 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
557 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
558 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
559 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
560 '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
|
561 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
562 '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
|
563 '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
|
564 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
565 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
566 # 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
|
567 # 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
|
568 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
|
569 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
570 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
|
571 # 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
|
572 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
|
573 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
574 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
575 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
576 }) |
|
6384
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
577 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
|
578 print(f.headers) |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
579 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
580 self.assertEqual(f.status_code, 204) |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
581 expected = { 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
582 '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
|
583 'Allow': 'OPTIONS, GET, PUT, DELETE, PATCH', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
584 '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
|
585 '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
|
586 } |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
587 |
|
66a061e52435
Test options in rest interface against live server; rest doc update
John Rouillard <rouilj@ieee.org>
parents:
6383
diff
changeset
|
588 # 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
|
589 # 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
|
590 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
|
591 |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
592 ## test a read only property. |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
593 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
594 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
|
595 auth=('admin', 'sekrit'), |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
596 headers = {'content-type': "", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
597 'Origin': "http://localhost:9001", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
598 }) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
599 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
600 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
601 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
602 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
|
603 expected1 = dict(expected) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
604 expected1['Allow'] = 'OPTIONS, GET' |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
605 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
|
606 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
607 # 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
|
608 # 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
|
609 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
|
610 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
611 ## 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
|
612 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
|
613 auth=('admin', 'sekrit'), |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
614 headers = {'content-type': "", |
|
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
615 'Origin': "http://localhost:9001",}) |
|
6385
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
616 print(f.status_code) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
617 print(f.headers) |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
618 |
|
8c43129f29ca
Rename test: element => attribute; test readonly and missing attribute
John Rouillard <rouilj@ieee.org>
parents:
6384
diff
changeset
|
619 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
|
620 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
621 def test_ims(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
622 ''' 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
|
623 if-modified-since timestamps. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
624 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
625 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
|
626 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
627 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
|
628 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
629 '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
|
630 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
631 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
632 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
633 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
634 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
635 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
636 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
637 'Vary': 'Accept-Encoding', |
|
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 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
640 # 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
|
641 # etag etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
642 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
|
643 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
644 # now use today's date |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
645 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
|
646 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
|
647 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
648 '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
|
649 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
650 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
651 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
652 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
653 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
|
654 expected = { 'Vary': 'Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
655 'Content-Length': '0', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
656 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
657 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
658 # 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
|
659 # etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
660 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
|
661 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
662 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
663 def test_load_issue1(self): |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
664 for tail in [ |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
665 '/issue1', # normal url |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
666 '/issue00001', # leading 0's should be stripped from id |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
667 '/issue1>' # surprise this works too, should it?? |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
668 ]: |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
669 f = requests.get(self.url_base() + tail, |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
670 headers = { 'Accept-Encoding': 'gzip', |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
671 'Accept': '*/*'}) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
672 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
673 self.assertIn(b'foo bar RESULT', f.content) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
674 self.assertEqual(f.status_code, 200) |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
675 |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
676 def test_load_msg1(self): |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
677 # leading 0's should be stripped from id |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
678 f = requests.get(self.url_base() + '/msg0001', |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
679 headers = { 'Accept-Encoding': 'gzip', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
680 'Accept': '*/*'}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
681 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
682 self.assertIn(b'foo bar RESULT', f.content) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
683 self.assertEqual(f.status_code, 200) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
684 |
|
6749
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
685 def test_bad_path(self): |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
686 f = requests.get(self.url_base() + '/_bad>', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
687 headers = { 'Accept-Encoding': 'gzip, foo', |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
688 'Accept': '*/*'}) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
689 |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
690 # test that returned text is encoded. |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
691 self.assertEqual(f.content, b'Not found: _bad>') |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
692 self.assertEqual(f.status_code, 404) |
|
be3fd5e9577e
Add test for incorrect url.
John Rouillard <rouilj@ieee.org>
parents:
6747
diff
changeset
|
693 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
694 def test_compression_gzipfile(self): |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
695 '''Get the compressed dummy file''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
696 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
697 # 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
|
698 # 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
|
699 # that I get the compressed one. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
700 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
|
701 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
|
702 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
703 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
|
704 bytes_written = f.write(test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
705 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
706 self.assertEqual(bytes_written, 30) |
|
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 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
709 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
|
710 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
711 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
712 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
713 print(f.headers) |
|
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 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
716 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
717 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
718 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
719 'Content-Length': '69', |
|
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 # 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
|
723 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
724 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
|
725 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
|
726 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
727 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
728 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
729 # 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
|
730 self.assertEqual(f.content, test_text) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
731 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
732 '''# 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
|
733 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
734 # 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
|
735 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
|
736 headers = { 'Accept-Encoding': 'br, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
737 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
738 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
739 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
740 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
741 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
742 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
743 'Content-Encoding': 'br', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
744 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
745 'Content-Length': '960', |
|
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 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
748 # 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
|
749 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
750 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
|
751 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
|
752 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
753 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
754 try: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
755 from urllib3.response import BrotliDecoder |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
756 # 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
|
757 data = f.content |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
758 except ImportError: |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
759 # I need to decode |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
760 data = brotli.decompress(f.content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
761 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
762 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
|
763 ''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
764 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
765 # 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
|
766 # 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
|
767 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
|
768 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
769 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
|
770 headers = { 'Accept-Encoding': 'gzip, foo', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
771 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
772 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
773 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
774 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
775 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
776 expected = { 'Content-Type': self.js_mime_type, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
777 'Content-Encoding': 'gzip', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
778 'Vary': 'Accept-Encoding', |
|
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 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
781 # 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
|
782 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
783 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
|
784 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
|
785 expected) |
|
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 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
788 # 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
|
789 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
|
790 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
791 # cleanup |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
792 os.remove(gzfile) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
793 |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
794 def test_compression_none_etag(self): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
795 # use basic auth for rest endpoint |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
796 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
|
797 auth=('admin', 'sekrit'), |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
798 headers = {'content-type': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
799 'Accept-Encoding': "", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
800 'Accept': '*/*'}) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
801 print(f.status_code) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
802 print(f.headers) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
803 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
804 self.assertEqual(f.status_code, 200) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
805 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
806 'Access-Control-Allow-Credentials': 'true', |
|
6541
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
807 '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
|
808 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
809 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
810 content_str = '''{ "data": { |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
811 "id": "1", |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
812 "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
|
813 "data": "admin" |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
814 } |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
815 }''' |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
816 content = json.loads(content_str) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
817 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
818 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
819 if (type("") == type(f.content)): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
820 json_dict = json.loads(f.content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
821 else: |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
822 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
|
823 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
824 # 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
|
825 del(json_dict['data']['@etag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
826 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
827 # 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
|
828 # just skip comparing it. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
829 del(json_dict['data']['type']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
830 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
831 self.assertDictEqual(json_dict, content) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
832 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
833 # 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
|
834 print(f.headers['ETag']) |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
835 with self.assertRaises(ValueError): |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
836 f.headers['ETag'].index('-') |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
837 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
838 # 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
|
839 # content-length etc. from f.headers. |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
840 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
|
841 |
|
c8f3ec942e29
Test case where there is no content-encoding.
John Rouillard <rouilj@ieee.org>
parents:
6539
diff
changeset
|
842 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
843 def test_compression_gzip(self, method='gzip'): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
844 if method == 'gzip': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
845 decompressor = None |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
846 elif method == 'br': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
847 decompressor = brotli.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
848 elif method == 'zstd': |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
849 decompressor = zstd.decompress |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
850 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
851 # use basic auth for rest endpoint |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
852 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
|
853 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
854 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
855 'Accept-Encoding': '%s, foo'%method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
856 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
857 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
858 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
859 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
860 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
861 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
862 'Access-Control-Allow-Credentials': 'true', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
863 '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
|
864 'Content-Encoding': method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
865 'Vary': 'Origin, Accept-Encoding', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
866 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
867 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
868 content_str = '''{ "data": { |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
869 "id": "1", |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
870 "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
|
871 "data": "admin" |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
872 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
873 }''' |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
874 content = json.loads(content_str) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
875 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
876 print(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
877 print(type(f.content)) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
878 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
879 try: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
880 if (type("") == type(f.content)): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
881 json_dict = json.loads(f.content) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
882 else: |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
883 json_dict = json.loads(b2s(f.content)) |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
884 except (ValueError, UnicodeDecodeError): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
885 # 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
|
886 # gzip gets decompressed automatically |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
887 # 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
|
888 # UnicodeDecodeError - raised by loads on compressed content |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
889 # python3 |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
890 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
|
891 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
892 # 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
|
893 del(json_dict['data']['@etag']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
894 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
895 # 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
|
896 # just skip comparing it. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
897 del(json_dict['data']['type']) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
898 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
899 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
900 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
901 # verify that ETag header ends with -<method> |
|
6539
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
902 try: |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
903 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
|
904 except AttributeError: |
|
f8df7fed18f6
issue2551175 - Make ETag content-encoding aware.
John Rouillard <rouilj@ieee.org>
parents:
6526
diff
changeset
|
905 # 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
|
906 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
|
907 |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
908 # 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
|
909 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
910 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
|
911 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
912 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
913 # 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
|
914 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
|
915 auth=('admin', 'sekrit'), |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
916 headers = {'content-type': "", |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
917 'Accept-Encoding': '%s, foo'%method, |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
918 'Accept': '*/*', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
919 'Origin': 'https://client.com'}) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
920 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
921 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
922 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
923 # NOTE: not compressed payload too small |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
924 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
|
925 expected = { 'Content-Type': 'application/json', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
926 'Access-Control-Allow-Credentials': 'true', |
|
7150
72a54826ff4f
better rest Origin check; refactor CORS preflight code.
John Rouillard <rouilj@ieee.org>
parents:
6978
diff
changeset
|
927 'Access-Control-Allow-Origin': 'https://client.com', |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
928 '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
|
929 'Vary': 'Origin' |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
930 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
931 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
932 content = { "error": |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
933 { |
|
6525
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
934 "status": 400, |
|
c505c774a94d
Mutiple changes to REST code.
John Rouillard <rouilj@ieee.org>
parents:
6509
diff
changeset
|
935 "msg": "Invalid attribute foo" |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
936 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
937 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
938 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
939 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
|
940 self.assertDictEqual(json_dict, content) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
941 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
942 # 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
|
943 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
944 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
|
945 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
946 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
947 f = requests.get(self.url_base() + '/@@file/user_utils.js', |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
948 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
|
949 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
950 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
951 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
952 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
953 self.assertEqual(f.status_code, 200) |
|
6897
d9c9f5b81d4d
application/javascript is now text/javascript
John Rouillard <rouilj@ieee.org>
parents:
6813
diff
changeset
|
954 expected = { 'Content-Type': self.js_mime_type, |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
955 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
956 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
957 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
958 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
959 # 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
|
960 # 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
|
961 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
|
962 # 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
|
963 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
964 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
965 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
966 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
967 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
968 # check first few bytes. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
969 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
|
970 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
971 # 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
|
972 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
973 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
|
974 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
|
975 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
976 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
977 # test file x-fer |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
978 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
|
979 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
|
980 'Accept': '*/*'}) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
981 print(f.status_code) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
982 print(f.headers) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
983 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
984 self.assertEqual(f.status_code, 200) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
985 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
|
986 'Content-Encoding': method, |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
987 'Vary': 'Accept-Encoding', |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
988 } |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
989 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
990 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
|
991 # 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
|
992 data = f.content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
993 else: |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
994 # I need to decode |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
995 data = decompressor(f.content) |
|
6458
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
996 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
997 # check first few bytes. |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
998 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
|
999 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1000 # 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
|
1001 # content-length etc. from f.headers. |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1002 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
|
1003 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
|
1004 expected) |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1005 |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1006 @skip_brotli |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1007 def test_compression_br(self): |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1008 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
|
1009 |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1010 @skip_zstd |
|
8f1b91756457
issue2551147 - Enable compression of http responses in roundup.
John Rouillard <rouilj@ieee.org>
parents:
6386
diff
changeset
|
1011 def test_compression_zstd(self): |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1012 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
|
1013 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1014 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
|
1015 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
|
1016 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
|
1017 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1018 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
|
1019 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
|
1020 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1021 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
|
1022 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
|
1023 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1024 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
|
1025 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
|
1026 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
|
1027 'Accept': '*/*'}) |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1028 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
|
1029 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
|
1030 |
|
c58c7cd31243
issue2550991 - Some mechanism to set expiration header or max age for static resources
John Rouillard <rouilj@ieee.org>
parents:
6541
diff
changeset
|
1031 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
|
1032 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
|
1033 |
|
6813
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1034 def test_missing_session_key(self): |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1035 '''Test case where we have an outdated session cookie. Make |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1036 sure cookie is removed. |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1037 ''' |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1038 session = requests.Session() |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1039 session.headers.update({'Origin': 'http://localhost:9001'}) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1040 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1041 # login using form to get cookie |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1042 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1043 "@action": "login"} |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1044 f = session.post(self.url_base()+'/', data=login) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1045 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1046 # verify cookie is present and we are logged in |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1047 self.assertIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1048 self.assertIn('roundup_session_Roundupissuetracker', |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1049 session.cookies) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1050 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1051 f = session.get(self.url_base()+'/') |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1052 self.assertIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1053 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1054 for cookie in session.cookies: |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1055 if cookie.name == 'roundup_session_Roundupissuetracker': |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1056 cookie.value = 'bad_cookie_no_chocolate' |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1057 break |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1058 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1059 f = session.get(self.url_base()+'/') |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1060 |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1061 self.assertNotIn('<b>Hello, admin</b>', f.text) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1062 self.assertNotIn('roundup_session_Roundupissuetracker', session.cookies) |
|
6b636fb29740
Refactor client.py session cookie code. Remove session db access.
John Rouillard <rouilj@ieee.org>
parents:
6758
diff
changeset
|
1063 |
|
6750
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1064 def test_login_fail_then_succeed(self): |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1065 # Set up session to manage cookies <insert blue monster here> |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1066 session = requests.Session() |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1067 session.headers.update({'Origin': 'http://localhost:9001'}) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1068 |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1069 # login using form |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1070 login = {"__login_name": 'admin', '__login_password': 'bad_sekrit', |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1071 "@action": "login"} |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1072 f = session.post(self.url_base()+'/', data=login) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1073 # verify error message and no hello message in sidebar. |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1074 self.assertIn('class="error-message">Invalid login <br/ >', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1075 self.assertNotIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1076 |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1077 # login using form |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1078 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1079 "@action": "login"} |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1080 f = session.post(self.url_base()+'/', data=login) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1081 # look for change in text in sidebar post login |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1082 self.assertIn('<b>Hello, admin</b>', f.text) |
|
c63ddea96fcb
Test form login failure code path.
John Rouillard <rouilj@ieee.org>
parents:
6749
diff
changeset
|
1083 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1084 def test__generic_item_template_editok(self, user="admin"): |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1085 """Load /status1 object. Admin has edit rights so should see |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1086 a submit button. fred doesn't have edit rights |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1087 so should not have a submit button. |
|
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1088 """ |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1089 # Set up session to manage cookies <insert blue monster here> |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1090 session = requests.Session() |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1091 session.headers.update({'Origin': self.url_base()}) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1092 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1093 # login using form |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1094 login = {"__login_name": user, '__login_password': 'sekrit', |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1095 "@action": "login"} |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1096 f = session.post(self.url_base()+'/', data=login) |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1097 # look for change in text in sidebar post login |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1098 self.assertIn('Hello, %s'%user, f.text) |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1099 f = session.post(self.url_base()+'/status7', data=login) |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1100 print(f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1101 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1102 # status1's name is unread |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1103 self.assertIn(b'done-cbb', f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1104 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1105 if user == 'admin': |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1106 self.assertIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content) |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1107 else: |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1108 self.assertNotIn(b'<input name="submit_button" type="submit" value="Submit Changes">', f.content) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1109 |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1110 # logout |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1111 f = session.get(self.url_base()+'/?@action=logout') |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1112 self.assertIn(b"Remember me?", f.content) |
|
6756
1572568fe146
See if explicit logout prevents fred from having a submit button.
John Rouillard <rouilj@ieee.org>
parents:
6755
diff
changeset
|
1113 |
|
6758
6d4ac1ae2ae8
Mark test__generic_item_template_editbad as xfail
John Rouillard <rouilj@ieee.org>
parents:
6757
diff
changeset
|
1114 @pytest.mark.xfail |
|
6757
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1115 def test__generic_item_template_editbad(self, user="fred"): |
|
f6dd6cd920bc
Split edit ok and edit not ok test into two tests.
John Rouillard <rouilj@ieee.org>
parents:
6756
diff
changeset
|
1116 self.test__generic_item_template_editok(user=user) |
|
6754
bb04638dc78d
Test _generic.item.html to mke sure submit button displayed properly
John Rouillard <rouilj@ieee.org>
parents:
6750
diff
changeset
|
1117 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1118 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
|
1119 # 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
|
1120 session = requests.Session() |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1121 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
|
1122 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1123 # login using form |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1124 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1125 "@action": "login"} |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1126 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
|
1127 # 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
|
1128 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1129 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1130 # 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
|
1131 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
|
1132 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
|
1133 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
|
1134 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
|
1135 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1136 # 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
|
1137 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
|
1138 |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1139 # 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
|
1140 # 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
|
1141 # 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
|
1142 # search is working correctly. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1143 # use groupdict for python2. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1144 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
|
1145 |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1146 # 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
|
1147 # seach for unique filename given to it. |
|
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1148 self.assertIn("test1.txt", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1149 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1150 # download file and verify content |
|
6570
198875530c04
fix test_new_issue_with_file_upload
John Rouillard <rouilj@ieee.org>
parents:
6569
diff
changeset
|
1151 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
|
1152 self.assertEqual(f.text, file_content) |
|
7159
765222ef4cec
- issue2551257: add 'X-Content-Type-Options: nosniff' header for file download
John Rouillard <rouilj@ieee.org>
parents:
7151
diff
changeset
|
1153 self.assertEqual(f.headers["X-Content-Type-Options"], "nosniff") |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1154 print(f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1155 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1156 def test_new_file_via_rest(self): |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1157 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1158 session = requests.Session() |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1159 session.auth = ('admin', 'sekrit') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1160 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1161 url = self.url_base() + '/rest/data/' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1162 fname = 'a-bigger-testfile' |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1163 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
|
1164 c = dict (content = r'xyzzy') |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1165 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
|
1166 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1167 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1168 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1169 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1170 # was a 500 before fix for issue2551178 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1171 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1172 # 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
|
1173 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
|
1174 r.headers["location"]) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1175 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1176 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
|
1177 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1178 # download file and verify content |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1179 r = session.get(r.headers["location"] +'/content', |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1180 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1181 'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1182 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1183 json_dict = json.loads(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1184 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
|
1185 print(r.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1186 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1187 # 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
|
1188 session.auth = None |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1189 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
|
1190 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1191 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1192 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1193 self.assertEqual(r.status_code, 403) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1194 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1195 # get session variable from web form login |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1196 # and use it to upload file |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1197 # login using form |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1198 login = {"__login_name": 'admin', '__login_password': 'sekrit', |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1199 "@action": "login"} |
|
6693
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1200 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
|
1201 headers = {'Origin': "http://localhost:9001"} |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1202 ) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1203 # 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
|
1204 self.assertIn('Hello, admin', f.text) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1205 |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1206 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
|
1207 headers = {'x-requested-with': "rest", |
|
9a1f5e496e6c
issue2551203 - Add support for CORS preflight request
John Rouillard <rouilj@ieee.org>
parents:
6655
diff
changeset
|
1208 'Origin': "http://localhost:9001"} |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1209 ) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1210 self.assertEqual(r.status_code, 201) |
|
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1211 print(r.status_code) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1212 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1213 def test_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1214 f = requests.get(self.url_base() + "?@search_text=RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1215 self.assertIn("foo bar", f.text) |
|
6567
34199d2fef48
issue2551178 - Traceback in Apache WSGI (file upload)
John Rouillard <rouilj@ieee.org>
parents:
6548
diff
changeset
|
1216 |
|
6747
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1217 class TestFeatureFlagCacheTrackerOn(BaseTestCases, WsgiSetup): |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1218 """Class to run all test in BaseTestCases with the cache_tracker |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1219 feature flag enabled when starting the wsgi server |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1220 """ |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1221 def create_app(self): |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1222 '''The wsgi app to start with feature flag enabled''' |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1223 ff = { "cache_tracker": "" } |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1224 if _py3: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1225 return validator(RequestDispatcher(self.dirname, feature_flags=ff)) |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1226 else: |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1227 # wsgiref/validator.py InputWrapper::readline is broke and |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1228 # doesn't support the max bytes to read argument. |
|
d32d43e4a5ba
wsgi can cache tracker instance enabled by feature flag.
John Rouillard <rouilj@ieee.org>
parents:
6693
diff
changeset
|
1229 return RequestDispatcher(self.dirname, feature_flags=ff) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1230 |
|
7577
0abc225864d1
only run TestPostgresWsgiServer if ostgresl is available.
John Rouillard <rouilj@ieee.org>
parents:
7557
diff
changeset
|
1231 @skip_postgresql |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1232 class TestPostgresWsgiServer(BaseTestCases, WsgiSetup): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1233 """Class to run all test in BaseTestCases with the cache_tracker |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1234 feature flag enabled when starting the wsgi server |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1235 """ |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1236 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1237 backend = 'postgresql' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1238 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1239 @classmethod |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1240 def setup_class(cls): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1241 '''All tests in this class use the same roundup instance. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1242 This instance persists across all tests. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1243 Create the tracker dir here so that it is ready for the |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1244 create_app() method to be called. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1245 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1246 cribbed from WsgiSetup::setup_class |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1247 ''' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1248 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1249 # tests in this class. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1250 # set up and open a tracker |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1251 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1252 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1253 # open the database |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1254 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1255 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1256 # add a user without edit access for status. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1257 cls.db.user.create(username="fred", roles='User', |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1258 password=password.Password('sekrit'), address='fred@example.com') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1259 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1260 # set the url the test instance will run at. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1261 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1262 # set up mailhost so errors get reported to debuging capture file |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1263 cls.db.config.MAILHOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1264 cls.db.config.MAIL_HOST = "localhost" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1265 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1266 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1267 # added to enable csrf forgeries/CORS to be tested |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1268 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1269 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1270 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1271 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1272 cls.db.config.INDEXER = "native-fts" |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1273 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1274 # disable web login rate limiting. The fast rate of tests |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1275 # causes them to trip the rate limit and fail. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1276 cls.db.config.WEB_LOGIN_ATTEMPTS_MIN = 0 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1277 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1278 # enable static precompressed files |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1279 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1280 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1281 cls.db.config.save() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1282 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1283 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1284 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1285 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1286 # re-open the database to get the updated INDEXER |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1287 cls.db = cls.instance.open('admin') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1288 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1289 result = cls.db.issue.create(title="foo bar RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1290 |
|
6977
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1291 # add a message to allow retrieval |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1292 result = cls.db.msg.create(author = "1", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1293 content = "a message foo bar RESULT", |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1294 date=rdate.Date(), |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1295 messageid="test-msg-id") |
|
ff2c8b430738
flake8 - remove re.compile from method arg + test + doc
John Rouillard <rouilj@ieee.org>
parents:
6918
diff
changeset
|
1296 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1297 cls.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1298 cls.db.close() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1299 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1300 # Force locale config to find locales in checkout not in |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1301 # installed directories |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1302 cls.backup_domain = i18n.DOMAIN |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1303 cls.backup_locale_dirs = i18n.LOCALE_DIRS |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1304 i18n.LOCALE_DIRS = ['locale'] |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1305 i18n.DOMAIN = '' |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1306 |
|
6918
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1307 @classmethod |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1308 def tearDownClass(cls): |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1309 # cleanup |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1310 cls.instance.backend.db_nuke(cls.db.config) |
|
cb2ed1e8c852
Change method for settin indexer; have test_livetest for pg cleanup
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1311 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1312 def test_native_fts(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1313 self.assertIn("postgresql_fts", str(self.db.indexer)) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1314 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1315 # use a ts: search as well so it only works on postgres_fts indexer |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1316 f = requests.get(self.url_base() + "?@search_text=ts:RESULT") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6897
diff
changeset
|
1317 self.assertIn("foo bar RESULT", f.text) |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1318 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1319 class TestApiRateLogin(WsgiSetup): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1320 """Class to run test in BaseTestCases with the cache_tracker |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1321 feature flag enabled when starting the wsgi server |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1322 """ |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1323 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1324 backend = 'sqlite' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1325 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1326 @classmethod |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1327 def setup_class(cls): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1328 '''All tests in this class use the same roundup instance. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1329 This instance persists across all tests. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1330 Create the tracker dir here so that it is ready for the |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1331 create_app() method to be called. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1332 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1333 cribbed from WsgiSetup::setup_class |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1334 ''' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1335 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1336 # tests in this class. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1337 # set up and open a tracker |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1338 cls.instance = db_test_base.setupTracker(cls.dirname, cls.backend) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1339 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1340 # open the database |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1341 cls.db = cls.instance.open('admin') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1342 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1343 # add a user without edit access for status. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1344 cls.db.user.create(username="fred", roles='User', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1345 password=password.Password('sekrit'), address='fred@example.com') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1346 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1347 # set the url the test instance will run at. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1348 cls.db.config['TRACKER_WEB'] = "http://localhost:9001/" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1349 # set up mailhost so errors get reported to debuging capture file |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1350 cls.db.config.MAILHOST = "localhost" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1351 cls.db.config.MAIL_HOST = "localhost" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1352 cls.db.config.MAIL_DEBUG = "../_test_tracker_mail.log" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1353 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1354 # added to enable csrf forgeries/CORS to be tested |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1355 cls.db.config.WEB_CSRF_ENFORCE_HEADER_ORIGIN = "required" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1356 cls.db.config.WEB_ALLOWED_API_ORIGINS = "https://client.com" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1357 cls.db.config['WEB_CSRF_ENFORCE_HEADER_X-REQUESTED-WITH'] = "required" |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1358 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1359 # set login failure api limits |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1360 cls.db.config.WEB_API_FAILED_LOGIN_LIMIT = 4 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1361 cls.db.config.WEB_API_FAILED_LOGIN_INTERVAL_IN_SEC = 12 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1362 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1363 # enable static precompressed files |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1364 cls.db.config.WEB_USE_PRECOMPRESSED_FILES = 1 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1365 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1366 cls.db.config.save() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1367 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1368 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1369 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1370 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1371 # re-open the database to get the updated INDEXER |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1372 cls.db = cls.instance.open('admin') |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1373 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1374 result = cls.db.issue.create(title="foo bar RESULT") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1375 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1376 # add a message to allow retrieval |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1377 result = cls.db.msg.create(author = "1", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1378 content = "a message foo bar RESULT", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1379 date=rdate.Date(), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1380 messageid="test-msg-id") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1381 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1382 cls.db.commit() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1383 cls.db.close() |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1384 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1385 # Force locale config to find locales in checkout not in |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1386 # installed directories |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1387 cls.backup_domain = i18n.DOMAIN |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1388 cls.backup_locale_dirs = i18n.LOCALE_DIRS |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1389 i18n.LOCALE_DIRS = ['locale'] |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1390 i18n.DOMAIN = '' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1391 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1392 def test_rest_login_RateLimit(self): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1393 """login rate limit applies to api endpoints. Only failure |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1394 logins count though. So log in 10 times in a row |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1395 to verify that valid username/passwords aren't limited. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1396 """ |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1397 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1398 # verify that valid logins are not counted against the limit. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1399 for i in range(10): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1400 # use basic auth for rest endpoint |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1401 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1402 request_headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1403 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1404 f = requests.options(self.url_base() + '/rest/data', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1405 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1406 headers=request_headers |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1407 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1408 #print(f.status_code) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1409 #print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1410 #print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1411 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1412 self.assertEqual(f.status_code, 204) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1413 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1414 # Save time. check headers only for final response. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1415 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1416 'Access-Control-Allow-Origin': request_headers['Origin'], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1417 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With, X-HTTP-Method-Override', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1418 'Allow': 'OPTIONS, GET', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1419 'Access-Control-Allow-Methods': 'OPTIONS, GET', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1420 'Access-Control-Allow-Credentials': 'true', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1421 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1422 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1423 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1424 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1425 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1426 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1427 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1428 # first 3 logins should report 401 then the rest should report |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1429 # 429 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1430 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1431 'Content-Type': 'text/plain' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1432 } |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1433 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1434 for i in range(10): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1435 # use basic auth for rest endpoint |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1436 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1437 f = requests.options(self.url_base() + '/rest/data', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1438 auth=('admin', 'ekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1439 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1440 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1441 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1442 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1443 if (i < 4): # assuming limit is 4. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1444 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1445 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1446 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1447 self.assertEqual(f.status_code, 401) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1448 else: |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1449 self.assertEqual(f.status_code, 429) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1450 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1451 headers_expected = { 'Content-Type': 'text/plain', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1452 'X-RateLimit-Limit': '4', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1453 'X-RateLimit-Limit-Period': '12', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1454 'X-RateLimit-Remaining': '0', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1455 'Retry-After': '3', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1456 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1457 ('X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1458 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1459 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1460 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1461 'Retry-After'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1462 'Content-Length': '50'} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1463 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1464 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1465 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1466 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1467 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1468 self.assertAlmostEqual(float(f.headers['X-RateLimit-Reset']), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1469 10.0, delta=3, |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1470 msg="limit reset not within 3 seconds of 10") |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1471 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1472 # test lockout this is a valid login but should be rejected |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1473 # with 429. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1474 f = requests.options(self.url_base() + '/rest/data', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1475 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1476 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1477 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1478 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1479 self.assertEqual(f.status_code, 429) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1480 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1481 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1482 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1483 headers_expected[header]) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1484 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1485 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1486 sleep(4) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1487 # slept long enough to get a login slot. Should work with |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1488 # 200 return code. |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1489 f = requests.get(self.url_base() + '/rest/data', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1490 auth=('admin', 'sekrit'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1491 headers = {'content-type': "", |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1492 'Origin': "http://localhost:9001",} |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1493 ) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1494 self.assertEqual(f.status_code, 200) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1495 print(i, f.status_code) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1496 print(f.headers) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1497 print(f.text) |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1498 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1499 headers_expected = { |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1500 'Content-Type': 'application/json', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1501 'Vary': 'Origin, Accept-Encoding', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1502 'Access-Control-Expose-Headers': |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1503 ( 'X-RateLimit-Limit, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1504 'X-RateLimit-Remaining, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1505 'X-RateLimit-Reset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1506 'X-RateLimit-Limit-Period, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1507 'Retry-After, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1508 'Sunset, ' |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1509 'Allow'), |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1510 'Access-Control-Allow-Origin': 'http://localhost:9001', |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1511 'Access-Control-Allow-Credentials': 'true', |
|
7557
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1512 'Allow': 'OPTIONS, GET, POST, PUT, DELETE, PATCH' |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1513 } |
|
7556
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1514 |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1515 for header in headers_expected.keys(): |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1516 self.assertEqual(f.headers[header], |
|
273c8c2b5042
fix(api): - issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
John Rouillard <rouilj@ieee.org>
parents:
7159
diff
changeset
|
1517 headers_expected[header]) |
|
7557
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1518 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1519 expected_data = { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1520 "status": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1521 "link": "http://localhost:9001/rest/data/status" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1522 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1523 "keyword": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1524 "link": "http://localhost:9001/rest/data/keyword" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1525 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1526 "priority": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1527 "link": "http://localhost:9001/rest/data/priority" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1528 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1529 "user": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1530 "link": "http://localhost:9001/rest/data/user" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1531 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1532 "file": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1533 "link": "http://localhost:9001/rest/data/file" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1534 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1535 "msg": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1536 "link": "http://localhost:9001/rest/data/msg" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1537 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1538 "query": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1539 "link": "http://localhost:9001/rest/data/query" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1540 }, |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1541 "issue": { |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1542 "link": "http://localhost:9001/rest/data/issue" |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1543 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1544 } |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1545 |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1546 json_dict = json.loads(f.text) |
|
7b481ec7f169
test: fix test_rest_login_RateLimit CI has different char numbers
John Rouillard <rouilj@ieee.org>
parents:
7556
diff
changeset
|
1547 self.assertEqual(json_dict['data'], expected_data) |
