Saltar al contenido principal

Probar las invocaciones de contrato autorizadas

Las funciones de prueba de un contrato pueden usarse como una forma de asegurar que la autenticación se lleva a cabo de la manera en que un desarrollador lo intende. Un ejemplo simple se puede encontrar en el contrato de ejemplo de autenticación. (En el siguiente bloque de código, se ha omitido algún código por brevedad.)

#[test]
fn test() {
let env = Env::default();
env.mock_all_auths();

assert_eq!(client.increment(&user_1, &5), 5);
// Verify that the user indeed had to authorize a call of `increment` with
// the expected arguments:
assert_eq!(
env.auths(),
std::vec![(
// Address for which authorization check is performed
user_1.clone(),
// 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
contract_id.clone(),
// Name of the called function
symbol_short!("increment"),
// 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![]
}
)]
)
}