wrolpi/controller/test/test_readiness.py
Roland ef32e8b42d
Some checks are pending
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
Checking readiness of main app in Controller instead of javascript requests, which break with CORS.
2026-03-08 16:05:56 -06:00

48 lines
1.5 KiB
Python

"""
Tests for readiness check functions.
"""
from unittest import mock
import aiohttp
import pytest
from controller.lib.readiness import (
_get_api_url,
_get_app_url,
check_api_ready,
check_app_ready,
)
class TestReadinessUrls:
def test_api_url_docker_mode(self):
with mock.patch("controller.lib.readiness.is_docker_mode", return_value=True):
assert _get_api_url() == "http://api:8081/api/echo"
def test_api_url_systemd_mode(self):
with mock.patch("controller.lib.readiness.is_docker_mode", return_value=False):
assert _get_api_url() == "http://127.0.0.1:8081/api/echo"
def test_app_url_docker_mode(self):
with mock.patch("controller.lib.readiness.is_docker_mode", return_value=True):
assert _get_app_url() == "http://app:3000"
def test_app_url_systemd_mode(self):
with mock.patch("controller.lib.readiness.is_docker_mode", return_value=False):
assert _get_app_url() == "http://127.0.0.1:3000"
@pytest.mark.asyncio
class TestReadinessChecks:
async def test_check_api_ready_returns_false_on_connection_error(self):
with mock.patch("aiohttp.ClientSession.get", side_effect=aiohttp.ClientError()):
result = await check_api_ready()
assert result is False
async def test_check_app_ready_returns_false_on_connection_error(self):
with mock.patch("aiohttp.ClientSession.get", side_effect=aiohttp.ClientError()):
result = await check_app_ready()
assert result is False