diff test/rest_common.py @ 5672:a7211712b110

Fix tests for latest REST changes
author Ralf Schlatterbeck <rsc@runtux.com>
date Mon, 25 Mar 2019 19:46:20 +0100
parents d26d2590cd8c
children 6b6bc8d31caf
line wrap: on
line diff
--- a/test/rest_common.py	Fri Mar 22 14:43:21 2019 +0100
+++ b/test/rest_common.py	Mon Mar 25 19:46:20 2019 +0100
@@ -24,6 +24,7 @@
 class TestCase():
 
     backend = None
+    url_pfx = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/'
 
     def setUp(self):
         self.dirname = '_test_rest'
@@ -71,6 +72,10 @@
         self.dummy_client = client.Client(self.instance, MockNull(), env, [], None)
         self.dummy_client.request.headers.get = self.get_header
         self.empty_form = cgi.FieldStorage()
+        self.terse_form = cgi.FieldStorage()
+        self.terse_form.list = [
+            cgi.MiniFieldStorage('@verbose', '0'),
+        ]
 
         self.server = RestfulInstance(self.dummy_client, self.db)
 
@@ -175,7 +180,7 @@
         # Retrieve all issue status=open
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('where_status', 'open')
+            cgi.MiniFieldStorage('status', 'open')
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -191,8 +196,8 @@
         # Retrieve all issue status=closed and priority=critical
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('where_status', 'closed'),
-            cgi.MiniFieldStorage('where_priority', 'critical')
+            cgi.MiniFieldStorage('status', 'closed'),
+            cgi.MiniFieldStorage('priority', 'critical')
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -208,8 +213,8 @@
         # Retrieve all issue status=closed and priority=normal,critical
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('where_status', 'closed'),
-            cgi.MiniFieldStorage('where_priority', 'normal,critical')
+            cgi.MiniFieldStorage('status', 'closed'),
+            cgi.MiniFieldStorage('priority', 'normal,critical')
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -259,8 +264,8 @@
         # Retrieve page 1
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('page_size', page_size),
-            cgi.MiniFieldStorage('page_index', 1)
+            cgi.MiniFieldStorage('@page_size', page_size),
+            cgi.MiniFieldStorage('@page_index', 1)
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -271,17 +276,17 @@
         self.assertTrue('next' in results['data']['@links'])
         self.assertFalse('prev' in results['data']['@links'])
         self.assertEqual(results['data']['@links']['self'][0]['uri'],
-                         "%s?page_index=1&page_size=%s"%(base_url,page_size))
+                         "%s?@page_index=1&@page_size=%s"%(base_url,page_size))
         self.assertEqual(results['data']['@links']['next'][0]['uri'],
-                         "%s?page_index=2&page_size=%s"%(base_url,page_size))
+                         "%s?@page_index=2&@page_size=%s"%(base_url,page_size))
 
         page_one_results = results # save this for later
 
         # Retrieve page 2
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('page_size', page_size),
-            cgi.MiniFieldStorage('page_index', 2)
+            cgi.MiniFieldStorage('@page_size', page_size),
+            cgi.MiniFieldStorage('@page_index', 2)
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -291,11 +296,11 @@
         self.assertTrue('next' in results['data']['@links'])
         self.assertTrue('prev' in results['data']['@links'])
         self.assertEqual(results['data']['@links']['self'][0]['uri'],
-                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=2&page_size=%s"%page_size)
+                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=2&@page_size=%s"%page_size)
         self.assertEqual(results['data']['@links']['next'][0]['uri'],
-                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=3&page_size=%s"%page_size)
+                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=3&@page_size=%s"%page_size)
         self.assertEqual(results['data']['@links']['prev'][0]['uri'],
-                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=1&page_size=%s"%page_size)
+                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=1&@page_size=%s"%page_size)
         self.assertEqual(results['data']['@links']['self'][0]['rel'],
                          'self')
         self.assertEqual(results['data']['@links']['next'][0]['rel'],
@@ -306,8 +311,8 @@
         # Retrieve page 3
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('page_size', page_size),
-            cgi.MiniFieldStorage('page_index', 3)
+            cgi.MiniFieldStorage('@page_size', page_size),
+            cgi.MiniFieldStorage('@page_index', 3)
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -317,15 +322,15 @@
         self.assertFalse('next' in results['data']['@links'])
         self.assertTrue('prev' in results['data']['@links'])
         self.assertEqual(results['data']['@links']['self'][0]['uri'],
-                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=3&page_size=%s"%page_size)
+                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=3&@page_size=%s"%page_size)
         self.assertEqual(results['data']['@links']['prev'][0]['uri'],
-                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=2&page_size=%s"%page_size)
+                         "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=2&@page_size=%s"%page_size)
 
         # Verify that page_index is optional
         # Should start at page 1
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('page_size', page_size),
+            cgi.MiniFieldStorage('@page_size', page_size),
         ]
         results = self.server.get_collection('issue', form)
         self.assertEqual(self.dummy_client.response_code, 200)
@@ -696,6 +701,17 @@
         results = self.server.get_element('file', fileid, self.empty_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
+        self.assertEqual(results['attributes']['content'],
+            {'link': 'http://tracker.example/cgi-bin/roundup.cgi/bugs/file1/'})
+
+        # File content is only shown with verbose=3
+        form = cgi.FieldStorage()
+        form.list = [
+            cgi.MiniFieldStorage('@verbose', '3')
+        ]
+        results = self.server.get_element('file', fileid, form)
+        results = results['data']
+        self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(results['attributes']['content'], 'hello\r\nthere')
 
     def testAuthDeniedPut(self):
@@ -772,7 +788,8 @@
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(len(results['attributes']['nosy']), 1)
-        self.assertListEqual(results['attributes']['nosy'], ['1'])
+        self.assertListEqual(results['attributes']['nosy'],
+            [{'id': '1', 'link': self.url_pfx + 'user/1'}])
 
         form = cgi.FieldStorage()
         etag = calculate_etag(self.db.issue.getnode(issue_id))
@@ -792,7 +809,7 @@
         self.assertEqual(self.dummy_client.response_code, 200)
 
         # verify the result
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(len(results['attributes']['nosy']), 0)
@@ -810,7 +827,7 @@
         # no etag
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'add'),
+            cgi.MiniFieldStorage('@op', 'add'),
             cgi.MiniFieldStorage('nosy', '2')
         ]
         results = self.server.patch_element('issue', issue_id, form)
@@ -819,7 +836,7 @@
         etag = calculate_etag(self.db.issue.getnode(issue_id))
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'add'),
+            cgi.MiniFieldStorage('@op', 'add'),
             cgi.MiniFieldStorage('nosy', '2'),
             cgi.MiniFieldStorage('@etag', etag)
         ]
@@ -827,7 +844,7 @@
         self.assertEqual(self.dummy_client.response_code, 200)
 
         # verify the result
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(len(results['attributes']['nosy']), 2)
@@ -844,13 +861,13 @@
         # no etag.
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'replace'),
+            cgi.MiniFieldStorage('@op', 'replace'),
             cgi.MiniFieldStorage('nosy', '2'),
             cgi.MiniFieldStorage('status', '3')
         ]
         results = self.server.patch_element('issue', issue_id, form)
         self.assertEqual(self.dummy_client.response_code, 412)
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(results['attributes']['status'], '1')
@@ -861,7 +878,7 @@
         etag = calculate_etag(self.db.issue.getnode(issue_id))
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'replace'),
+            cgi.MiniFieldStorage('@op', 'replace'),
             cgi.MiniFieldStorage('nosy', '2'),
             cgi.MiniFieldStorage('status', '3'),
             cgi.MiniFieldStorage('@etag', etag)
