web/test/unittest_views_json.py
changeset 10974 6557833657d6
parent 10700 a6d9d27f4253
equal deleted inserted replaced
10973:0939ad2edf63 10974:6557833657d6
    29         super(JsonViewsTC, self).setUp()
    29         super(JsonViewsTC, self).setUp()
    30         self.config.global_set_option('anonymize-jsonp-queries', self.anonymize)
    30         self.config.global_set_option('anonymize-jsonp-queries', self.anonymize)
    31 
    31 
    32     def test_json_rsetexport(self):
    32     def test_json_rsetexport(self):
    33         with self.admin_access.web_request() as req:
    33         with self.admin_access.web_request() as req:
    34             rset = req.execute('Any GN,COUNT(X) GROUPBY GN ORDERBY GN WHERE X in_group G, G name GN')
    34             rset = req.execute(
       
    35                 'Any GN,COUNT(X) GROUPBY GN ORDERBY GN WHERE X in_group G, G name GN')
    35             data = self.view('jsonexport', rset, req=req)
    36             data = self.view('jsonexport', rset, req=req)
    36             self.assertEqual(req.headers_out.getRawHeaders('content-type'), ['application/json'])
    37             self.assertEqual(req.headers_out.getRawHeaders('content-type'), ['application/json'])
    37             self.assertListEqual(data, [["guests", 1], ["managers", 1]])
    38             self.assertListEqual(data, [["guests", 1], ["managers", 1]])
    38 
    39 
    39     def test_json_rsetexport_empty_rset(self):
    40     def test_json_rsetexport_empty_rset(self):
    48             req.form.update({'callback': u'foo',
    49             req.form.update({'callback': u'foo',
    49                              'rql': u'Any GN,COUNT(X) GROUPBY GN ORDERBY GN '
    50                              'rql': u'Any GN,COUNT(X) GROUPBY GN ORDERBY GN '
    50                              'WHERE X in_group G, G name GN'})
    51                              'WHERE X in_group G, G name GN'})
    51             data = self.ctrl_publish(req, ctrl='jsonp')
    52             data = self.ctrl_publish(req, ctrl='jsonp')
    52             self.assertIsInstance(data, binary_type)
    53             self.assertIsInstance(data, binary_type)
    53             self.assertEqual(req.headers_out.getRawHeaders('content-type'), ['application/javascript'])
    54             self.assertEqual(req.headers_out.getRawHeaders('content-type'),
       
    55                              ['application/javascript'])
    54             # because jsonp anonymizes data, only 'guests' group should be found
    56             # because jsonp anonymizes data, only 'guests' group should be found
    55             self.assertEqual(data, b'foo(' + self.res_jsonp_data + b')')
    57             self.assertEqual(data, b'foo(' + self.res_jsonp_data + b')')
    56 
    58 
    57     def test_json_rsetexport_with_jsonp_and_bad_vid(self):
    59     def test_json_rsetexport_with_jsonp_and_bad_vid(self):
    58         with self.admin_access.web_request() as req:
    60         with self.admin_access.web_request() as req:
    59             req.form.update({'callback': 'foo',
    61             req.form.update({'callback': 'foo',
    60                              'vid': 'table', # <-- this parameter should be ignored by jsonp controller
    62                              # "vid" parameter should be ignored by jsonp controller
       
    63                              'vid': 'table',
    61                              'rql': 'Any GN,COUNT(X) GROUPBY GN ORDERBY GN '
    64                              'rql': 'Any GN,COUNT(X) GROUPBY GN ORDERBY GN '
    62                              'WHERE X in_group G, G name GN'})
    65                              'WHERE X in_group G, G name GN'})
    63             data = self.ctrl_publish(req, ctrl='jsonp')
    66             data = self.ctrl_publish(req, ctrl='jsonp')
    64             self.assertEqual(req.headers_out.getRawHeaders('content-type'), ['application/javascript'])
    67             self.assertEqual(req.headers_out.getRawHeaders('content-type'),
       
    68                              ['application/javascript'])
    65             # result should be plain json, not the table view
    69             # result should be plain json, not the table view
    66             self.assertEqual(data, b'foo(' + self.res_jsonp_data + b')')
    70             self.assertEqual(data, b'foo(' + self.res_jsonp_data + b')')
    67 
    71 
    68     def test_json_ersetexport(self):
    72     def test_json_ersetexport(self):
    69         with self.admin_access.web_request() as req:
    73         with self.admin_access.web_request() as req:
    81 
    85 
    82 class NotAnonymousJsonViewsTC(JsonViewsTC):
    86 class NotAnonymousJsonViewsTC(JsonViewsTC):
    83     anonymize = False
    87     anonymize = False
    84     res_jsonp_data = b'[["guests", 1], ["managers", 1]]'
    88     res_jsonp_data = b'[["guests", 1], ["managers", 1]]'
    85 
    89 
       
    90 
    86 if __name__ == '__main__':
    91 if __name__ == '__main__':
    87     from logilab.common.testlib import unittest_main
    92     from logilab.common.testlib import unittest_main
    88     unittest_main()
    93     unittest_main()