Fix tests for the urllib3 to requests change

This commit is contained in:
benoit 2023-03-12 19:57:52 +01:00 committed by Benoit
parent 7815f3379c
commit 7256c1894a
4 changed files with 42 additions and 19 deletions

26
tests/test_api.py Normal file
View file

@ -0,0 +1,26 @@
from pytest_mock import MockerFixture
from click.testing import CliRunner
from check_patroni.cli import main
from tools import my_mock
def test_api_status_code_200(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "node_is_pending_restart_ok", 200)
result = runner.invoke(
main, ["-e", "https://10.20.199.3:8008", "node_is_pending_restart"]
)
assert result.exit_code == 0
def test_api_status_code_404(mocker: MockerFixture) -> None:
runner = CliRunner()
my_mock(mocker, "Fake test", 404)
result = runner.invoke(
main, ["-e", "https://10.20.199.3:8008", "node_is_pending_restart"]
)
assert result.exit_code == 3

View file

@ -42,7 +42,7 @@ def test_cluster_config_has_changed_ok_with_hash(mocker: MockerFixture) -> None:
"https://10.20.199.3:8008", "https://10.20.199.3:8008",
"cluster_config_has_changed", "cluster_config_has_changed",
"--hash", "--hash",
"640df9f0211c791723f18fc3ed9dbb95", "96b12d82571473d13e890b893734e731",
], ],
) )
print(result.output) print(result.output)
@ -53,7 +53,7 @@ def test_cluster_config_has_changed_ok_with_state_file(mocker: MockerFixture) ->
runner = CliRunner() runner = CliRunner()
with open(here / "cluster_config_has_changed.state_file", "w") as f: with open(here / "cluster_config_has_changed.state_file", "w") as f:
f.write('{"hash": "640df9f0211c791723f18fc3ed9dbb95"}') f.write('{"hash": "96b12d82571473d13e890b893734e731"}')
my_mock(mocker, "cluster_config_has_changed", 200) my_mock(mocker, "cluster_config_has_changed", 200)
result = runner.invoke( result = runner.invoke(
@ -80,7 +80,7 @@ def test_cluster_config_has_changed_ko_with_hash(mocker: MockerFixture) -> None:
"https://10.20.199.3:8008", "https://10.20.199.3:8008",
"cluster_config_has_changed", "cluster_config_has_changed",
"--hash", "--hash",
"640df9f0211c791723f18fc3edffffff", "96b12d82571473d13e890b8937ffffff",
], ],
) )
assert result.exit_code == 2 assert result.exit_code == 2
@ -92,7 +92,7 @@ def test_cluster_config_has_changed_ko_with_state_file_and_save(
runner = CliRunner() runner = CliRunner()
with open(here / "cluster_config_has_changed.state_file", "w") as f: with open(here / "cluster_config_has_changed.state_file", "w") as f:
f.write('{"hash": "640df9f0211c791723f18fc3edffffff"}') f.write('{"hash": "96b12d82571473d13e890b8937ffffff"}')
my_mock(mocker, "cluster_config_has_changed", 200) my_mock(mocker, "cluster_config_has_changed", 200)
# test without saving the new hash # test without saving the new hash
@ -113,7 +113,7 @@ def test_cluster_config_has_changed_ko_with_state_file_and_save(
new_config_hash = cookie.get("hash") new_config_hash = cookie.get("hash")
cookie.close() cookie.close()
assert new_config_hash == "640df9f0211c791723f18fc3edffffff" assert new_config_hash == "96b12d82571473d13e890b8937ffffff"
# test when we save the hash # test when we save the hash
result = runner.invoke( result = runner.invoke(
@ -134,4 +134,4 @@ def test_cluster_config_has_changed_ko_with_state_file_and_save(
new_config_hash = cookie.get("hash") new_config_hash = cookie.get("hash")
cookie.close() cookie.close()
assert new_config_hash == "640df9f0211c791723f18fc3ed9dbb95" assert new_config_hash == "96b12d82571473d13e890b893734e731"

View file

@ -19,7 +19,7 @@ def test_node_is_pending_restart_ok(mocker: MockerFixture) -> None:
def test_node_is_pending_restart_ko(mocker: MockerFixture) -> None: def test_node_is_pending_restart_ko(mocker: MockerFixture) -> None:
runner = CliRunner() runner = CliRunner()
my_mock(mocker, "node_is_pending_restart_ko", 404) my_mock(mocker, "node_is_pending_restart_ko", 200)
result = runner.invoke( result = runner.invoke(
main, ["-e", "https://10.20.199.3:8008", "node_is_pending_restart"] main, ["-e", "https://10.20.199.3:8008", "node_is_pending_restart"]
) )

View file

@ -1,30 +1,27 @@
import attr import json
import pathlib import pathlib
from pytest_mock import MockerFixture from pytest_mock import MockerFixture
from typing import Any
from check_patroni.types import PatroniResource from check_patroni.types import APIError, PatroniResource
here = pathlib.Path(__file__).parent here = pathlib.Path(__file__).parent
def getjson(name: str) -> bytes: def getjson(name: str) -> Any:
path = here / "json" / f"{name}.json" path = here / "json" / f"{name}.json"
if not path.exists(): if not path.exists():
raise Exception(f"path does not exist : {path}") raise Exception(f"path does not exist : {path}")
with path.open() as f: with path.open() as f:
return f.read().encode("utf-8") return json.load(f)
@attr.s(auto_attribs=True, frozen=True, slots=True)
class MockApiReturnCode:
data: bytes
status: int
def my_mock(mocker: MockerFixture, json_file: str, status: int) -> None: def my_mock(mocker: MockerFixture, json_file: str, status: int) -> None:
def mock_rest_api(self: PatroniResource, service: str) -> MockApiReturnCode: def mock_rest_api(self: PatroniResource, service: str) -> Any:
return MockApiReturnCode(getjson(json_file), status) if status != 200:
raise APIError("Test en erreur pour status code 200")
return getjson(json_file)
mocker.resetall() mocker.resetall()
mocker.patch("check_patroni.types.PatroniResource.rest_api", mock_rest_api) mocker.patch("check_patroni.types.PatroniResource.rest_api", mock_rest_api)