Got test coverage to 97%. Added missing file.
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 539796f..c44f1e4 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -22,7 +22,7 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
-from apiclient.discovery import build
+from apiclient.discovery import build, key2param
 import httplib2
 import os
 import unittest
@@ -41,6 +41,12 @@
     return httplib2.Response(self.headers), self.data
 
 
+class Utilities(unittest.TestCase):
+  def test_key2param(self):
+    self.assertEqual('max_results', key2param('max-results'))
+    self.assertEqual('x007_bond', key2param('007-bond'))
+
+
 class Discovery(unittest.TestCase):
   def test_method_error_checking(self):
     self.http = HttpMock('buzz.json', {'status': '200'})
@@ -86,6 +92,23 @@
     self.assertTrue(getattr(buzz, 'comments'))
     self.assertTrue(getattr(buzz, 'related'))
 
+  def test_auth(self):
+    self.http = HttpMock('buzz.json', {'status': '200'})
+    buzz = build('buzz', 'v1', self.http)
+    auth = buzz.auth_discovery()
+    self.assertTrue('request' in auth)
+
+
+class Next(unittest.TestCase):
+  def test_next(self):
+    self.http = HttpMock('buzz.json', {'status': '200'})
+    buzz = build('buzz', 'v1', self.http)
+    activities = {'links':
+                  {'next':
+                   [{'href': 'http://www.googleapis.com/next-link'}]}}
+    request = buzz.activities().list_next(activities)
+    self.assertEqual(request.uri, 'http://www.googleapis.com/next-link')
+
 
 if __name__ == '__main__':
   unittest.main()
diff --git a/tests/test_json_model.py b/tests/test_json_model.py
index 8049568..79b63ab 100644
--- a/tests/test_json_model.py
+++ b/tests/test_json_model.py
@@ -21,9 +21,10 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
-from apiclient.discovery import JsonModel
+from apiclient.discovery import JsonModel, HttpError
 import os
 import unittest
+import httplib2
 
 # Python 2.5 requires different modules
 try:
@@ -82,6 +83,47 @@
     self.assertEqual(query_dict['bar'], [u'\N{COMET}'.encode('utf-8')])
     self.assertEqual(body, '{"data": {}}')
 
+  def test_user_agent(self):
+    model = JsonModel()
+
+    headers = {'user-agent': 'my-test-app/1.23.4'}
+    path_params = {}
+    query_params = {}
+    body = {}
+
+    headers, params, query, body = model.request(headers, path_params, query_params, body)
+
+    self.assertEqual(headers['user-agent'], 'my-test-app/1.23.4 google-api-python-client/1.0')
+
+  def test_bad_response(self):
+    model = JsonModel()
+    resp = httplib2.Response({'status': '401'})
+    resp.reason = 'Unauthorized'
+    content = '{"error": "not authorized"}'
+
+    try:
+      content = model.response(resp, content)
+      self.fail('Should have thrown an exception')
+    except HttpError, e:
+      self.assertTrue('Unauthorized' in str(e))
+
+    resp['content-type'] = 'application/json'
+
+    try:
+      content = model.response(resp, content)
+      self.fail('Should have thrown an exception')
+    except HttpError, e:
+      self.assertTrue('not authorized' in str(e))
+
+
+  def test_good_response(self):
+    model = JsonModel()
+    resp = httplib2.Response({'status': '200'})
+    resp.reason = 'OK'
+    content = '{"data": "is good"}'
+
+    content = model.response(resp, content)
+    self.assertEqual(content, 'is good')
 
 if __name__ == '__main__':
   unittest.main()