blob: 80495683ab3e6415a56136ea1ab43879340d8ab9 [file] [log] [blame]
Joe Gregorioba9ea7f2010-08-19 15:49:04 -04001#!/usr/bin/python2.4
2#
Joe Gregorio6d5e94f2010-08-25 23:49:30 -04003# Copyright 2010 Google Inc.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040016
Joe Gregorio6d5e94f2010-08-25 23:49:30 -040017"""JSON Model tests
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040018
Joe Gregorio6d5e94f2010-08-25 23:49:30 -040019Unit tests for the JSON model.
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040020"""
21
22__author__ = 'jcgregorio@google.com (Joe Gregorio)'
23
24from apiclient.discovery import JsonModel
25import os
26import unittest
ade@google.comd69e5e42010-08-31 15:28:20 +010027
28# Python 2.5 requires different modules
29try:
30 from urlparse import parse_qs
31except ImportError:
32 from cgi import parse_qs
33
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040034
35
36class Model(unittest.TestCase):
37 def test_json_no_body(self):
38 model = JsonModel()
39
40 headers = {}
ade@google.com850cf552010-08-20 23:24:56 +010041 path_params = {}
42 query_params = {}
43 body = None
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040044
ade@google.com850cf552010-08-20 23:24:56 +010045 headers, params, query, body = model.request(headers, path_params, query_params, body)
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040046
47 self.assertEqual(headers['accept'], 'application/json')
48 self.assertTrue('content-type' not in headers)
49 self.assertNotEqual(query, '')
50 self.assertEqual(body, None)
51
52 def test_json_body(self):
53 model = JsonModel()
54
55 headers = {}
ade@google.com850cf552010-08-20 23:24:56 +010056 path_params = {}
57 query_params = {}
58 body = {}
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040059
ade@google.com850cf552010-08-20 23:24:56 +010060 headers, params, query, body = model.request(headers, path_params, query_params, body)
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040061
62 self.assertEqual(headers['accept'], 'application/json')
63 self.assertEqual(headers['content-type'], 'application/json')
64 self.assertNotEqual(query, '')
65 self.assertEqual(body, '{"data": {}}')
66
Joe Gregoriofe695fb2010-08-30 12:04:04 -040067 def test_json_build_query(self):
68 model = JsonModel()
69
70 headers = {}
71 path_params = {}
72 query_params = {'foo': 1, 'bar': u'\N{COMET}'}
73 body = {}
74
75 headers, params, query, body = model.request(headers, path_params, query_params, body)
76
77 self.assertEqual(headers['accept'], 'application/json')
78 self.assertEqual(headers['content-type'], 'application/json')
79
ade@google.comd69e5e42010-08-31 15:28:20 +010080 query_dict = parse_qs(query)
Joe Gregoriofe695fb2010-08-30 12:04:04 -040081 self.assertEqual(query_dict['foo'], ['1'])
82 self.assertEqual(query_dict['bar'], [u'\N{COMET}'.encode('utf-8')])
83 self.assertEqual(body, '{"data": {}}')
84
85
Joe Gregorioba9ea7f2010-08-19 15:49:04 -040086if __name__ == '__main__':
87 unittest.main()