-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_main.py
More file actions
130 lines (95 loc) · 3.65 KB
/
Copy pathtest_main.py
File metadata and controls
130 lines (95 loc) · 3.65 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Run: python -m pytest test_main.py -v
import os
import json
import base64
import pytest
from unittest.mock import patch, MagicMock
import main
def test_missing_username_exits(monkeypatch):
monkeypatch.delenv("NETNUT_USERNAME", raising=False)
monkeypatch.delenv("NETNUT_PASSWORD", raising=False)
with pytest.raises(SystemExit):
main.main()
def test_missing_password_exits(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.delenv("NETNUT_PASSWORD", raising=False)
with pytest.raises(SystemExit):
main.main()
def test_api_url():
assert main.API_URL == "https://llm-scraper.netnut.io/search"
def test_payload_engine(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.setenv("NETNUT_PASSWORD", "pass")
captured = {}
def fake_post(url, auth, json, timeout):
captured["json"] = json
mock_resp = MagicMock()
mock_resp.raise_for_status = MagicMock()
mock_resp.json.return_value = {"answer": "ok"}
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
main.main()
assert captured["json"]["engine"] == "chatgpt"
def test_payload_web_search_true(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.setenv("NETNUT_PASSWORD", "pass")
captured = {}
def fake_post(url, auth, json, timeout):
captured["json"] = json
mock_resp = MagicMock()
mock_resp.raise_for_status = MagicMock()
mock_resp.json.return_value = {}
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
main.main()
assert captured["json"]["web_search"] is True
def test_payload_country(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.setenv("NETNUT_PASSWORD", "pass")
captured = {}
def fake_post(url, auth, json, timeout):
captured["json"] = json
mock_resp = MagicMock()
mock_resp.raise_for_status = MagicMock()
mock_resp.json.return_value = {}
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
main.main()
assert captured["json"]["country"] == "us"
def test_basic_auth_sent(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "myuser")
monkeypatch.setenv("NETNUT_PASSWORD", "mypass")
captured = {}
def fake_post(url, auth, json, timeout):
captured["auth"] = auth
mock_resp = MagicMock()
mock_resp.raise_for_status = MagicMock()
mock_resp.json.return_value = {}
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
main.main()
assert captured["auth"] == ("myuser", "mypass")
def test_timeout_180(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.setenv("NETNUT_PASSWORD", "pass")
captured = {}
def fake_post(url, auth, json, timeout):
captured["timeout"] = timeout
mock_resp = MagicMock()
mock_resp.raise_for_status = MagicMock()
mock_resp.json.return_value = {}
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
main.main()
assert captured["timeout"] == 180
def test_http_error_raises(monkeypatch):
monkeypatch.setenv("NETNUT_USERNAME", "user")
monkeypatch.setenv("NETNUT_PASSWORD", "pass")
import requests
def fake_post(url, auth, json, timeout):
mock_resp = MagicMock()
mock_resp.raise_for_status.side_effect = requests.HTTPError("401")
return mock_resp
with patch("main.requests.post", side_effect=fake_post):
with pytest.raises(requests.HTTPError):
main.main()