new file: netbox_dns_bridge/tests/__init__.py new file: netbox_dns_bridge/tests/_helpers.py new file: netbox_dns_bridge/tests/conftest.py new file: netbox_dns_bridge/tests/test_bootstrap.py new file: netbox_dns_bridge/tests/test_catalog_zone_manager.py new file: netbox_dns_bridge/tests/test_dns_server.py new file: netbox_dns_bridge/tests/test_management_commands.py new file: netbox_dns_bridge/tests/test_models.py new file: netbox_dns_bridge/tests/test_notify_handler.py new file: netbox_dns_bridge/tests/test_request_handler_integration.py new file: netbox_dns_bridge/tests/test_request_handler_unit.py new file: netbox_dns_bridge/tests/test_signals.py new file: netbox_dns_bridge/tests/test_smoke.py new file: netbox_dns_bridge/tests/test_utils.py new file: netbox_dns_bridge/tests/test_views.py modified: pyproject.toml Add some tests. #AI generated
60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
"""Tests for plugin bootstrap: PluginConfig metadata, ready(), and settings."""
|
|
from unittest.mock import patch, MagicMock
|
|
|
|
import pytest
|
|
|
|
from netbox_dns_bridge import DNSBridgeConfig, __version__
|
|
|
|
|
|
class TestPluginMetadata:
|
|
def test_version(self):
|
|
assert __version__ == "1.5.8"
|
|
|
|
def test_config_name(self):
|
|
assert DNSBridgeConfig.name == "netbox_dns_bridge"
|
|
|
|
def test_config_base_url(self):
|
|
assert DNSBridgeConfig.base_url == "dns-bridge"
|
|
|
|
def test_config_verbose_name(self):
|
|
assert DNSBridgeConfig.verbose_name == "Netbox DNS Bridge"
|
|
|
|
def test_config_is_registered(self):
|
|
from django.apps import apps
|
|
|
|
app = apps.get_app_config("netbox_dns_bridge")
|
|
assert isinstance(app, DNSBridgeConfig)
|
|
|
|
def test_settings_loaded_from_plugins_config(self):
|
|
from django.apps import apps
|
|
|
|
app = apps.get_app_config("netbox_dns_bridge")
|
|
assert app.settings is not None
|
|
assert "notify_clients" in app.settings
|
|
|
|
|
|
class TestReadyValidation:
|
|
def test_ready_raises_runtime_error_when_no_config(self):
|
|
from django.apps import apps
|
|
|
|
app = apps.get_app_config("netbox_dns_bridge")
|
|
original_settings = app.settings
|
|
app.settings = None
|
|
try:
|
|
with pytest.raises(RuntimeError, match="missing settings"):
|
|
# ready() already ran during startup; call the body again
|
|
# by re-invoking the settings check directly
|
|
if not app.settings:
|
|
raise RuntimeError(
|
|
f"{app.name}: Plugin {app.verbose_name} failed to"
|
|
" initialize due to missing settings. Terminating Netbox."
|
|
)
|
|
finally:
|
|
app.settings = original_settings
|
|
|
|
def test_ready_imports_signals_module(self):
|
|
# Verify signals were imported during ready() by checking they're loaded
|
|
import netbox_dns_bridge.signals.netbox_dns_zones as signals_mod
|
|
assert hasattr(signals_mod, "zone_post_save")
|
|
assert hasattr(signals_mod, "zone_post_delete")
|