aboutsummaryrefslogtreecommitdiffstats
path: root/github3/tests
diff options
context:
space:
mode:
Diffstat (limited to 'github3/tests')
-rw-r--r--github3/tests/fixtures.py40
-rw-r--r--github3/tests/get_handlers_test.py11
-rw-r--r--github3/tests/handler_test.py53
-rw-r--r--github3/tests/user_handler_test.py58
4 files changed, 157 insertions, 5 deletions
diff --git a/github3/tests/fixtures.py b/github3/tests/fixtures.py
new file mode 100644
index 0000000..aef4425
--- /dev/null
+++ b/github3/tests/fixtures.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+GET_USER = {
+ "login": "octocat",
+ "id": 1,
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
+ "url": "https://api.github.com/users/octocat",
+ "name": "monalisa octocat",
+ "company": "GitHub",
+ "blog": "https://github.com/blog",
+ "location": "San Francisco",
+ "email": "octocat@github.com",
+ "hireable": False,
+ "bio": "There once was...",
+ "public_repos": 2,
+ "public_gists": 1,
+ "followers": 20,
+ "following": 0,
+ "html_url": "https://github.com/octocat",
+ "created_at": "2008-01-14T04:33:35Z",
+ "type": "User"
+}
+
+GET_LINK = '<https://api.github.com/gists/public?page=2>; rel="next", <https://api.github.com/gists/public?page=5>; rel="last"'
+
+GET_FOLLOWERS = [
+ {
+ "login": "octocat",
+ "id": 1,
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
+ "url": "https://api.github.com/users/octocat"
+ },
+ {
+ "login": "octocat",
+ "id": 1,
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
+ "url": "https://api.github.com/users/octocat"
+ },
+]
diff --git a/github3/tests/get_handlers_test.py b/github3/tests/get_handlers_test.py
index 0ae1302..f07a7cf 100644
--- a/github3/tests/get_handlers_test.py
+++ b/github3/tests/get_handlers_test.py
@@ -16,13 +16,14 @@ class TestGetHandlers(TestCase):
anom_user = self.anom_gh.users
auth_user = self.auth_gh.users
- self.assertEquals(isinstance(anom_user, handlers.users.User), True)
- self.assertEquals(isinstance(auth_user, handlers.users.AuthUser), True)
+ self.assertIsInstance(anom_user, handlers.users.User)
+ self.assertEquals(anom_user.prefix, 'users')
+ self.assertIsInstance(auth_user, handlers.users.AuthUser)
+ self.assertEquals(auth_user.prefix, 'user')
def test_get_gists(self):
anom_gists = self.anom_gh.gists
auth_gists = self.auth_gh.gists
- self.assertEquals(isinstance(anom_gists, handlers.gists.Gist), True)
- self.assertEquals(
- isinstance(auth_gists, handlers.gists.AuthGist), True)
+ self.assertIsInstance(anom_gists, handlers.gists.Gist)
+ self.assertIsInstance(auth_gists, handlers.gists.AuthGist)
diff --git a/github3/tests/handler_test.py b/github3/tests/handler_test.py
new file mode 100644
index 0000000..51cd111
--- /dev/null
+++ b/github3/tests/handler_test.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from mock import Mock, patch
+from unittest import TestCase
+from github3 import api
+from github3.handlers.base import Handler
+from github3.exceptions import *
+from github3.converters import *
+import json
+import requests
+
+
+class TestHandler(TestCase):
+
+ def setUp(self):
+ self.gh = api.Github()
+ self.handler = Handler(self.gh)
+
+ def test_get_converter(self):
+ self.assertIsInstance(self.handler._get_converter(), Modelizer)
+ self.assertIsInstance(self.handler._get_converter(converter=Rawlizer),
+ Rawlizer)
+ self.handler.converter = Modelizer
+ self.assertIsInstance(self.handler._get_converter(), Modelizer)
+
+ def test_bool(self):
+ with patch.object(api.Github, 'head') as head:
+ response = head.return_value
+ response.status_code = 204
+ bool1 = self.handler._bool('test')
+ head.side_effect = NotFound()
+ bool2 = self.handler._bool('test')
+ head.assert_called_with('test')
+ self.assertTrue(bool1)
+ self.assertFalse(bool2)
+
+ with patch.object(api.Github, 'put') as put:
+ response = put.return_value
+ response.status_code = 204
+ booll = self.handler._put('test')
+ put.assert_called_with('test', method='put')
+ self.assertTrue(booll)
+
+ with patch.object(api.Github, 'delete') as delete:
+ response = delete.return_value
+ response.content = self.gh._parser.dumps({'data': 'test'})
+ response.status_code = 204
+ bool1 = self.handler._bool('test', method='delete')
+ bool2 = self.handler._bool('test', method='delete',
+ data={'some': 'data'})
+ self.assertTrue(bool1)
+ self.assertTrue(bool2)
diff --git a/github3/tests/user_handler_test.py b/github3/tests/user_handler_test.py
new file mode 100644
index 0000000..9eb3708
--- /dev/null
+++ b/github3/tests/user_handler_test.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from unittest import TestCase
+from mock import Mock, patch
+from github3 import api
+from fixtures import *
+from github3.models.user import User, AuthUser
+from github3.exceptions import *
+
+
+class TestUserHandler(TestCase):
+ """ Test public api about users """
+
+ def setUp(self):
+ self.gh = api.Github()
+ self.handler = self.gh.users
+
+ def test_set_username(self):
+ handler = self.handler.set_username('test')
+ self.assertEquals(id(handler), id(self.handler))
+ self.assertEquals(handler.username, 'test')
+ model_user = Mock()
+ model_user.login = 'test'
+ handler = self.handler.set_username(model_user)
+ self.assertEquals(handler.username, 'test')
+
+ def test_parse_user(self):
+ model_user = Mock()
+ model_user.login = 'test'
+ self.assertRaises(UserIsAnonymous, self.handler._parse_user, None)
+ user = self.handler._parse_user(model_user)
+ self.assertEquals(user, 'test')
+ user = self.handler._parse_user('test')
+ self.assertEquals(user, 'test')
+ self.assertRaises(UserIsAnonymous, self.handler._parse_user, Mock())
+ self.handler.set_username('octocat')
+ self.assertEquals('octocat', self.handler._parse_user(None))
+ self.assertEquals('octocat', self.handler._parse_user(Mock()))
+ self.assertEquals('test', self.handler._parse_user('test'))
+ self.assertEquals('test', self.handler._parse_user(model_user))
+
+ @patch.object(api.Github, 'get')
+ def test_get(self, get):
+ get.return_value = GET_USER
+ self.assertRaises(UserIsAnonymous, self.handler.get)
+ user = self.handler.get('octocat')
+ self.assertIsInstance(user, User)
+ get.assert_called_with('users/octocat')
+
+ @patch.object(api.Github, '_request')
+ def test_get_followers(self, request):
+ response = request.return_value
+ response.headers = {'link': GET_LINK} # 5 pages
+ response.content = self.gh._parser.dumps(GET_FOLLOWERS)
+ followers = list(self.handler.get_followers('test'))
+ self.assertIsInstance(followers[0], User)
+ pass