Skip to main content

Test authorized contract invocations

A contract's test functions can be used as a way to ensure the authorization is indeed carried out the way a developer intends. A simple example can be found in the auth example contract. (In the following code block, some code has been omitted for brevity.)

fn test() {
let env = Env::default();

assert_eq!(client.increment(&user_1, &5), 5);
// Verify that the user indeed had to authorize a call of `increment` with
// the expected arguments:
// Address for which authorization check is performed
// Invocation tree that needs to be authorized
AuthorizedInvocation {
// Function that is authorized. Can be a contract function or
// a host function that requires authorization.
function: AuthorizedFunction::Contract((
// Address of the called contract
// Name of the called function
// Arguments used to call `increment` (converted to the
// env-managed vector via `into_val`)
(user_1.clone(), 5_u32).into_val(&env),
// The contract doesn't call any other contracts that require
// authorization,
sub_invocations: std::vec![]