diff 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
line wrap: on
line diff
--- a/test/test_liveserver.py	Thu Apr 28 18:10:10 2022 -0400
+++ b/test/test_liveserver.py	Thu Apr 28 18:14:22 2022 -0400
@@ -109,8 +109,15 @@
     def test_start_in_german(self):
         """ simple test that verifies that the server can serve a start page
             and translate text to german. Use page title and remeber login
-            checkbox label.
+            checkbox label as translation test points..
+
+            use:
+               url parameter @language
+               cookie set by param
+               set @language to none and verify language cookie is unset
         """
+
+        # test url parameter
         f = requests.get(self.url_base() + "?@language=de")
         self.assertEqual(f.status_code, 200)
         print(f.content)
@@ -118,6 +125,63 @@
         self.assertTrue(b'Aufgabenliste' in f.content)
         self.assertTrue(b'dauerhaft anmelden?' in f.content)
 
+        # test language cookie - should still be german
+        bluemonster = f.cookies
+        f = requests.get(self.url_base(), cookies=bluemonster)
+        self.assertEqual(f.status_code, 200)
+        print(f.content)
+        self.assertTrue(b'Roundup' in f.content)
+        self.assertTrue(b'Aufgabenliste' in f.content)
+        self.assertTrue(b'dauerhaft anmelden?' in f.content)
+
+        # unset language cookie, should be english
+        f = requests.get(self.url_base() + "?@language=none")
+        self.assertEqual(f.status_code, 200)
+        print(f.content)
+        self.assertTrue(b'Roundup' in f.content)
+        self.assertFalse(b'Aufgabenliste' in f.content)
+        self.assertFalse(b'dauerhaft anmelden?' in f.content)
+        with self.assertRaises(KeyError):
+            l = f.cookies['roundup_language']
+
+        # check with Accept-Language header
+        alh = {"Accept-Language":
+               "fr;q=0.2, en;q=0.8, de;q=0.9, *;q=0.5"}
+        f = requests.get(self.url_base(), headers=alh)
+        self.assertEqual(f.status_code, 200)
+        print(f.content)
+        self.assertTrue(b'Roundup' in f.content)
+        self.assertTrue(b'Aufgabenliste' in f.content)
+        self.assertTrue(b'dauerhaft anmelden?' in f.content)
+
+    def test_byte_Ranges(self):
+        """ Roundup only handles one simple two number range.
+            Range: 10-20
+
+            The following are not supported.
+            Range: 10-20, 25-30
+            Range: 10-
+
+            Also If-Range only supports strong etags not dates or weak etags.
+
+        """
+        # check with Accept-Language header
+        hdrs = {"Range": "bytes=0-10"}
+        f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs)
+        self.assertEqual(f.status_code, 206)
+        self.assertEqual(f.content, b"/* main pag")
+
+        etag = f.headers['etag']
+        hdrs['If-Range'] = etag
+        f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs)
+        self.assertEqual(f.status_code, 206)
+        self.assertEqual(f.content, b"/* main pag")
+
+        etag = f.headers['etag']
+        hdrs['If-Range'] = etag[2:]  # bad tag
+        f = requests.get(self.url_base() + "/@@file/style.css", headers=hdrs)
+        self.assertEqual(f.status_code, 200)
+        
     def test_rest_invalid_method_collection(self):
         # use basic auth for rest endpoint
         f = requests.put(self.url_base() + '/rest/data/user',

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