diff options
Diffstat (limited to 'pygithub3')
-rw-r--r-- | pygithub3/services/base.py | 27 | ||||
-rw-r--r-- | pygithub3/tests/services/test_core.py | 21 | ||||
-rw-r--r-- | pygithub3/tests/utils/services.py | 8 |
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()) |