diff test/rest_common.py @ 5742:97d7faebef0a

Test @apiver version parsing using bogus version. Test /rest, /rest/ for returned data, /rest/summary, /rest/summary/ for success and /rest/notthere, /rest/notthere/ for a 404.
author John Rouillard <rouilj@ieee.org>
date Wed, 29 May 2019 19:50:32 -0400
parents 9c2e51aae18a
children 60299cd36670
line wrap: on
line diff
--- a/test/rest_common.py	Wed May 29 17:42:03 2019 -0400
+++ b/test/rest_common.py	Wed May 29 19:50:32 2019 -0400
@@ -1245,14 +1245,34 @@
         self.assertEqual(status, 'ok')
 
         # TEST #9
-        # GET: test that version can be set with
-        #   ; version=z or application/vnd.x.y-vz+json
+        # GET: test that version can be set with accept:
+        #    ... ; version=z
+        # or
+        #    application/vnd.x.y-vz+json
+        # or
+        #    @apiver
         # simulate: /rest/data/issue
+        form = cgi.FieldStorage()
+        form.list = [
+            cgi.MiniFieldStorage('@apiver', 'L'),
+        ]
+        headers={"accept": "application/json; notversion=z" }
+        self.headers=headers
+        self.server.client.request.headers.get=self.get_header
+        results = self.server.dispatch('GET',
+                            "/rest/data/issue/1", form)
+        print(results)
+        json_dict = json.loads(b2s(results))
+        self.assertEqual(json_dict['error']['status'], 400)
+        self.assertEqual(json_dict['error']['msg'],
+              "Unrecognized version: L. See /rest without "
+              "specifying version for supported versions.")
+
         headers={"accept": "application/json; version=z" }
         self.headers=headers
         self.server.client.request.headers.get=self.get_header
         results = self.server.dispatch('GET',
-                            "/rest/data/issue/1", self.empty_form)
+                            "/rest/data/issue/1", form)
         print(results)
         json_dict = json.loads(b2s(results))
         self.assertEqual(json_dict['error']['status'], 400)
@@ -1288,6 +1308,65 @@
               "Unrecognized version: a. See /rest without "
               "specifying version for supported versions.")
 
+        # TEST #10
+        # check /rest and /rest/summary and /rest/notthere
+        expected_rest = {
+          "data": {
+              "supported_versions": [
+                  1
+              ],
+              "default_version": 1,
+              "links": [
+                  {
+                      "rel": "summary",
+                      "uri": "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/summary"
+                  },
+                  {
+                      "rel": "self",
+                      "uri": "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest"
+                  },
+                  {
+                      "rel": "data",
+                      "uri": "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data"
+                  }
+              ]
+          }
+        }
+
+        self.headers={}
+        results = self.server.dispatch('GET',
+                            "/rest", self.empty_form)
+        print(results)
+        self.assertEqual(self.server.client.response_code, 200)
+        results_dict = json.loads(b2s(results))
+        self.assertEqual(results_dict, expected_rest)
+
+
+        results = self.server.dispatch('GET',
+                            "/rest/", self.empty_form)
+        print(results)
+        self.assertEqual(self.server.client.response_code, 200)
+        results_dict = json.loads(b2s(results))
+        self.assertEqual(results_dict, expected_rest)
+
+        results = self.server.dispatch('GET',
+                            "/rest/summary", self.empty_form)
+        print(results)
+        self.assertEqual(self.server.client.response_code, 200)
+
+        results = self.server.dispatch('GET',
+                            "/rest/summary/", self.empty_form)
+        print(results)
+        self.assertEqual(self.server.client.response_code, 200)
+
+        results = self.server.dispatch('GET',
+                            "/rest/notthere", self.empty_form)
+        self.assertEqual(self.server.client.response_code, 404)
+
+        results = self.server.dispatch('GET',
+                            "/rest/notthere/", self.empty_form)
+        self.assertEqual(self.server.client.response_code, 404)
+
         del(self.headers)
 
     def testPostPOE(self):

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