Ejemplo n.º 1
0
    def test_delete(self, mock_requests_delete):
        # Successfull delete
        self.http = HttpApi(self.host)
        path = "/test"
        mock_requests_delete.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(200)
        ])
        resp = self.http.delete(path)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.delete exception not raised properly"):
            self.http.delete(path)

        mock_requests_delete.reset_mock()
        path2 = "v2/"
        resp = self.http.delete(path2)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")

        mock_requests_delete.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.delete(path3)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")
Ejemplo n.º 2
0
    def test_patch(self, mock_requests_patch):
        # Successfull patch
        self.http = HttpApi(self.host)
        path = "/test"
        data = {"testkey1": "testvalue1"}
        mock_requests_patch.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.patch(path, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.patch exception not raised properly"):
            self.http.patch(path, data=data)

        mock_requests_patch.reset_mock()
        path2 = "v2/"
        resp = self.http.patch(path2, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")

        mock_requests_patch.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.patch(path3, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")
Ejemplo n.º 3
0
    def test_get(self, mock_requests_get):
        # First test successfull get request. Assert if get was called
        self.http = HttpApi(self.host)
        path = "/test"
        mock_requests_get.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.get(path)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.get exception not raised properly"):
            self.http.get(path)

        mock_requests_get.reset_mock()
        path2 = "v2/"
        resp = self.http.get(path2)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")

        mock_requests_get.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.get(path3)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")
Ejemplo n.º 4
0
 def test_header_set(self):
     self.http = HttpApi(self.host, self.headers)
     # Test overwriting headers
     self.http.set_header("accept", "text/plain")
     self.assertEquals(self.http.defaultHeaders["accept"], "text/plain")
     # Test setting new headers
     self.http.set_header("accept-language", "en-US")
     self.assertEquals(self.http.defaultHeaders["accept-language"], "en-US")
Ejemplo n.º 5
0
 def test_init(self):
     self.http = HttpApi(self.host)
     self.assertEquals(
         self.http.host, self.host,
         "HTTPApi not set up correctly, host names don't match")
     self.http = HttpApi(self.host, self.headers, self.cert)
     self.assertDictEqual(self.headers, self.http.defaultHeaders,
                          "HttpApi not set up correctly, headers not ok")
     self.assertEquals(self.cert, self.http.cert)
Ejemplo n.º 6
0
 def test_huge_binary_content(self, mocked_get):
     var = os.urandom(10000000)
     for _ in range(6):
         var = var + os.urandom(10000000)
     response = Response()
     response._content = var  # pylint: disable=protected-access
     response.encoding = "utf-8"
     response.status_code = 200
     mocked_get.return_value = response
     self.http = HttpApi(self.host)
     resp = self.http.get("/")
     self.assertEqual(resp, response)
Ejemplo n.º 7
0
 def test_header_merge(self):
     self.http = HttpApi(self.host, self.headers)
     headers = {"accept": "text/plain", "content-length": 348}
     ref = {
         "accept-charset": "utf-8",
         "accept": "text/plain",
         "content-length": 348
     }
     merger = jsonmerge.Merger(SCHEMA)
     heads = merger.merge(self.headers, headers)
     # Assert that new headers are the same as reference
     self.assertDictEqual(heads,
                          ref,
                          msg="Header merging does not work correctly")
Ejemplo n.º 8
0
    def test_url_combine(self, mock_get):
        self.http = HttpApi(self.host2)
        self.http.get("/test_path")
        mock_get.assert_called_with(self.host2 + "test_path", {}, headers={})
        mock_get.reset_mock()

        self.http.get("test_path")
        mock_get.assert_called_with(self.host2 + "test_path", {}, headers={})
        mock_get.reset_mock()

        self.http = HttpApi(self.host)
        self.http.get("test_path")
        mock_get.assert_called_with(self.host + "/test_path", {}, headers={})
        mock_get.reset_mock()

        self.http = HttpApi(self.host)
        self.http.get("/test_path")
        mock_get.assert_called_with(self.host + "/test_path", {}, headers={})
Ejemplo n.º 9
0
class APITestCase(unittest.TestCase):
    def setUp(self):
        self.headers = {
            "accept-charset": "utf-8",
            "accept": "application/json"
        }
        self.host = "http://somesite.com"
        self.host2 = "http://somesite.com/api/"
        self.cert = "/path/to/cert.pem"
        self.http = None

    def test_init(self):
        self.http = HttpApi(self.host)
        self.assertEquals(
            self.http.host, self.host,
            "HTTPApi not set up correctly, host names don't match")
        self.http = HttpApi(self.host, self.headers, self.cert)
        self.assertDictEqual(self.headers, self.http.defaultHeaders,
                             "HttpApi not set up correctly, headers not ok")
        self.assertEquals(self.cert, self.http.cert)

    # Test both new header field and overwrite
    def test_header_set(self):
        self.http = HttpApi(self.host, self.headers)
        # Test overwriting headers
        self.http.set_header("accept", "text/plain")
        self.assertEquals(self.http.defaultHeaders["accept"], "text/plain")
        # Test setting new headers
        self.http.set_header("accept-language", "en-US")
        self.assertEquals(self.http.defaultHeaders["accept-language"], "en-US")

    def test_header_merge(self):
        self.http = HttpApi(self.host, self.headers)
        headers = {"accept": "text/plain", "content-length": 348}
        ref = {
            "accept-charset": "utf-8",
            "accept": "text/plain",
            "content-length": 348
        }
        merger = jsonmerge.Merger(SCHEMA)
        heads = merger.merge(self.headers, headers)
        # Assert that new headers are the same as reference
        self.assertDictEqual(heads,
                             ref,
                             msg="Header merging does not work correctly")

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.get")
    def test_url_combine(self, mock_get):
        self.http = HttpApi(self.host2)
        self.http.get("/test_path")
        mock_get.assert_called_with(self.host2 + "test_path", {}, headers={})
        mock_get.reset_mock()

        self.http.get("test_path")
        mock_get.assert_called_with(self.host2 + "test_path", {}, headers={})
        mock_get.reset_mock()

        self.http = HttpApi(self.host)
        self.http.get("test_path")
        mock_get.assert_called_with(self.host + "/test_path", {}, headers={})
        mock_get.reset_mock()

        self.http = HttpApi(self.host)
        self.http.get("/test_path")
        mock_get.assert_called_with(self.host + "/test_path", {}, headers={})

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.get")
    def test_get(self, mock_requests_get):
        # First test successfull get request. Assert if get was called
        self.http = HttpApi(self.host)
        path = "/test"
        mock_requests_get.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.get(path)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.get exception not raised properly"):
            self.http.get(path)

        mock_requests_get.reset_mock()
        path2 = "v2/"
        resp = self.http.get(path2)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")

        mock_requests_get.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.get(path3)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_get.called,
                        "Failed to call requests.get")

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.post")
    def test_post(self, mock_requests_post):
        # Successfull post
        self.http = HttpApi(self.host)
        path = "/test"
        json = {"testkey1": "testvalue1"}
        mock_requests_post.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.post(path, json=json)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_post.called,
                        "Failed to call requests.post")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.post exception not raised properly"):
            self.http.post(path, json=json)

        mock_requests_post.reset_mock()
        path2 = "v2/"
        resp = self.http.post(path2, json=json)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_post.called,
                        "Failed to call requests.post")

        mock_requests_post.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.post(path3, json=json)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_post.called,
                        "Failed to call requests.post")

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.put")
    def test_put(self, mock_requests_put):
        # Successfull put
        self.http = HttpApi(self.host)
        path = "/test"
        data = {"testkey1": "testvalue1"}
        mock_requests_put.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.put(path, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_put.called,
                        "Failed to call requests.put")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.put exception not raised properly"):
            self.http.put(path, data=data)

        mock_requests_put.reset_mock()
        path2 = "v2/"
        resp = self.http.put(path2, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_put.called,
                        "Failed to call requests.put")

        mock_requests_put.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.put(path3, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_put.called,
                        "Failed to call requests.put")

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.patch")
    def test_patch(self, mock_requests_patch):
        # Successfull patch
        self.http = HttpApi(self.host)
        path = "/test"
        data = {"testkey1": "testvalue1"}
        mock_requests_patch.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(201)
        ])
        resp = self.http.patch(path, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.patch exception not raised properly"):
            self.http.patch(path, data=data)

        mock_requests_patch.reset_mock()
        path2 = "v2/"
        resp = self.http.patch(path2, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")

        mock_requests_patch.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.patch(path3, data=data)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_patch.called,
                        "Failed to call requests.patch")

    @mock.patch("icetea_lib.tools.HTTP.Api.requests.delete")
    def test_delete(self, mock_requests_delete):
        # Successfull delete
        self.http = HttpApi(self.host)
        path = "/test"
        mock_requests_delete.side_effect = iter([
            MockedRequestsResponse(),
            RequestException("Exception raised correctly"),
            MockedRequestsResponse(404),
            MockedRequestsResponse(200),
            MockedRequestsResponse(200)
        ])
        resp = self.http.delete(path)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")
        path = "/exception"
        # Assert that RequestException is raised
        with self.assertRaises(
                RequestException,
                msg="request.delete exception not raised properly"):
            self.http.delete(path)

        mock_requests_delete.reset_mock()
        path2 = "v2/"
        resp = self.http.delete(path2)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")

        mock_requests_delete.reset_mock()
        path3 = "/v3/"
        self.http = HttpApi(self.host2)
        resp = self.http.delete(path3)  # pylint: disable=unused-variable
        self.assertTrue(mock_requests_delete.called,
                        "Failed to call requests.delete")

    @mock.patch("icetea_lib.tools.HTTP.Api.HttpApi.get")
    def test_huge_binary_content(self, mocked_get):
        var = os.urandom(10000000)
        for _ in range(6):
            var = var + os.urandom(10000000)
        response = Response()
        response._content = var  # pylint: disable=protected-access
        response.encoding = "utf-8"
        response.status_code = 200
        mocked_get.return_value = response
        self.http = HttpApi(self.host)
        resp = self.http.get("/")
        self.assertEqual(resp, response)