Files
aitbc/apps/blockchain-node/tests/security/test_state_transition.py
aitbc e60cc3226c
Some checks failed
API Endpoint Tests / test-api-endpoints (push) Successful in 9s
Blockchain Synchronization Verification / sync-verification (push) Failing after 1s
CLI Tests / test-cli (push) Failing after 3s
Documentation Validation / validate-docs (push) Successful in 6s
Documentation Validation / validate-policies-strict (push) Successful in 2s
Integration Tests / test-service-integration (push) Successful in 40s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 1s
P2P Network Verification / p2p-verification (push) Successful in 2s
Production Tests / Production Integration Tests (push) Successful in 21s
Python Tests / test-python (push) Successful in 13s
Security Scanning / security-scan (push) Failing after 46s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 17s
Smart Contract Tests / lint-solidity (push) Successful in 10s
Add sys import to test files and remove obsolete integration tests
- Add sys import to 29 test files across agent-coordinator, blockchain-event-bridge, blockchain-node, and coordinator-api
- Remove apps/blockchain-event-bridge/tests/test_integration.py (obsolete bridge integration tests)
- Remove apps/coordinator-api/tests/test_integration.py (obsolete API integration tests)
- Implement GPU registration in marketplace_gpu.py with GPURegistry model persistence
2026-04-23 16:43:17 +02:00

90 lines
2.7 KiB
Python

"""
Security tests for state transition validation.
Tests that balance changes only occur through validated transactions.
import sys
"""
import pytest
from sqlmodel import Session, select
from aitbc_chain.state.state_transition import StateTransition, get_state_transition
from aitbc_chain.models import Account
class TestStateTransition:
"""Test state transition validation."""
def test_transaction_validation_insufficient_balance(self):
"""Test that transactions with insufficient balance are rejected."""
state_transition = StateTransition()
# Mock session and transaction data
# This would require a full database setup
# For now, we test the validation logic
tx_data = {
"from": "test_sender",
"to": "test_recipient",
"value": 1000,
"fee": 10,
"nonce": 0
}
# This test would require database setup
# For now, we document the test structure
pass
def test_transaction_validation_invalid_nonce(self):
"""Test that transactions with invalid nonce are rejected."""
state_transition = StateTransition()
tx_data = {
"from": "test_sender",
"to": "test_recipient",
"value": 100,
"fee": 10,
"nonce": 999 # Invalid nonce
}
# This test would require database setup
pass
def test_replay_protection(self):
"""Test that replay attacks are prevented."""
state_transition = StateTransition()
tx_hash = "test_tx_hash"
# Mark transaction as processed
state_transition._processed_tx_hashes.add(tx_hash)
# Try to process again - should fail
assert tx_hash in state_transition._processed_tx_hashes
def test_nonce_tracking(self):
"""Test that nonces are tracked correctly."""
state_transition = StateTransition()
address = "test_address"
nonce = 5
state_transition._processed_nonces[address] = nonce
assert state_transition.get_processed_nonces()[address] == nonce
def test_state_transition_reset(self):
"""Test that state transition can be reset."""
state_transition = StateTransition()
# Add some data
state_transition._processed_tx_hashes.add("test_hash")
state_transition._processed_nonces["test_addr"] = 5
# Reset
state_transition.reset()
# Verify reset
assert len(state_transition._processed_tx_hashes) == 0
assert len(state_transition._processed_nonces) == 0