Instead of defining the CliRunner value in each test, we use a fixture. The CliRunner is also configured with stdout and stderr separated because mixing them will pose problem if we use stderr for other purposes in tests, e.g. to emit log messages from a forth-coming HTTP server.
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from click.testing import CliRunner
|
|
|
|
from check_patroni.cli import main
|
|
|
|
|
|
def test_node_is_leader_ok(runner: CliRunner, fake_restapi) -> None:
|
|
fake_restapi("node_is_leader_ok")
|
|
result = runner.invoke(main, ["-e", "https://10.20.199.3:8008", "node_is_leader"])
|
|
assert result.exit_code == 0
|
|
assert (
|
|
result.stdout
|
|
== "NODEISLEADER OK - This node is a leader node. | is_leader=1;;@0\n"
|
|
)
|
|
|
|
fake_restapi("node_is_leader_ok_standby_leader")
|
|
result = runner.invoke(
|
|
main,
|
|
["-e", "https://10.20.199.3:8008", "node_is_leader", "--is-standby-leader"],
|
|
)
|
|
print(result.stdout)
|
|
assert result.exit_code == 0
|
|
assert (
|
|
result.stdout
|
|
== "NODEISLEADER OK - This node is a standby leader node. | is_leader=1;;@0\n"
|
|
)
|
|
|
|
|
|
def test_node_is_leader_ko(runner: CliRunner, fake_restapi) -> None:
|
|
fake_restapi("node_is_leader_ko", status=503)
|
|
result = runner.invoke(main, ["-e", "https://10.20.199.3:8008", "node_is_leader"])
|
|
assert result.exit_code == 2
|
|
assert (
|
|
result.stdout
|
|
== "NODEISLEADER CRITICAL - This node is not a leader node. | is_leader=0;;@0\n"
|
|
)
|
|
|
|
fake_restapi("node_is_leader_ko_standby_leader", status=503)
|
|
result = runner.invoke(
|
|
main,
|
|
["-e", "https://10.20.199.3:8008", "node_is_leader", "--is-standby-leader"],
|
|
)
|
|
assert result.exit_code == 2
|
|
assert (
|
|
result.stdout
|
|
== "NODEISLEADER CRITICAL - This node is not a standby leader node. | is_leader=0;;@0\n"
|
|
)
|