Mercurial > p > roundup > code
comparison test/test_liveserver.py @ 6648:53c9b62494e6
Add language test for cookie and accept-header; Test Range header
Added tests for start page translated to german using cookies retuened
when @language is used. Checked that @language=none unsets
roundup-langage cookie. Also test Accept-Language makes change to
german.
Add test for Range and If-Range headers. Roundup support for these is
simple:
Range: single range with both endpoints
If-Range: strong etag only
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 28 Apr 2022 18:14:22 -0400 |
| parents | 6ac3667706be |
| children | 5be4f9104cf7 |
comparison
equal
deleted
inserted
replaced
| 6647:42bf0a707763 | 6648:53c9b62494e6 |
|---|---|
| 107 self.assertTrue(b'Creator' in f.content) | 107 self.assertTrue(b'Creator' in f.content) |
| 108 | 108 |
| 109 def test_start_in_german(self): | 109 def test_start_in_german(self): |
| 110 """ simple test that verifies that the server can serve a start page | 110 """ simple test that verifies that the server can serve a start page |
| 111 and translate text to german. Use page title and remeber login | 111 and translate text to german. Use page title and remeber login |
| 112 checkbox label. | 112 checkbox label as translation test points.. |
| 113 | |
| 114 use: | |
| 115 url parameter @language | |
| 116 cookie set by param | |
| 117 set @language to none and verify language cookie is unset | |
| 113 """ | 118 """ |
| 119 | |
| 120 # test url parameter | |
| 114 f = requests.get(self.url_base() + "?@language=de") | 121 f = requests.get(self.url_base() + "?@language=de") |
| 115 self.assertEqual(f.status_code, 200) | 122 self.assertEqual(f.status_code, 200) |
| 116 print(f.content) | 123 print(f.content) |
| 117 self.assertTrue(b'Roundup' in f.content) | 124 self.assertTrue(b'Roundup' in f.content) |
| 118 self.assertTrue(b'Aufgabenliste' in f.content) | 125 self.assertTrue(b'Aufgabenliste' in f.content) |
| 119 self.assertTrue(b'dauerhaft anmelden?' in f.content) | 126 self.assertTrue(b'dauerhaft anmelden?' in f.content) |
| 120 | 127 |
| 128 # test language cookie - should still be german | |
| 129 bluemonster = f.cookies | |
| 130 f = requests.get(self.url_base(), cookies=bluemonster) | |
| 131 self.assertEqual(f.status_code, 200) | |
| 132 print(f.content) | |
| 133 self.assertTrue(b'Roundup' in f.content) | |
| 134 self.assertTrue(b'Aufgabenliste' in f.content) | |
| 135 self.assertTrue(b'dauerhaft anmelden?' in f.content) | |
| 136 | |
| 137 # unset language cookie, should be english | |
| 138 f = requests.get(self.url_base() + "?@language=none") | |
| 139 self.assertEqual(f.status_code, 200) | |
| 140 print(f.content) | |
| 141 self.assertTrue(b'Roundup' in f.content) | |
| 142 self.assertFalse(b'Aufgabenliste' in f.content) | |
| 143 self.assertFalse(b'dauerhaft anmelden?' in f.content) | |
| 144 with self.assertRaises(KeyError): | |
| 145 l = f.cookies['roundup_language'] | |
| 146 | |
| 147 # check with Accept-Language header | |
| 148 alh = {"Accept-Language": | |
| 149 "fr;q=0.2, en;q=0.8, de;q=0.9, *;q=0.5"} | |
| 150 f = requests.get(self.url_base(), headers=alh) | |
| 151 self.assertEqual(f.status_code, 200) | |
| 152 print(f.content) | |
| 153 self.assertTrue(b'Roundup' in f.content) | |
| 154 self.assertTrue(b'Aufgabenliste' in f.content) | |
| 155 self.assertTrue(b'dauerhaft anmelden?' in f.content) | |
| 156 | |
| 157 def test_byte_Ranges(self): | |
| 158 """ Roundup only handles one simple two number range. | |
| 159 Range: 10-20 | |
| 160 | |
| 161 The following are not supported. | |
| 162 Range: 10-20, 25-30 | |
| 163 Range: 10- | |
| 164 | |
| 165 Also If-Range only supports strong etags not dates or weak etags. | |
| 166 | |
| 167 """ | |
| 168 # check with Accept-Language header | |
| 169 hdrs = {"Range": "bytes=0-10"} | |
| 170 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) | |
| 171 self.assertEqual(f.status_code, 206) | |
| 172 self.assertEqual(f.content, b"/* main pag") | |
| 173 | |
| 174 etag = f.headers['etag'] | |
| 175 hdrs['If-Range'] = etag | |
| 176 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) | |
| 177 self.assertEqual(f.status_code, 206) | |
| 178 self.assertEqual(f.content, b"/* main pag") | |
| 179 | |
| 180 etag = f.headers['etag'] | |
| 181 hdrs['If-Range'] = etag[2:] # bad tag | |
| 182 f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs) | |
| 183 self.assertEqual(f.status_code, 200) | |
| 184 | |
| 121 def test_rest_invalid_method_collection(self): | 185 def test_rest_invalid_method_collection(self): |
| 122 # use basic auth for rest endpoint | 186 # use basic auth for rest endpoint |
| 123 f = requests.put(self.url_base() + '/rest/data/user', | 187 f = requests.put(self.url_base() + '/rest/data/user', |
| 124 auth=('admin', 'sekrit'), | 188 auth=('admin', 'sekrit'), |
| 125 headers = {'content-type': "", | 189 headers = {'content-type': "", |
