diff --git a/contracts/teachlink/src/cross_chain_tests.rs b/contracts/teachlink/src/cross_chain_tests.rs new file mode 100644 index 0000000..e1da1e2 --- /dev/null +++ b/contracts/teachlink/src/cross_chain_tests.rs @@ -0,0 +1,22 @@ +use crate::bridge::Bridge; +use crate::errors::BridgeError; +use soroban_sdk::{testutils::Address as _, Address, Env}; + +#[test] +fn test_bridge_initialization_and_access_control() { + let env = Env::default(); + env.mock_all_auths(); + + let admin = Address::generate(&env); + let token = Address::generate(&env); + let fee_recipient = Address::generate(&env); + let min_validators = 2; + + // Test Initialization + let result = Bridge::initialize(&env, token.clone(), admin.clone(), min_validators, fee_recipient.clone()); + assert!(result.is_ok()); + + // Test Double Initialization (Should Fail) + let result_fail = Bridge::initialize(&env, token, admin, min_validators, fee_recipient); + assert_eq!(result_fail.unwrap_err(), BridgeError::AlreadyInitialized); +} diff --git a/contracts/teachlink/src/lib.rs b/contracts/teachlink/src/lib.rs index 5207318..0f7a054 100644 --- a/contracts/teachlink/src/lib.rs +++ b/contracts/teachlink/src/lib.rs @@ -1784,3 +1784,6 @@ impl TeachLinkBridge { network_recovery::NetworkRecovery::is_fallback_active(&env) } } + +#[cfg(test)] +mod cross_chain_tests;