""" Basic tests for the network scanner. Run with: pytest tests/test_basic.py """ import pytest from app.config import settings def test_settings_loaded(): """Test that settings are loaded correctly.""" assert settings.app_name is not None assert settings.database_url is not None def test_network_range_validation(): """Test network range validation.""" import ipaddress # Valid private networks valid_networks = [ "192.168.1.0/24", "10.0.0.0/8", "172.16.0.0/12" ] for network in valid_networks: net = ipaddress.ip_network(network, strict=False) assert net.is_private # Invalid public network public_net = ipaddress.ip_network("8.8.8.8/32", strict=False) assert not public_net.is_private def test_port_range_parsing(): """Test port range parsing.""" from app.scanner.port_scanner import PortScanner scanner = PortScanner() # Single port ports = scanner.parse_port_range("80") assert ports == [80] # Multiple ports ports = scanner.parse_port_range("80,443,8080") assert ports == [80, 443, 8080] # Port range ports = scanner.parse_port_range("8000-8005") assert ports == [8000, 8001, 8002, 8003, 8004, 8005] # Combined ports = scanner.parse_port_range("80,443,8000-8002") assert ports == [80, 443, 8000, 8001, 8002] def test_service_name_guess(): """Test service name guessing.""" from app.scanner.port_scanner import PortScanner scanner = PortScanner() assert scanner._guess_service_name(80) == "http" assert scanner._guess_service_name(443) == "https" assert scanner._guess_service_name(22) == "ssh" assert scanner._guess_service_name(99999) is None @pytest.mark.asyncio async def test_database_initialization(): """Test database initialization.""" from app.database import init_db, SessionLocal # Initialize database init_db() # Test session creation db = SessionLocal() try: # Simple query to verify database works from app.models import Host count = db.query(Host).count() assert count >= 0 # Should not error finally: db.close() if __name__ == "__main__": pytest.main([__file__, "-v"])