test: add standalone instrument tests and is_valid_path negative tests by lesnik512 · Pull Request #98 · modern-python/lite-bootstrap · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions tests/instruments/test_cors_instrument.py
45 changes: 45 additions & 0 deletions tests/instruments/test_healthchecks_instrument.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from lite_bootstrap.instruments.healthchecks_instrument import HealthChecksConfig, HealthChecksInstrument


def test_healthchecks_instrument_ready_by_default() -> None:
instrument = HealthChecksInstrument(bootstrap_config=HealthChecksConfig())
assert instrument.is_ready()


def test_healthchecks_instrument_not_ready_when_disabled() -> None:
instrument = HealthChecksInstrument(bootstrap_config=HealthChecksConfig(health_checks_enabled=False))
assert not instrument.is_ready()
assert instrument.not_ready_message == "health_checks_enabled is False"


def test_healthchecks_render_data_default() -> None:
instrument = HealthChecksInstrument(bootstrap_config=HealthChecksConfig())
data = instrument.render_health_check_data()
assert data == {
"service_version": "1.0.0",
"service_name": "micro-service",
"health_status": True,
}


def test_healthchecks_render_data_custom() -> None:
instrument = HealthChecksInstrument(
bootstrap_config=HealthChecksConfig(service_name="my-svc", service_version="2.0.0"),
)
data = instrument.render_health_check_data()
assert data == {
"service_version": "2.0.0",
"service_name": "my-svc",
"health_status": True,
}


def test_healthchecks_config_defaults() -> None:
config = HealthChecksConfig()
assert config.health_checks_enabled is True
assert config.health_checks_path == "/health/"
assert config.health_checks_include_in_schema is False


def test_healthchecks_check_dependencies() -> None:
assert HealthChecksInstrument.check_dependencies() is True
35 changes: 35 additions & 0 deletions tests/instruments/test_prometheus_instrument.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from lite_bootstrap.instruments.prometheus_instrument import PrometheusConfig, PrometheusInstrument


def test_prometheus_instrument_ready_with_default_path() -> None:
instrument = PrometheusInstrument(bootstrap_config=PrometheusConfig())
assert instrument.is_ready()


def test_prometheus_instrument_not_ready_with_empty_path() -> None:
instrument = PrometheusInstrument(bootstrap_config=PrometheusConfig(prometheus_metrics_path=""))
assert not instrument.is_ready()
assert instrument.not_ready_message == "prometheus_metrics_path is empty or not valid"


def test_prometheus_instrument_not_ready_with_invalid_path() -> None:
# No leading slash → invalid per is_valid_path regex.
instrument = PrometheusInstrument(bootstrap_config=PrometheusConfig(prometheus_metrics_path="metrics"))
assert not instrument.is_ready()


def test_prometheus_instrument_ready_with_custom_valid_path() -> None:
instrument = PrometheusInstrument(
bootstrap_config=PrometheusConfig(prometheus_metrics_path="/custom-metrics/"),
)
assert instrument.is_ready()


def test_prometheus_config_defaults() -> None:
config = PrometheusConfig()
assert config.prometheus_metrics_path == "/metrics"
assert config.prometheus_metrics_include_in_schema is False


def test_prometheus_check_dependencies() -> None:
assert PrometheusInstrument.check_dependencies() is True
17 changes: 17 additions & 0 deletions tests/instruments/test_swagger_instrument.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from lite_bootstrap.instruments.swagger_instrument import SwaggerConfig, SwaggerInstrument


def test_swagger_instrument_ready_by_default() -> None:
instrument = SwaggerInstrument(bootstrap_config=SwaggerConfig())
assert instrument.is_ready()


def test_swagger_config_defaults() -> None:
config = SwaggerConfig()
assert config.swagger_static_path == "/static"
assert config.swagger_path == "/docs"
assert config.swagger_offline_docs is False


def test_swagger_check_dependencies() -> None:
assert SwaggerInstrument.check_dependencies() is True
38 changes: 38 additions & 0 deletions tests/test_path.py
Loading