diff options
Diffstat (limited to 'github3/tests')
-rw-r--r-- | github3/tests/gist_tests.py | 98 | ||||
-rw-r--r-- | github3/tests/test_converters.py | 91 |
2 files changed, 91 insertions, 98 deletions
diff --git a/github3/tests/gist_tests.py b/github3/tests/gist_tests.py deleted file mode 100644 index 1218772..0000000 --- a/github3/tests/gist_tests.py +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- -# -# author: Antti Kaihola - -from datetime import datetime -import json -from mock import MagicMock, Mock, patch -import unittest - -import github3.api -import github3.handlers.gists -import github3.handlers.user -import github3.models - - -GIST_RESPONSE = '{"user":{"gravatar_id":"123","url":"https://api.github.com/users/testuser","avatar_url":"https://secure.gravatar.com/avatar/123?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-1.png","login":"testuser","id":12345},"url":"https://api.github.com/gists/791920","history":[{"version":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef","url":"https://api.github.com/gists/791920/deadbeefdeadbeefdeadbeefdeadbeefdeadbeef","user":{"gravatar_id":"123","url":"https://api.github.com/users/testuser","avatar_url":"https://secure.gravatar.com/avatar/123?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-1.png","login":"testuser","id":12345},"committed_at":"2011-11-09T08:50:53Z","change_status":{"deletions":0,"additions":1,"total":1}}],"description":"description","created_at":"2011-11-09T08:50:53Z","public":true,"comments":0,"updated_at":"2011-11-09T08:50:53Z","git_pull_url":"git://gist.github.com/791920.git","forks":[],"git_push_url":"git@gist.github.com:791920.git","html_url":"https://gist.github.com/791920","id":"791920","files":{"filename.ext":{"raw_url":"https://gist.github.com/raw/791920/badafadacadafadabadacadafadabadabadacada/filename.ext","type":"text/plain","content":"content","size":7,"language":null,"filename":"filename.ext"}}}' - - -class GistsTestCase(unittest.TestCase): - def test_create_gist(self): - """The HTTP request for creating a gist is correct""" - g = github3.api.Github() - g.session.auth = ('testuser', 'password') - u = github3.handlers.user.AuthUser(g) - gists = github3.handlers.gists.AuthGist(g) - OpenerDirector = MagicMock(name='OpenerDirector') - opener = OpenerDirector.return_value - response = opener.open.return_value - response.read.return_value = GIST_RESPONSE - response.code = 201 - - with patch('urllib2.OpenerDirector', OpenerDirector): - - gist = gists.create_gist( - 'description', - files={'filename.ext': {'content': 'content'}}) - - request = opener.open.call_args[0][0] - self.assertEqual(request.method, 'POST') - self.assertEqual(request.get_full_url(), - 'https://api.github.com/gists?per_page=100') - self.assertEqual(request.headers['Authorization'], - 'Basic dGVzdHVzZXI6cGFzc3dvcmQ=') - self.assertEqual(json.loads(request.data), - {u'description': u'description', - u'files': {u'filename.ext': {u'content': u'content'}}, - u'public': True}) - - -class GistHandlerTestCase(unittest.TestCase): - def test_response_conversion(self): - """A gist response is decoded correctly to a Gist object""" - g = github3.api.Github() - handler = github3.handlers.gists.Gist(g) - converter = handler._get_converter() - converter.inject(github3.models.Gist) - - gist = converter.loads(json.loads(GIST_RESPONSE)) - - self.assertEqual( - {filename: value.__dict__ - for filename, value in gist.files.iteritems()}, - {u'filename.ext': { - 'content': u'content', - 'filename': u'filename.ext', - 'raw_url': (u'https://gist.github.com/' - u'raw/791920/' - u'badafadacadafadabadacadafadabadabadacada/' - u'filename.ext'), - 'size': 7, - 'type': u'text/plain'}}) - self.assertEqual(gist.description, u'description') - self.assertEqual(gist.url, u'https://api.github.com/gists/791920') - self.assertEqual(gist.created_at, datetime(2011, 11, 9, 8, 50, 53)) - self.assertEqual(gist.html_url, u'https://gist.github.com/791920') - self.assertEqual(gist.public, True) - self.assertEqual( - gist.user.__dict__, - {'avatar_url': (u'https://secure.gravatar.com/avatar/123' - u'?d=https://a248.e.akamai.net/' - u'assets.github.com%2Fimages%2Fgravatars' - u'%2Fgravatar-1.png'), - 'id': 12345, - 'login': u'testuser', - 'url': u'https://api.github.com/users/testuser'}) - self.assertEqual(gist.git_pull_url, u'git://gist.github.com/791920.git') - self.assertEqual(gist.git_push_url, u'git@gist.github.com:791920.git') - self.assertEqual(gist.id, u'791920') - self.assertEqual(len(gist.history), 1) - h = gist.history[0] - self.assertEqual(h.change_status.__dict__, {'additions': 1, 'total': 1}) - self.assertEqual(h.committed_at, datetime(2011, 11, 9, 8, 50, 53)) - self.assertEqual(h.url, - u'https://api.github.com/gists/791920/' - u'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef') - self.assertEqual(h.user.__dict__, gist.user.__dict__) - self.assertEqual(h.version, u'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef') diff --git a/github3/tests/test_converters.py b/github3/tests/test_converters.py new file mode 100644 index 0000000..ca1c715 --- /dev/null +++ b/github3/tests/test_converters.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from github3.converters import * +from github3.models.base import BaseResource +from unittest import TestCase +from datetime import datetime + +API_STUB = { + 'test_str': 'string', 'test_int': 1, + 'test_date': '2008-01-14T04:33:35Z', 'test_bool': True, + 'map': {'test_str': 'string'}, + 'dict_map': { + 'map1': { + 'test_str': 'string', + 'test_int': 1 + }, + 'map2': { + 'test_str': 'string', + 'test_int': 2 + }, + }, + 'list_map': [ + {'test_str': 'string', 'test_int': 1}, + {'test_str': 'string', 'test_int': 2}, + ] +} + + +class Model(BaseResource): + + @classmethod + def idl(self): + return { + 'strs': ['test_str'], + 'ints': ['test_int'], + 'dates': ['test_date'], + 'bools': ['test_bool'], + 'maps': {'map': Model}, + 'collection_maps': { + 'dict_map': Model, + 'list_map': Model, + }, + } + + +class TestModelizer(TestCase): + + def setUp(self): + model = Model + self.modelizer = Modelizer() + self.modelizer.inject(model) + + def test_loads(self): + parsed_model = self.modelizer.loads(API_STUB) + self.assertEquals(parsed_model.test_str, 'string') + self.assertEquals(parsed_model.test_int, 1) + self.assertEquals( + parsed_model.test_date, + datetime(2008, 1, 14, 4, 33, 35)) + self.assertTrue(parsed_model.test_bool) + self.assertTrue(isinstance(parsed_model.map, Model)) + self.assertEquals(parsed_model.map.test_str, 'string') + self.assertTrue(isinstance(parsed_model.dict_map, dict)) + map1 = parsed_model.dict_map['map1'] + map2 = parsed_model.dict_map['map2'] + self.assertTrue(isinstance(map1, Model)) + self.assertTrue(isinstance(map2, Model)) + self.assertEquals(map1.test_str, 'string') + self.assertEquals(map1.test_int, 1) + self.assertEquals(map2.test_str, 'string') + self.assertEquals(map2.test_int, 2) + + list_map = parsed_model.list_map + self.assertTrue(isinstance(list_map, list)) + self.assertEquals(list_map[0].test_str, 'string') + self.assertEquals(list_map[0].test_int, 1) + self.assertEquals(list_map[1].test_str, 'string') + self.assertEquals(list_map[1].test_int, 2) + + +class TestRawlizer(TestCase): + + def setUp(self): + model = Model + self.rawlizer = Rawlizer() + + # Trivial, I know it + def test_loads(self): + raw = self.rawlizer.loads(API_STUB) + self.assertEquals(raw, API_STUB) |