""" Tests for security hardening utilities """ import pytest import tempfile import json from datetime import datetime, timedelta from pathlib import Path from unittest.mock import patch, Mock from aitbc.security_hardening import ( SecurityValidator, SecurityAuditLog, SecurityAuditor, RateLimiter, log_security_event, get_security_auditor, ) class TestSecurityValidator: """Tests for SecurityValidator""" def test_validate_email_valid(self): """Test validate_email with valid email""" assert SecurityValidator.validate_email("test@example.com") is True assert SecurityValidator.validate_email("user.name+tag@domain.co.uk") is True def test_validate_email_invalid(self): """Test validate_email with invalid email""" assert SecurityValidator.validate_email("invalid") is False assert SecurityValidator.validate_email("@example.com") is False assert SecurityValidator.validate_email("test@") is False def test_validate_url_valid(self): """Test validate_url with valid URL""" assert SecurityValidator.validate_url("https://example.com") is True assert SecurityValidator.validate_url("http://localhost:8000") is True assert SecurityValidator.validate_url("https://192.168.1.1:8080/path") is True def test_validate_url_invalid(self): """Test validate_url with invalid URL""" assert SecurityValidator.validate_url("not-a-url") is False assert SecurityValidator.validate_url("ftp://example.com") is False assert SecurityValidator.validate_url("") is False def test_validate_ethereum_address_valid(self): """Test validate_ethereum_address with valid address""" assert SecurityValidator.validate_ethereum_address("0x1234567890abcdef1234567890abcdef12345678") is True assert SecurityValidator.validate_ethereum_address("0xABCDEF1234567890ABCDEF1234567890ABCDEF12") is True def test_validate_ethereum_address_invalid(self): """Test validate_ethereum_address with invalid address""" assert SecurityValidator.validate_ethereum_address("0x123") is False assert SecurityValidator.validate_ethereum_address("1234567890abcdef1234567890abcdef12345678") is False assert SecurityValidator.validate_ethereum_address("0x1234567890abcdef1234567890abcdef123456789") is False def test_validate_tx_hash_valid(self): """Test validate_tx_hash with valid hash""" valid_hash = "0x" + "12" * 32 # 64 hex chars total (32 * 2) assert SecurityValidator.validate_tx_hash(valid_hash) is True def test_validate_tx_hash_invalid(self): """Test validate_tx_hash with invalid hash""" assert SecurityValidator.validate_tx_hash("0x123") is False assert SecurityValidator.validate_tx_hash("1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234") is False def test_sanitize_html(self): """Test sanitize_html""" html = "" sanitized = SecurityValidator.sanitize_html(html) assert "<script>" in sanitized assert "