Skip to content

Commit 7ac4610

Browse files
committed
Services.users tests completed
services.users.user services.users.emails services.users.keys services.users.followers
1 parent 122a623 commit 7ac4610

File tree

3 files changed

+37
-9
lines changed

3 files changed

+37
-9
lines changed

pygithub3/requests/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ def __init__(self, content, schema, required):
2323
self.required = required
2424

2525
def dumps(self):
26-
if not self.content:
27-
return None
26+
if not self.schema:
27+
return self.content or None
2828
return json.dumps(self.parse())
2929

3030
def parse(self):
31-
if self.schema and not hasattr(self.content, 'items'):
31+
if not hasattr(self.content, 'items'):
3232
raise ValidationError("'%s' needs a content dictionary"
3333
% self.__class__.__name__)
3434
parsed = {key: self.content[key] for key in self.schema
@@ -40,7 +40,7 @@ def parse(self):
4040
if not parsed[attr_required]:
4141
raise ValidationError("'%s' attribute can't be empty" %
4242
attr_required)
43-
return parsed or self.content
43+
return parsed
4444

4545

4646
class Request(object):

pygithub3/tests/requests/test_core.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,17 @@ def test_without_body_and_without_schema(self):
7070
self.assertIsNone(request.get_body())
7171

7272

73-
class TestRequestBody(TestCase):
73+
class TestRequestBodyWithSchema(TestCase):
7474

7575
def setUp(self):
7676
valid_body = dict(schema=('arg1', 'arg2'), required=('arg1', ))
7777
self.b = Body({}, **valid_body)
7878

79+
def test_with_body_empty_and_schema_permissive(self):
80+
self.b.schema = ('arg1', 'arg2', '...')
81+
self.b.required = ()
82+
self.assertEqual(self.b.dumps(), {})
83+
7984
def test_with_required(self):
8085
self.b.content = dict(arg1='arg1')
8186
self.assertEqual(self.b.dumps(), dict(arg1='arg1'))
@@ -88,9 +93,9 @@ def test_with_invalid(self):
8893
self.b.content = 'invalid'
8994
self.assertRaises(ValidationError, self.b.dumps)
9095

91-
def test_without_body(self):
96+
def test_with_body_as_None(self):
9297
self.b.content = None
93-
self.assertIsNone(self.b.dumps())
98+
self.assertRaises(ValidationError, self.b.dumps)
9499

95100
def test_only_valid_keys(self):
96101
self.b.content = dict(arg1='arg1', arg2='arg2', fake='test')

pygithub3/tests/services/test_users.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,15 @@ def test_ADD_filter_emails(self, client_request, dummy):
7979
self.assertEqual(client_request.call_args[1],
8080
dict(data=('test@xample.com', )))
8181

82-
def test_DELETE(self, request_method):
82+
def test_DELETE_with_emails(self, request_method):
8383
request_method.return_value = mock_response('delete')
8484
self.es.delete('email_must_be_founded') # or 404 raises
8585
self.assertEqual(request_method.call_args[0],
8686
('delete', _('user/emails')))
8787

88+
def test_DELETE_without_emails(self, request_method):
89+
self.assertRaises(ValidationError, self.es.delete)
90+
8891

8992
@patch.object(requests.sessions.Session, 'request')
9093
class TestFollowersService(TestCase):
@@ -166,5 +169,25 @@ def test_GET(self, request_method):
166169
self.assertEqual(request_method.call_args[0],
167170
('get', _('user/keys/1')))
168171

169-
def test_ADD(self, request_method):
172+
def test_ADD_with_required(self, request_method):
170173
request_method.return_value = mock_response('post')
174+
self.ks.add({'key': 'ssh-rsa ...', 'title': 'test'})
175+
self.assertEqual(request_method.call_args[0], ('post', _('user/keys')))
176+
177+
def test_ADD_without_required(self, request_method):
178+
self.assertRaises(ValidationError, self.ks.add, {})
179+
180+
def test_UPDATE_with_required(self, request_method):
181+
request_method.return_value = mock_response('patch')
182+
self.ks.update(1, {'key': 'ssh-rsa ...', 'title': 'test'})
183+
self.assertEqual(request_method.call_args[0],
184+
('patch', _('user/keys/1')))
185+
186+
def test_UPDATE_without_required(self, request_method):
187+
self.assertRaises(ValidationError, self.ks.update, 1, {})
188+
189+
def test_DELETE(self, request_method):
190+
request_method.return_value = mock_response('delete')
191+
self.ks.delete(1)
192+
self.assertEqual(request_method.call_args[0],
193+
('delete', _('user/keys/1')))

0 commit comments

Comments
 (0)