Exemple #1
0
    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')
Exemple #2
0
    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()
Exemple #3
0
    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')
Exemple #4
0
    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')
Exemple #5
0
    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'})
Exemple #6
0
    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
Exemple #7
0
    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
Exemple #8
0
    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
Exemple #9
0
    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
Exemple #10
0
    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')
Exemple #11
0
    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
Exemple #12
0
    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')
Exemple #13
0
 def request(self, url, method=None, headers=None, data=None, **kwargs):
     return Response(200, {}, '')