-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest_cli.py
More file actions
94 lines (76 loc) · 2.95 KB
/
test_cli.py
File metadata and controls
94 lines (76 loc) · 2.95 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
"""Tests for the Click CLI surface."""
from click.testing import CliRunner
from qql import QQLConfig
from qql.cli import main
def test_connect_saves_no_verify_config(mocker):
mock_client = mocker.MagicMock()
mock_client_cls = mocker.patch("qdrant_client.QdrantClient", return_value=mock_client)
save_config = mocker.patch("qql.cli.save_config")
launch_repl = mocker.patch("qql.cli._launch_repl")
result = CliRunner().invoke(
main,
["connect", "--url", "https://internal.example.io", "--no-verify"],
)
assert result.exit_code == 0
mock_client_cls.assert_called_once_with(
url="https://internal.example.io", api_key=None, verify=False
)
save_config.assert_called_once_with(
QQLConfig(url="https://internal.example.io", secret=None, verify=False)
)
launch_repl.assert_called_once()
def test_connect_saves_custom_ca_bundle_config(tmp_path, mocker):
ca_cert = tmp_path / "internal-ca.pem"
ca_cert.write_text("certificate")
mock_client = mocker.MagicMock()
mock_client_cls = mocker.patch("qdrant_client.QdrantClient", return_value=mock_client)
save_config = mocker.patch("qql.cli.save_config")
mocker.patch("qql.cli._launch_repl")
result = CliRunner().invoke(
main,
[
"connect",
"--url",
"https://internal.example.io",
"--ca-cert",
str(ca_cert),
],
)
assert result.exit_code == 0
verify = str(ca_cert.resolve())
mock_client_cls.assert_called_once_with(
url="https://internal.example.io", api_key=None, verify=verify
)
save_config.assert_called_once_with(
QQLConfig(url="https://internal.example.io", secret=None, verify=verify)
)
def test_connect_rejects_ca_bundle_when_verification_is_disabled(tmp_path):
ca_cert = tmp_path / "internal-ca.pem"
ca_cert.write_text("certificate")
result = CliRunner().invoke(
main,
[
"connect",
"--url",
"https://internal.example.io",
"--no-verify",
"--ca-cert",
str(ca_cert),
],
)
assert result.exit_code != 0
assert "--ca-cert cannot be used with --no-verify" in result.output
def test_execute_uses_saved_verify_config(tmp_path, mocker):
script = tmp_path / "script.qql"
script.write_text("SHOW COLLECTIONS")
cfg = QQLConfig(url="https://internal.example.io", secret="s3cr3t", verify=False)
mock_client = mocker.MagicMock()
mock_client_cls = mocker.patch("qdrant_client.QdrantClient", return_value=mock_client)
mocker.patch("qql.cli.load_config", return_value=cfg)
run_script = mocker.patch("qql.script.run_script", return_value=(1, 0))
result = CliRunner().invoke(main, ["execute", str(script)])
assert result.exit_code == 0
mock_client_cls.assert_called_once_with(
url="https://internal.example.io", api_key="s3cr3t", verify=False
)
run_script.assert_called_once()