Spaces:
Sleeping
Sleeping
File size: 1,506 Bytes
f4648a3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import unittest
from unittest.mock import MagicMock, patch
from utils.audit import AuditLogger
class TestAuditLogger(unittest.TestCase):
def setUp(self):
self.mock_supabase = MagicMock()
self.logger = AuditLogger(self.mock_supabase)
def test_log_prediction(self):
"""Test logging a prediction event."""
transaction_id = "test_tx_123"
fraud_score = 0.85
features = {"amount": 100, "type": "TRANSFER"}
self.logger.log_prediction(transaction_id, fraud_score, features)
self.mock_supabase.rpc.assert_called_once()
args, kwargs = self.mock_supabase.rpc.call_args
self.assertEqual(args[0], "log_activity")
payload = args[1]
self.assertEqual(payload['p_action_type'], 'ML_PREDICTION')
self.assertEqual(payload['p_resource_type'], 'transaction')
self.assertEqual(payload['p_resource_id'], transaction_id)
self.assertIn('0.85', payload['p_message'])
self.assertEqual(payload['p_metadata']['fraud_score'], fraud_score)
def test_log_error_handling(self):
"""Test that logging errors are caught and do not crash the app."""
self.mock_supabase.rpc.side_effect = Exception("Connection failed")
# Should not raise exception
try:
self.logger.log_prediction("tx_123", 0.5, {})
except Exception:
self.fail("AuditLogger raised exception on failure")
if __name__ == '__main__':
unittest.main()
|