stellar-interchain-token-service 0.2.0

Contract related to Interchain Token Service.
Documentation
mod utils;

use soroban_sdk::testutils::Address as _;
use soroban_sdk::{Address, IntoVal};
use stellar_axelar_std::{assert_auth, assert_auth_err, events};
use stellar_interchain_token_service::event::PauseStatusSetEvent;
use utils::setup_env;

#[test]
fn pause_succeeds() {
    let (env, client, _, _, _) = setup_env();

    assert!(!client.is_paused());

    assert_auth!(client.owner(), client.set_pause_status(&true));
    goldie::assert!(events::fmt_last_emitted_event::<PauseStatusSetEvent>(&env));

    assert!(client.is_paused());
}

#[test]
fn unpause_succeeds() {
    let (env, client, _, _, _) = setup_env();

    assert_auth!(client.owner(), client.set_pause_status(&true));

    assert!(client.is_paused());
    assert_auth!(client.owner(), client.set_pause_status(&false));

    goldie::assert!(events::fmt_last_emitted_event::<PauseStatusSetEvent>(&env));

    assert!(!client.is_paused());
}

#[test]
fn pause_fails_with_invalid_auth() {
    let (env, client, _, _, _) = setup_env();

    let user = Address::generate(&env);
    assert_auth_err!(user, client.set_pause_status(&true));
}