diff options
| author | Oleksii Shkurupii <Oleksii.Shkurupii@playtech.com> | 2020-08-27 18:07:54 +0300 |
|---|---|---|
| committer | Oleksii Shkurupii <Oleksii.Shkurupii@playtech.com> | 2020-08-27 18:07:54 +0300 |
| commit | fa899d7a6e76acbe392f3debb5fd61d71bd88ed2 (patch) | |
| tree | af915190af31ded29c6545c67ac7c9cda294e195 /gitlab/tests/test_gitlab_http_methods.py | |
| parent | 88f8cc78f97156d5888a9600bdb8721720563120 (diff) | |
| parent | a038e9567fd16259e3ed360ab0defd779e9c3901 (diff) | |
| download | gitlab-fa899d7a6e76acbe392f3debb5fd61d71bd88ed2.tar.gz | |
Merge branch 'master' into issue-1154
Diffstat (limited to 'gitlab/tests/test_gitlab_http_methods.py')
| -rw-r--r-- | gitlab/tests/test_gitlab_http_methods.py | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/gitlab/tests/test_gitlab_http_methods.py b/gitlab/tests/test_gitlab_http_methods.py new file mode 100644 index 0000000..fac89b9 --- /dev/null +++ b/gitlab/tests/test_gitlab_http_methods.py @@ -0,0 +1,234 @@ +import pytest + +from httmock import HTTMock, urlmatch, response + +from gitlab import * + + +def test_build_url(gl): + r = gl._build_url("http://localhost/api/v4") + assert r == "http://localhost/api/v4" + r = gl._build_url("https://localhost/api/v4") + assert r == "https://localhost/api/v4" + r = gl._build_url("/projects") + assert r == "http://localhost/api/v4/projects" + + +def test_http_request(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '[{"name": "project1"}]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + http_r = gl.http_request("get", "/projects") + http_r.json() + assert http_r.status_code == 200 + + +def test_http_request_404(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/not_there", method="get") + def resp_cont(url, request): + content = {"Here is wh it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_request("get", "/not_there") + + +def test_get_request(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '{"name": "project1"}' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_get("/projects") + assert isinstance(result, dict) + assert result["name"] == "project1" + + +def test_get_request_raw(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/octet-stream"} + content = "content" + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_get("/projects") + assert result.content.decode("utf-8") == "content" + + +def test_get_request_404(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/not_there", method="get") + def resp_cont(url, request): + content = {"Here is wh it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_get("/not_there") + + +def test_get_request_invalid_data(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '["name": "project1"]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabParsingError): + gl.http_get("/projects") + + +def test_list_request(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/json", "X-Total": 1} + content = '[{"name": "project1"}]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_list("/projects", as_list=True) + assert isinstance(result, list) + assert len(result) == 1 + + with HTTMock(resp_cont): + result = gl.http_list("/projects", as_list=False) + assert isinstance(result, GitlabList) + assert len(result) == 1 + + with HTTMock(resp_cont): + result = gl.http_list("/projects", all=True) + assert isinstance(result, list) + assert len(result) == 1 + + +def test_list_request_404(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/not_there", method="get") + def resp_cont(url, request): + content = {"Here is why it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_list("/not_there") + + +def test_list_request_invalid_data(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '["name": "project1"]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabParsingError): + gl.http_list("/projects") + + +def test_post_request(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="post") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '{"name": "project1"}' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_post("/projects") + assert isinstance(result, dict) + assert result["name"] == "project1" + + +def test_post_request_404(gl): + @urlmatch( + scheme="http", netloc="localhost", path="/api/v4/not_there", method="post" + ) + def resp_cont(url, request): + content = {"Here is wh it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_post("/not_there") + + +def test_post_request_invalid_data(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="post") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '["name": "project1"]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabParsingError): + gl.http_post("/projects") + + +def test_put_request(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="put") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '{"name": "project1"}' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_put("/projects") + assert isinstance(result, dict) + assert result["name"] == "project1" + + +def test_put_request_404(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/not_there", method="put") + def resp_cont(url, request): + content = {"Here is wh it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_put("/not_there") + + +def test_put_request_invalid_data(gl): + @urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="put") + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = '["name": "project1"]' + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabParsingError): + gl.http_put("/projects") + + +def test_delete_request(gl): + @urlmatch( + scheme="http", netloc="localhost", path="/api/v4/projects", method="delete" + ) + def resp_cont(url, request): + headers = {"content-type": "application/json"} + content = "true" + return response(200, content, headers, None, 5, request) + + with HTTMock(resp_cont): + result = gl.http_delete("/projects") + assert isinstance(result, requests.Response) + assert result.json() == True + + +def test_delete_request_404(gl): + @urlmatch( + scheme="http", netloc="localhost", path="/api/v4/not_there", method="delete" + ) + def resp_cont(url, request): + content = {"Here is wh it failed"} + return response(404, content, {}, None, 5, request) + + with HTTMock(resp_cont): + with pytest.raises(GitlabHttpError): + gl.http_delete("/not_there") |
