1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import pytest
from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore
from gitlab._backends import requests_backend
class TestSendData:
def test_senddata_json(self) -> None:
result = requests_backend.SendData(
json={"a": 1}, content_type="application/json"
)
assert result.data is None
def test_senddata_data(self) -> None:
result = requests_backend.SendData(
data={"b": 2}, content_type="application/octet-stream"
)
assert result.json is None
def test_senddata_json_and_data(self) -> None:
with pytest.raises(ValueError, match=r"json={'a': 1} data={'b': 2}"):
requests_backend.SendData(
json={"a": 1}, data={"b": 2}, content_type="application/json"
)
class TestRequestsBackend:
@pytest.mark.parametrize(
"test_data,expected",
[
(False, "0"),
(True, "1"),
("12", "12"),
(12, "12"),
(12.0, "12.0"),
(complex(-2, 7), "(-2+7j)"),
],
)
def test_prepare_send_data_non_strings(self, test_data, expected) -> None:
assert isinstance(expected, str)
files = {"file": ("file.tar.gz", "12345", "application/octet-stream")}
post_data = {"test_data": test_data}
result = requests_backend.RequestsBackend.prepare_send_data(
files=files, post_data=post_data, raw=False
)
assert result.json is None
assert result.content_type.startswith("multipart/form-data")
assert isinstance(result.data, MultipartEncoder)
assert isinstance(result.data.fields["test_data"], str)
assert result.data.fields["test_data"] == expected
|