@@ -869,7 +886,7 @@
         results = self.server.patch_element('issue', issue_id, form)
         self.assertEqual(self.dummy_client.response_code, 200)
         # verify the result
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(results['attributes']['status'], '3')
@@ -887,13 +904,13 @@
         # no etag
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'remove'),
+            cgi.MiniFieldStorage('@op', 'remove'),
             cgi.MiniFieldStorage('nosy', ''),
             cgi.MiniFieldStorage('title', '')
         ]
         results = self.server.patch_element('issue', issue_id, form)
         self.assertEqual(self.dummy_client.response_code, 412)
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(results['attributes']['title'], 'foo')
@@ -904,7 +921,7 @@
         form = cgi.FieldStorage()
         etag = calculate_etag(self.db.issue.getnode(issue_id))
         form.list = [
-            cgi.MiniFieldStorage('op', 'remove'),
+            cgi.MiniFieldStorage('@op', 'remove'),
             cgi.MiniFieldStorage('nosy', ''),
             cgi.MiniFieldStorage('title', ''),
             cgi.MiniFieldStorage('@etag', etag)
@@ -913,7 +930,7 @@
         self.assertEqual(self.dummy_client.response_code, 200)
 
         # verify the result
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(results['attributes']['title'], None)
@@ -931,8 +948,8 @@
         # no etag
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'action'),
-            cgi.MiniFieldStorage('action_name', 'retire')
+            cgi.MiniFieldStorage('@op', 'action'),
+            cgi.MiniFieldStorage('@action_name', 'retire')
         ]
         results = self.server.patch_element('issue', issue_id, form)
         self.assertEqual(self.dummy_client.response_code, 412)
@@ -942,8 +959,8 @@
         form = cgi.FieldStorage()
         etag = calculate_etag(self.db.issue.getnode(issue_id))
         form.list = [
-            cgi.MiniFieldStorage('op', 'action'),
-            cgi.MiniFieldStorage('action_name', 'retire'),
+            cgi.MiniFieldStorage('@op', 'action'),
+            cgi.MiniFieldStorage('@action_name', 'retire'),
             cgi.MiniFieldStorage('@etag', etag)
         ]
         results = self.server.patch_element('issue', issue_id, form)
@@ -963,12 +980,12 @@
         # no etag
         form = cgi.FieldStorage()
         form.list = [
-            cgi.MiniFieldStorage('op', 'remove'),
+            cgi.MiniFieldStorage('@op', 'remove'),
             cgi.MiniFieldStorage('nosy', '1, 2'),
         ]
         results = self.server.patch_element('issue', issue_id, form)
         self.assertEqual(self.dummy_client.response_code, 412)
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(len(results['attributes']['nosy']), 3)
@@ -978,7 +995,7 @@
         form = cgi.FieldStorage()
         etag = calculate_etag(self.db.issue.getnode(issue_id))
         form.list = [
-            cgi.MiniFieldStorage('op', 'remove'),
+            cgi.MiniFieldStorage('@op', 'remove'),
             cgi.MiniFieldStorage('nosy', '1, 2'),
             cgi.MiniFieldStorage('@etag', etag)
         ]
@@ -986,7 +1003,7 @@
         self.assertEqual(self.dummy_client.response_code, 200)
 
         # verify the result
-        results = self.server.get_element('issue', issue_id, self.empty_form)
+        results = self.server.get_element('issue', issue_id, self.terse_form)
         results = results['data']
         self.assertEqual(self.dummy_client.response_code, 200)
         self.assertEqual(len(results['attributes']['nosy']), 1)

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