home · contact · privacy
Extend POST tests, and handling of missing form data.
[plomtask] / tests / processes.py
index e8967f70273e2345df966d599d50fdbeb4069e39..88a7a6c006912dddc3fcc86af4a1691a5982db6c 100644 (file)
@@ -1,6 +1,5 @@
 """Test Processes module."""
 from unittest import TestCase
 """Test Processes module."""
 from unittest import TestCase
-from urllib.parse import urlencode
 from tests.utils import TestCaseWithDB, TestCaseWithServer
 from plomtask.processes import Process
 from plomtask.exceptions import NotFoundException, BadFormatException
 from tests.utils import TestCaseWithDB, TestCaseWithServer
 from plomtask.processes import Process
 from plomtask.exceptions import NotFoundException, BadFormatException
@@ -68,26 +67,38 @@ class TestsWithServer(TestCaseWithServer):
 
     def test_do_POST_process(self) -> None:
         """Test POST /process and its effect on the database."""
 
     def test_do_POST_process(self) -> None:
         """Test POST /process and its effect on the database."""
-        def post_data_to_expect(form_data: dict[str, object],
-                                to_: str, expect: int) -> None:
-            encoded_form_data = urlencode(form_data).encode('utf-8')
-            headers = {'Content-Type': 'application/x-www-form-urlencoded',
-                       'Content-Length': str(len(encoded_form_data))}
-            self.conn.request('POST', to_,
-                              body=encoded_form_data, headers=headers)
-            self.assertEqual(self.conn.getresponse().status, expect)
         form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.0}
         form_data = {'title': 'foo', 'description': 'foo', 'effort': 1.0}
-        post_data_to_expect(form_data, '/process?id=FOO', 400)
+        self.post_to(form_data, '/process?id=FOO')
+        self.assertEqual(self.conn.getresponse().status, 400)
         form_data['effort'] = 'foo'
         form_data['effort'] = 'foo'
-        post_data_to_expect(form_data, '/process?id=', 400)
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
         form_data['effort'] = None
         form_data['effort'] = None
-        post_data_to_expect(form_data, '/process?id=', 400)
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
+        form_data = {}
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
+        form_data = {'title': '', 'description': ''}
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
+        form_data = {'title': '', 'effort': 1}
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
+        form_data = {'description': '', 'effort': 1}
+        self.post_to(form_data, '/process?id=')
+        self.assertEqual(self.conn.getresponse().status, 400)
         form_data = {'title': None, 'description': 1, 'effort': 1.0}
         form_data = {'title': None, 'description': 1, 'effort': 1.0}
-        post_data_to_expect(form_data, '/process?id=', 302)
+        self.post_to(form_data, '/process?id=')
+        self.check_redirect('/')
         retrieved = Process.by_id(self.db_conn, 1)
         self.assertEqual(retrieved.title.newest, 'None')
         self.assertEqual([p.id_ for p in Process.all(self.db_conn)],
                          [retrieved.id_])
         retrieved = Process.by_id(self.db_conn, 1)
         self.assertEqual(retrieved.title.newest, 'None')
         self.assertEqual([p.id_ for p in Process.all(self.db_conn)],
                          [retrieved.id_])
+        self.post_to(form_data, '/process?id=1')
+        self.check_redirect('/')
+        self.post_to(form_data, '/process')
+        self.check_redirect('/')
 
     def test_do_GET(self) -> None:
         """Test /process and /processes response codes."""
 
     def test_do_GET(self) -> None:
         """Test /process and /processes response codes."""