🚧 WIP
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
"""Config generator unit tests (spec section 64: configuration generation)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from app.configgen import generate_config
|
||||
from app.models import BrokerSettings, ListenerConfig
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def session(db_session):
|
||||
yield db_session
|
||||
|
||||
|
||||
def test_generate_with_one_listener(session):
|
||||
session.add(
|
||||
ListenerConfig(
|
||||
name="Production MQTT",
|
||||
port=1883,
|
||||
protocol="mqtt",
|
||||
allow_anonymous=False,
|
||||
max_connections=-1,
|
||||
tls_enabled=False,
|
||||
require_certificate=False,
|
||||
use_identity_as_username=False,
|
||||
)
|
||||
)
|
||||
session.commit()
|
||||
|
||||
result = generate_config(session)
|
||||
assert "listener 1883" in result.config_text
|
||||
assert "per_listener_settings false" in result.config_text
|
||||
assert "global_plugin /usr/lib/mosquitto_dynamic_security.so" in result.config_text
|
||||
assert "allow_anonymous false" in result.config_text
|
||||
assert result.warnings == []
|
||||
|
||||
|
||||
def test_generate_includes_global_settings(session):
|
||||
session.add(ListenerConfig(name="l", port=1883, protocol="mqtt"))
|
||||
session.add(BrokerSettings(key="max_packet_size", value="2000000", value_type="int"))
|
||||
session.commit()
|
||||
|
||||
result = generate_config(session)
|
||||
assert "max_packet_size 2000000" in result.config_text
|
||||
|
||||
|
||||
def test_generate_refuses_without_listeners(session):
|
||||
with pytest.raises(ValueError, match="no enabled listeners"):
|
||||
generate_config(session)
|
||||
|
||||
|
||||
def test_disabled_listeners_are_omitted(session):
|
||||
session.add(ListenerConfig(name="off", port=1884, protocol="mqtt", enabled=False))
|
||||
session.add(ListenerConfig(name="on", port=1883, protocol="mqtt"))
|
||||
session.commit()
|
||||
|
||||
result = generate_config(session)
|
||||
assert "listener 1883" in result.config_text
|
||||
assert "listener 1884" not in result.config_text
|
||||
|
||||
|
||||
def test_tls_listener_without_pki_warns(session):
|
||||
session.add(
|
||||
ListenerConfig(
|
||||
name="tls-later",
|
||||
port=8883,
|
||||
protocol="mqtt",
|
||||
tls_enabled=True,
|
||||
tls_min_version="tlsv1.2",
|
||||
)
|
||||
)
|
||||
session.commit()
|
||||
|
||||
result = generate_config(session)
|
||||
assert any("PKI is not available" in w for w in result.warnings)
|
||||
assert "tls_version tlsv1.2" in result.config_text
|
||||
Reference in New Issue
Block a user