File: test_encodings.py

package info (click to toggle)
python-globus-sdk 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,172 kB
  • sloc: python: 35,227; sh: 44; makefile: 35
file content (47 lines) | stat: -rw-r--r-- 1,694 bytes parent folder | download | duplicates (2)
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
import pytest
import responses


def test_cannot_encode_dict_as_text(client):
    with pytest.raises(TypeError):
        client.post("/bar", data={"baz": 1}, encoding="text")


def test_cannot_encode_with_unknown_encoding(client):
    with pytest.raises(ValueError):
        client.post("/bar", data={"baz": 1}, encoding="some-random-string")


def test_cannot_form_encode_bad_types(client):
    with pytest.raises(TypeError):
        client.post("/bar", data=["baz", "buzz"], encoding="form")
    with pytest.raises(TypeError):
        client.post("/bar", data=1, encoding="form")


def test_form_encoding_works(client):
    responses.add(responses.POST, "https://foo.api.globus.org/bar", body="hi")
    client.post("/bar", data={"baz": 1}, encoding="form")

    last_req = responses.calls[-1].request
    assert last_req.body == "baz=1"


def test_text_encoding_sends_ascii_string(client):
    responses.add(responses.POST, "https://foo.api.globus.org/bar", body="hi")
    client.post("/bar", data="baz", encoding="text")

    last_req = responses.calls[-1].request
    assert last_req.body == "baz"


def test_text_encoding_can_send_non_ascii_utf8_bytes(client):
    # this test is a reproducer for an issue in which attempting to send these bytes
    # in the form of a (decoded) string would fail, as urllib3 tried to encode them as
    # latin-1 bytes incorrectly
    # passing the bytes already UTF-8 encoded should work
    responses.add(responses.POST, "https://foo.api.globus.org/bar", body="hi")
    client.post("/bar", data='{"field“: "value“}'.encode(), encoding="text")

    last_req = responses.calls[-1].request
    assert last_req.body == '{"field“: "value“}'.encode()