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
|