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': "",

Roundup Issue Tracker: http://roundup-tracker.org/