-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_server.py
More file actions
101 lines (76 loc) · 3.49 KB
/
test_server.py
File metadata and controls
101 lines (76 loc) · 3.49 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
from unittest.mock import patch
MOCK_RESULT = {
"success": True,
"exit_code": 0,
"data": None,
"output": "",
"stderr": None,
}
def _get_cmd(mock_run):
"""Extract the command list passed to run_cli."""
return mock_run.call_args[0][0]
class TestArgSplitting:
"""Verify quoted arguments are preserved as single tokens, not split on whitespace."""
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_quoted_flag_values(self, mock_run):
from server import jira_cli
jira_cli('issues create --project PROJ --summary "Fix login bug"')
assert _get_cmd(mock_run) == [
"jtk", "issues", "create", "--project", "PROJ",
"--summary", "Fix login bug",
]
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_multiple_quoted_flags(self, mock_run):
from server import jira_cli
jira_cli('issues create --project PROJ --summary "Fix bug" --description "Users cannot log in"')
cmd = _get_cmd(mock_run)
assert cmd[cmd.index("--summary") + 1] == "Fix bug"
assert cmd[cmd.index("--description") + 1] == "Users cannot log in"
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_single_word_args(self, mock_run):
from server import jira_cli
jira_cli("issues get PROJ-123 --output json")
assert _get_cmd(mock_run) == [
"jtk", "issues", "get", "PROJ-123", "--output", "json",
]
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_single_quoted_values(self, mock_run):
from server import newrelic_cli
newrelic_cli("logs query --nrql 'SELECT * FROM Log'")
cmd = _get_cmd(mock_run)
assert cmd[cmd.index("--nrql") + 1] == "SELECT * FROM Log"
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_all_cli_functions_use_shlex(self, mock_run):
"""Every generic CLI function must handle quoted args."""
from server import jira_cli, slack_cli, confluence_cli, newrelic_cli, google_cli
for fn in [jira_cli, slack_cli, confluence_cli, newrelic_cli, google_cli]:
mock_run.reset_mock()
fn('test --flag "value with spaces"')
cmd = _get_cmd(mock_run)
assert "value with spaces" in cmd, f"{fn.__name__} broke quoted args"
class TestConvenienceWrappers:
"""Convenience wrappers embed quotes in f-strings — verify they parse correctly."""
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_slack_search(self, mock_run):
from server import slack_search_messages
slack_search_messages("multi word query")
cmd = _get_cmd(mock_run)
assert "multi word query" in cmd
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_confluence_search(self, mock_run):
from server import confluence_search
confluence_search("page title here")
cmd = _get_cmd(mock_run)
assert "page title here" in cmd
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_gmail_search(self, mock_run):
from server import gmail_search
gmail_search("from:someone@example.com subject:hello")
cmd = _get_cmd(mock_run)
assert "from:someone@example.com subject:hello" in cmd
@patch("server.run_cli", return_value=MOCK_RESULT)
def test_drive_search(self, mock_run):
from server import drive_search
drive_search("quarterly report 2026")
cmd = _get_cmd(mock_run)
assert "quarterly report 2026" in cmd