Files
intercept/tests/test_validation.py
T
James Smith 30450295b5 test: repair stale assertions in validation/waterfall/meshtastic/routes
Auth fixture, /listening->/receiver waterfall rename, numeric validator
returns, and float timestamp — all matching current code behaviour.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:56:02 +01:00

117 lines
3.8 KiB
Python

"""Comprehensive tests for validation utilities."""
import pytest
from utils.validation import (
validate_device_index,
validate_frequency,
validate_gain,
validate_rtl_tcp_host,
validate_rtl_tcp_port,
)
class TestFrequencyValidation:
"""Tests for frequency validation."""
def test_valid_frequencies(self):
"""Test valid frequency values."""
assert validate_frequency("152.0") == 152.0
assert validate_frequency(152.0) == 152.0
assert validate_frequency("1090") == 1090.0
assert validate_frequency(433.92) == 433.92
def test_frequency_range(self):
"""Test frequency range limits."""
# RTL-SDR typical range: 24MHz - 1766MHz
assert validate_frequency("24") == 24.0
assert validate_frequency("1700") == 1700.0
def test_invalid_frequencies(self):
"""Test invalid frequency values."""
with pytest.raises(ValueError):
validate_frequency("")
with pytest.raises(ValueError):
validate_frequency("abc")
with pytest.raises(ValueError):
validate_frequency(-100)
with pytest.raises(ValueError):
validate_frequency(0)
class TestGainValidation:
"""Tests for gain validation."""
def test_valid_gains(self):
"""Test valid gain values."""
assert validate_gain("0") == 0.0
assert validate_gain("40") == 40.0
assert validate_gain(49.6) == 49.6
def test_invalid_gains(self):
"""Test invalid gain values."""
with pytest.raises(ValueError):
validate_gain(-10)
with pytest.raises(ValueError):
validate_gain("invalid")
class TestDeviceIndexValidation:
"""Tests for device index validation."""
def test_valid_indices(self):
"""Test valid device indices."""
assert validate_device_index("0") == 0
assert validate_device_index(0) == 0
assert validate_device_index("1") == 1
assert validate_device_index(3) == 3
def test_invalid_indices(self):
"""Test invalid device indices."""
with pytest.raises(ValueError):
validate_device_index(-1)
with pytest.raises(ValueError):
validate_device_index("abc")
class TestRtlTcpHostValidation:
"""Tests for RTL-TCP host validation."""
def test_valid_hosts(self):
"""Test valid host values."""
assert validate_rtl_tcp_host("localhost") == "localhost"
assert validate_rtl_tcp_host("127.0.0.1") == "127.0.0.1"
assert validate_rtl_tcp_host("192.168.1.1") == "192.168.1.1"
assert validate_rtl_tcp_host("server.example.com") == "server.example.com"
def test_invalid_hosts(self):
"""Test invalid host values."""
with pytest.raises(ValueError):
validate_rtl_tcp_host("")
with pytest.raises(ValueError):
validate_rtl_tcp_host("invalid host with spaces")
with pytest.raises(ValueError):
validate_rtl_tcp_host("host;rm -rf /")
class TestRtlTcpPortValidation:
"""Tests for RTL-TCP port validation."""
def test_valid_ports(self):
"""Test valid port values."""
assert validate_rtl_tcp_port(1234) == 1234
assert validate_rtl_tcp_port("1234") == 1234
assert validate_rtl_tcp_port(30003) == 30003
assert validate_rtl_tcp_port(65535) == 65535
def test_invalid_ports(self):
"""Test invalid port values."""
with pytest.raises(ValueError):
validate_rtl_tcp_port(0)
with pytest.raises(ValueError):
validate_rtl_tcp_port(-1)
with pytest.raises(ValueError):
validate_rtl_tcp_port(70000)
with pytest.raises(ValueError):
validate_rtl_tcp_port("abc")