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![]
}
)]
)
}
Guías en esta categoría:
📄️ Pruebas Unitarias
Las pruebas unitarias son pruebas pequeñas que prueban contratos inteligentes.
📄️ Detectar Cambios Inesperados con Imágenes de Prueba
Usa imágenes de prueba para detectar cambios inesperados en el comportamiento del contrato
📄️ Probar las invocaciones de contrato autorizadas
Usa el contrato de ejemplo de autenticación para asegurar que la autenticación se lleva a cabo como se espera