Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

test: drop httmock dependency in test_gitlab.py#1787

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
JohnVillalovos merged 1 commit intomainfromtest/drop-httmock
Dec 30, 2021
Merged
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 61 additions & 45 deletionstests/unit/test_gitlab.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,61 +20,74 @@
import warnings

import pytest
from httmockimportHTTMock, response, urlmatch, with_httmock # noqa
importresponses

import gitlab

localhost = "http://localhost"
username = "username"
user_id = 1
token = "abc123"


@urlmatch(scheme="http", netloc="localhost", path="/api/v4/user", method="get")
def resp_get_user(url, request):
headers = {"content-type": "application/json"}
content = f'{{"id": {user_id:d}, "username": "{username:s}"}}'.encode("utf-8")
return response(200, content, headers, None, 5, request)
@pytest.fixture
def resp_get_user():
return {
"method": responses.GET,
"url": "http://localhost/api/v4/user",
"json": {"id": 1, "username": "username"},
"content_type": "application/json",
"status": 200,
}


@urlmatch(scheme="http", netloc="localhost", path="/api/v4/tests", method="get")
def resp_page_1(url, request):
@pytest.fixture
def resp_page_1():
headers = {
"content-type": "application/json",
"X-Page": 1,
"X-Next-Page": 2,
"X-Per-Page": 1,
"X-Total-Pages": 2,
"X-Total": 2,
"X-Page": "1",
"X-Next-Page": "2",
"X-Per-Page": "1",
"X-Total-Pages": "2",
"X-Total": "2",
"Link": ("<http://localhost/api/v4/tests?per_page=1&page=2>;" ' rel="next"'),
}
content = '[{"a": "b"}]'
return response(200, content, headers, None, 5, request)

return {
"method": responses.GET,
"url": "http://localhost/api/v4/tests",
"json": [{"a": "b"}],
"headers": headers,
"content_type": "application/json",
"status": 200,
"match_querystring": True,
}

@urlmatch(
scheme="http",
netloc="localhost",
path="/api/v4/tests",
method="get",
query=r".*page=2",
)
def resp_page_2(url, request):

@pytest.fixture
def resp_page_2():
headers = {
"content-type": "application/json",
"X-Page": 2,
"X-Next-Page": 2,
"X-Per-Page": 1,
"X-Total-Pages": 2,
"X-Total": 2,
"X-Page": "2",
"X-Next-Page": "2",
"X-Per-Page": "1",
"X-Total-Pages": "2",
"X-Total": "2",
}
params = {"per_page": "1", "page": "2"}

return {
"method": responses.GET,
"url": "http://localhost/api/v4/tests",
"json": [{"c": "d"}],
"headers": headers,
"content_type": "application/json",
"status": 200,
"match": [responses.matchers.query_param_matcher(params)],
"match_querystring": False,
}
content = '[{"c": "d"}]'
return response(200, content, headers, None, 5, request)


def test_gitlab_build_list(gl):
with HTTMock(resp_page_1):
obj = gl.http_list("/tests", as_list=False)
@responses.activate
def test_gitlab_build_list(gl, resp_page_1, resp_page_2):
responses.add(**resp_page_1)
obj = gl.http_list("/tests", as_list=False)
assert len(obj) == 2
assert obj._next_url == "http://localhost/api/v4/tests?per_page=1&page=2"
assert obj.current_page == 1
Expand All@@ -84,15 +97,17 @@ def test_gitlab_build_list(gl):
assert obj.total_pages == 2
assert obj.total == 2

with HTTMock(resp_page_2):
test_list = list(obj)
responses.add(**resp_page_2)
test_list = list(obj)
assert len(test_list) == 2
assert test_list[0]["a"] == "b"
assert test_list[1]["c"] == "d"


@with_httmock(resp_page_1, resp_page_2)
def test_gitlab_all_omitted_when_as_list(gl):
@responses.activate
def test_gitlab_all_omitted_when_as_list(gl, resp_page_1, resp_page_2):
responses.add(**resp_page_1)
responses.add(**resp_page_2)
result = gl.http_list("/tests", as_list=False, all=True)
assert isinstance(result, gitlab.GitlabList)

Expand All@@ -119,11 +134,12 @@ def test_gitlab_pickability(gl):
assert unpickled._objects == original_gl_objects


@with_httmock(resp_get_user)
def test_gitlab_token_auth(gl, callback=None):
@responses.activate
def test_gitlab_token_auth(gl, resp_get_user):
responses.add(**resp_get_user)
gl.auth()
assert gl.user.username == username
assert gl.user.id ==user_id
assert gl.user.username =="username"
assert gl.user.id ==1
assert isinstance(gl.user, gitlab.v4.objects.CurrentUser)


Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp