From 22a2597e23dede69efdac765dd35cec19d0ebfd0 Mon Sep 17 00:00:00 2001 From: aitbc Date: Sun, 19 Apr 2026 19:49:40 +0200 Subject: [PATCH] fix: add Redis installation step and improve aitbc_crypto mocking in tests - Added Redis server installation step in production-tests.yml workflow - Checks if Redis binaries are already available before installing - Installs redis-server package if needed - Improved aitbc_crypto mocking in conftest.py - Try importing real aitbc_crypto module first before mocking - Only mock functions if they don't already exist - Prevents overriding real implementations when aitbc_crypto is available --- .gitea/workflows/production-tests.yml | 10 ++++++++++ tests/conftest.py | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/production-tests.yml b/.gitea/workflows/production-tests.yml index ef9f0523..12255504 100644 --- a/.gitea/workflows/production-tests.yml +++ b/.gitea/workflows/production-tests.yml @@ -52,6 +52,16 @@ jobs: # Ensure standard directories exist mkdir -p /var/lib/aitbc/data /var/lib/aitbc/keystore /etc/aitbc /var/log/aitbc + - name: Ensure Redis server + run: | + if command -v redis-server >/dev/null 2>&1 && command -v redis-cli >/dev/null 2>&1; then + echo "✅ Redis binaries already available" + exit 0 + fi + + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y redis-server + - name: Start Redis run: | redis-server --daemonize yes --port 6379 diff --git a/tests/conftest.py b/tests/conftest.py index 8dbad87b..1e4d2351 100755 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -63,9 +63,14 @@ sys.modules['slowapi'] = Mock() sys.modules['slowapi.util'] = Mock() sys.modules['slowapi.limiter'] = Mock() sys.modules['web3'] = Mock() -sys.modules['aitbc_crypto'] = Mock() # Mock aitbc_crypto functions +try: + import aitbc_crypto as _aitbc_crypto +except ImportError: + _aitbc_crypto = Mock() + sys.modules['aitbc_crypto'] = _aitbc_crypto + def mock_encrypt_data(data, key): return f"encrypted_{data}" def mock_decrypt_data(data, key): @@ -73,9 +78,12 @@ def mock_decrypt_data(data, key): def mock_generate_viewing_key(): return "test_viewing_key" -sys.modules['aitbc_crypto'].encrypt_data = mock_encrypt_data -sys.modules['aitbc_crypto'].decrypt_data = mock_decrypt_data -sys.modules['aitbc_crypto'].generate_viewing_key = mock_generate_viewing_key +if not hasattr(_aitbc_crypto, 'encrypt_data'): + _aitbc_crypto.encrypt_data = mock_encrypt_data +if not hasattr(_aitbc_crypto, 'decrypt_data'): + _aitbc_crypto.decrypt_data = mock_decrypt_data +if not hasattr(_aitbc_crypto, 'generate_viewing_key'): + _aitbc_crypto.generate_viewing_key = mock_generate_viewing_key # Common fixtures for all test types @pytest.fixture