aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3')
-rw-r--r--pygithub3/services/base.py27
-rw-r--r--pygithub3/tests/services/test_core.py21
-rw-r--r--pygithub3/tests/utils/services.py8
3 files changed, 55 insertions, 1 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py
index 1f5d07e..21b22eb 100644
--- a/pygithub3/services/base.py
+++ b/pygithub3/services/base.py
@@ -87,3 +87,30 @@ class Service(object):
def _get_result(self, request, **kwargs):
return Result(self._client, request, **kwargs)
+
+
+class MimeTypeMixin(object):
+
+ VERSION = 'beta'
+
+ def __set_mimetype(self, mimetype):
+ self.mimetype = 'application/vnd.github.%s.%s+json' % (
+ self.VERSION, mimetype)
+
+ def set_raw_mimetype(self):
+ self.__set_mimetype('raw')
+
+ def set_text_mimetype(self):
+ self.__set_mimetype('text')
+
+ def set_html_mimetype(self):
+ self.__set_mimetype('html')
+
+ def set_full_mimetype(self):
+ self.__set_mimetype('full')
+
+ def _get_mimetype_as_header(self):
+ try:
+ return {'headers': {'Accept': self.mimetype}}
+ except AttributeError:
+ return {}
diff --git a/pygithub3/tests/services/test_core.py b/pygithub3/tests/services/test_core.py
index 007f94f..612b5ea 100644
--- a/pygithub3/tests/services/test_core.py
+++ b/pygithub3/tests/services/test_core.py
@@ -53,3 +53,24 @@ class TestServiceCalls(TestCase):
result = self.s._get_result(self.r, **self.args)
self.assertFalse(request_method.called)
self.assertIsInstance(result, Result)
+
+
+@patch.object(requests.sessions.Session, 'request')
+class TestMimeType(TestCase):
+
+ def setUp(self):
+ self.ms = DummyService()
+
+ def test_WITHOUT_mimetype(self, request_method):
+ request_method.return_value = mock_response()
+ self.ms.dummy_request()
+ request_method.assert_called_with('get', _('dummyrequest'), params={})
+
+ def test_WITH_mimetype(self, request_method):
+ request_method.return_value = mock_response()
+ self.ms.set_html_mimetype()
+ self.ms.dummy_request()
+ request_method.assert_called_with('get', _('dummyrequest'),
+ headers={'Accept': 'application/vnd.github.%s.html+json' %
+ MimeTypeMixin.VERSION},
+ params={})
diff --git a/pygithub3/tests/utils/services.py b/pygithub3/tests/utils/services.py
index f4765b5..8670f31 100644
--- a/pygithub3/tests/utils/services.py
+++ b/pygithub3/tests/utils/services.py
@@ -1,10 +1,16 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-from .base import mock_json
+from pygithub3.services.base import Service, MimeTypeMixin
+from .base import DummyRequest
base_url = 'https://api.github.com/'
def _(request):
return "%s%s" % (base_url, request)
+
+class DummyService(Service, MimeTypeMixin):
+
+ def dummy_request(self):
+ self._get(DummyRequest(), **self._get_mimetype_as_header())