Skip to content

Commit 7d1c429

Browse files
committed
Repos.keys service done
1 parent 36381d4 commit 7d1c429

File tree

3 files changed

+110
-1
lines changed

3 files changed

+110
-1
lines changed

pygithub3/requests/repos/keys.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
from . import Request
5+
6+
from pygithub3.resources.users import Key
7+
8+
9+
class List(Request):
10+
11+
uri = '/repos/{user}/{repo}/keys'
12+
resource = Key
13+
14+
15+
class Get(Request):
16+
17+
uri = '/repos/{user}/{repo}/keys/{id}'
18+
resource = Key
19+
20+
21+
class Create(Request):
22+
23+
uri = 'repos/{user}/{repo}/keys'
24+
resource = Key
25+
body_schema = {
26+
'schema': ('title', 'key'),
27+
'required': ('title', 'key')
28+
}
29+
30+
31+
class Update(Request):
32+
33+
uri = 'repos/{user}/{repo}/keys/{id}'
34+
resource = Key
35+
body_schema = {
36+
'schema': ('title', 'key'),
37+
'required': (),
38+
}
39+
40+
41+
class Delete(Request):
42+
43+
uri = 'repos/{user}/{repo}/keys/{id}'
44+
resource = Key

pygithub3/services/repos.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@
66
from .base import Service, MimeTypeMixin
77

88

9+
class Keys(Service):
10+
11+
def list(self, user=None, repo=None):
12+
request = self.make_request('repos.keys.list', user=user, repo=repo)
13+
return self._get_result(request)
14+
15+
def get(self, id, user=None, repo=None):
16+
request = self.make_request('repos.keys.get',
17+
id=id, user=user, repo=repo)
18+
return self._get(request)
19+
20+
def create(self, data, user=None, repo=None):
21+
request = self.make_request('repos.keys.create',
22+
body=data, user=user, repo=repo)
23+
return self._post(request)
24+
25+
def update(self, id, data, user=None, repo=None):
26+
request = self.make_request('repos.keys.update',
27+
id=id, body=data, user=user, repo=repo)
28+
return self._patch(request)
29+
30+
def delete(self, id, user=None, repo=None):
31+
request = self.make_request('repos.keys.delete',
32+
id=id, user=user, repo=repo)
33+
self._delete(request)
34+
35+
936
class Forks(Service):
1037

1138
def list(self, user=None, repo=None, sort='newest'):
@@ -124,6 +151,7 @@ def __init__(self, **config):
124151
self.commits = Commits(**config)
125152
self.downloads = Downloads(**config)
126153
self.forks = Forks(**config)
154+
self.keys = Keys(**config)
127155
super(Repo, self).__init__(**config)
128156

129157
def list(self, user=None, type='all'):

pygithub3/tests/services/test_repos.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from mock import patch, Mock
88

99
from pygithub3.services.repos import (Repo, Collaborator, Commits, Downloads,
10-
Forks)
10+
Forks, Keys)
1111
from pygithub3.resources.base import json
1212
from pygithub3.tests.utils.base import (mock_response, mock_response_result,
1313
mock_json)
@@ -288,3 +288,40 @@ def test_CREATE(self, request_method):
288288
self.fs.create()
289289
self.assertEqual(request_method.call_args[0],
290290
('post', _('repos/oct/re_oct/forks')))
291+
292+
293+
@patch.object(requests.sessions.Session, 'request')
294+
class TestKeysService(TestCase):
295+
296+
def setUp(self):
297+
self.ks = Keys(user='oct', repo='re_oct')
298+
299+
def test_LIST(self, request_method):
300+
request_method.return_value = mock_response_result()
301+
self.ks.list().all()
302+
self.assertEqual(request_method.call_args[0],
303+
('get', _('repos/oct/re_oct/keys')))
304+
305+
def test_GET(self, request_method):
306+
request_method.return_value = mock_response()
307+
self.ks.get(1)
308+
self.assertEqual(request_method.call_args[0],
309+
('get', _('repos/oct/re_oct/keys/1')))
310+
311+
def test_CREATE(self, request_method):
312+
request_method.return_value = mock_response('post')
313+
self.ks.create({'title': 'test', 'key': 'ssh-rsa AAA'})
314+
self.assertEqual(request_method.call_args[0],
315+
('post', _('repos/oct/re_oct/keys')))
316+
317+
def test_UPDATE(self, request_method):
318+
request_method.return_value = mock_response('patch')
319+
self.ks.update(1, {'title': 'test', 'key': 'ssh-rsa AAA'})
320+
self.assertEqual(request_method.call_args[0],
321+
('patch', _('repos/oct/re_oct/keys/1')))
322+
323+
def test_DELETE(self, request_method):
324+
request_method.return_value = mock_response('delete')
325+
self.ks.delete(1)
326+
self.assertEqual(request_method.call_args[0],
327+
('delete', _('repos/oct/re_oct/keys/1')))

0 commit comments

Comments
 (0)