def test_nested_resources_registering_cleanup_on_create(self, session): class UserResources(RestResources): class Resource(RestResources.Resource): articles = resources('/articles') users = UserResources(session, '/users') when(session).request('/users/user1/articles', method='POST', data=m.any())\ .thenReturn({'id': 'article1'}) users['user1'].articles.create({'name': 'John Doe'}) func_captor = m.captor(m.arg_that(callable)) verify(session).add_cleanup('/users/user1/articles/article1', func_captor) when(session).raw_request(m.any(), method='DELETE')\ .thenReturn(Response(204, {}, '')) (func_captor.value)() verify(session).raw_request('/users/user1/articles/article1', method='DELETE')
def test_resource_delete_raises_ClientError_if_status_code_is_wrong( self, session): when(session).raw_request('/users/user1', method='DELETE')\ .thenReturn(Response(500, {}, 'internal server error')) with pytest.raises(ClientError): RestResources(session, '/users')['user1'].delete()
def test_resource_delete(self, session): when(session).raw_request(m.any(), method='DELETE')\ .thenReturn(Response(204, {}, '')) RestResources(session, '/users')['user1'].delete() verify(session).raw_request('/users/user1', method='DELETE')
def test_resource_delete_ignores_404_response(self, session): when(session).raw_request('/users/user1', method='DELETE')\ .thenReturn(Response(404, {}, 'user not found')) RestResources(session, '/users')['user1'].delete() verify(session).raw_request('/users/user1', method='DELETE')
def test_passing_extra_params_to_resource_delete(self, session): when(session).raw_request(m.any(), method='DELETE', params={'foo': 'bar'})\ .thenReturn(Response(204, {}, '')) RestResources(session, '/users')['user1'].delete(params={'foo': 'bar'}) verify(session).raw_request('/users/user1', method='DELETE', params={'foo': 'bar'})
def test_raw_request_returns_response_object(self, transport): response = Response(201, {}, 'hello, world!') when(transport).request(url='/foo', method='GET', headers=m.any(), data=m.any()).thenReturn(response) client = Client(transport) assert client.raw_request('/foo') == response
def test_request_returns_None_if_response_status_code_is_404( self, transport): when(transport).request( url=m.any(), method=m.any(), headers=m.any(), data=m.any(), ).thenReturn(Response(404, {}, '')) client = Client(transport) assert client.request('/foo') is None
def test_request_returns_None_if_body_is_empty(self, transport): data = {'foo': 'hello', 'bar': 123} when(transport).request( url='/foo', method='GET', headers=m.any(), data=m.any(), ).thenReturn(Response(200, {}, '')) client = Client(transport) assert client.request('/foo') is None
def test_request_returns_parsed_json(self, transport): data = {'foo': 'hello', 'bar': 123} when(transport).request( url='/foo', method='GET', headers=m.any(), data=m.any(), ).thenReturn(Response(200, {}, json.dumps(data))) client = Client(transport) assert client.request('/foo') == data
def test_unregistering_cleanup_on_delete(self, session): class UserResources(RestResources): class Resource(RestResources.Resource): articles = resources('/articles') users = UserResources(session, '/users') when(session).raw_request(m.any(), method='DELETE')\ .thenReturn(Response(204, {}, '')) users['john'].articles['article1'].delete() verify(session).remove_cleanup('/users/john/articles/article1')
def test_request_raises_ClientError_if_response_status_code_is_not_2xx( self, transport): when(transport).request( url=m.any(), method=m.any(), headers=m.any(), data=m.any(), ).thenReturn(Response(400, {}, '')) client = Client(transport) with pytest.raises(ClientError) as exc: client.request('/foo') assert exc.value.status_code == 400
def test_registering_cleanup_on_create(self, session): when(session).request('/users', method='POST', data=m.any())\ .thenReturn({'id': 'john'}) RestResources(session, '/users').create({'name': 'John Doe'}) func_captor = m.captor(m.arg_that(callable)) verify(session).add_cleanup('/users/john', func_captor) when(session).raw_request(m.any(), method='DELETE')\ .thenReturn(Response(204, {}, '')) (func_captor.value)() verify(session).raw_request('/users/john', method='DELETE')
def request(self, url, method=None, headers=None, data=None, **kwargs): return Response(200, {}, '')