-
-
Notifications
You must be signed in to change notification settings - Fork 64
Expand file tree
/
Copy pathtest_paste_sharey.py
More file actions
92 lines (64 loc) · 2.14 KB
/
Copy pathtest_paste_sharey.py
File metadata and controls
92 lines (64 loc) · 2.14 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import json
import pytest
from cloudbot.util import web
from plugins.pastebins import sharey
def test_register() -> None:
sharey.register()
assert web.pastebins.get("sharey") is not None
sharey.unregister()
assert web.pastebins.get("sharey") is None
def test_paste(mock_requests) -> None:
sharey.register()
paster = web.pastebins["sharey"]
mock_requests.add(
"POST",
"https://sharey.org/api/paste",
json={"url": "https://sharey.org/foobar"},
)
assert paster.paste("test data", "txt") == "https://sharey.org/foobar?txt"
sharey.unregister()
def test_data_params(mock_requests) -> None:
sharey.register()
body: str | bytes | None = None
def req_cb(req):
nonlocal body
body = req.body
return 200, {}, json.dumps({"url": "https://sharey.org/foobar"})
paster = web.pastebins["sharey"]
mock_requests.add_callback(
"POST", "https://sharey.org/api/paste", callback=req_cb
)
assert paster.paste("test data", "txt") == "https://sharey.org/foobar?txt"
assert body is not None
assert json.loads(body) == {"content": "test data"}
sharey.unregister()
def test_paste_json_input(mock_requests) -> None:
sharey.register()
body: str | bytes | None = None
def req_cb(req):
nonlocal body
body = req.body
return 200, {}, json.dumps({"url": "https://sharey.org/foobar"})
paster = web.pastebins["sharey"]
mock_requests.add_callback(
"POST", "https://sharey.org/api/paste", callback=req_cb
)
assert (
paster.paste('{"foo": "bar"}', "txt") == "https://sharey.org/foobar?txt"
)
assert body is not None
assert json.loads(body) == {"foo": "bar"}
sharey.unregister()
def test_paste_error(mock_requests) -> None:
sharey.register()
paster = web.pastebins["sharey"]
with pytest.raises(web.ServiceError):
paster.paste("test data", "txt")
mock_requests.add(
"POST",
"https://sharey.org/api/paste",
status=500,
)
with pytest.raises(web.ServiceHTTPError):
paster.paste("test data", "txt")
sharey.unregister()