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