Skip to content

Commit

Permalink
fix: Enable fuzzy matching for ApproveAllowanceSuite (#10787)
Browse files Browse the repository at this point in the history
Signed-off-by: Ivo Yankov <ivo@devlabs.bg>
Co-authored-by: Michael Tinker <michael.tinker@swirldslabs.com>
  • Loading branch information
Ivo-Yankov and tinker-michaelj committed Feb 14, 2024
1 parent 4b9e356 commit 4ae42e0
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 10 deletions.
Expand Up @@ -63,7 +63,7 @@ public PricedResult execute(@NonNull final MessageFrame frame) {
final var body = synthApprovalBody();
final var recordBuilder = systemContractOperations()
.dispatch(body, verificationStrategy, senderId, ContractCallRecordBuilder.class);
final var status = withMonoStandard(recordBuilder).status();
final var status = recordBuilder.status();
final var gasRequirement = gasCalculator.gasRequirement(body, DispatchType.APPROVE, senderId);
if (status != SUCCESS) {
return reversionWith(gasRequirement, recordBuilder);
Expand All @@ -78,6 +78,7 @@ public PricedResult execute(@NonNull final MessageFrame frame) {
? GrantApprovalTranslator.GRANT_APPROVAL.getOutputs().encodeElements(status.protoOrdinal(), true)
: GrantApprovalTranslator.GRANT_APPROVAL_NFT.getOutputs().encodeElements((long)
status.protoOrdinal());

return gasOnly(successResult(encodedOutput, gasRequirement, recordBuilder), status, false);
}
}
Expand Down

Large diffs are not rendered by default.

Expand Up @@ -43,8 +43,13 @@
import static com.hedera.services.bdd.spec.utilops.CustomSpecAssert.allRunFor;
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.childRecordsCheck;
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.newKeyNamed;
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.overriding;
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.sourcing;
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.withOpContext;
import static com.hedera.services.bdd.spec.utilops.records.SnapshotMatchMode.HIGHLY_NON_DETERMINISTIC_FEES;
import static com.hedera.services.bdd.spec.utilops.records.SnapshotMatchMode.NONDETERMINISTIC_CONTRACT_CALL_RESULTS;
import static com.hedera.services.bdd.spec.utilops.records.SnapshotMatchMode.NONDETERMINISTIC_FUNCTION_PARAMETERS;
import static com.hedera.services.bdd.spec.utilops.records.SnapshotMatchMode.NONDETERMINISTIC_TRANSACTION_FEES;
import static com.hedera.services.bdd.suites.contract.Utils.asAddress;
import static com.hedera.services.bdd.suites.contract.Utils.asToken;
import static com.hedera.services.bdd.suites.contract.Utils.eventSignatureOf;
Expand Down Expand Up @@ -75,7 +80,7 @@
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Tag;

@HapiTestSuite
@HapiTestSuite(fuzzyMatch = true)
@Tag(SMART_CONTRACT)
public class ApproveAllowanceSuite extends HapiSuite {

Expand Down Expand Up @@ -127,7 +132,7 @@ public List<HapiSpec> getSpecsInSuite() {
final HapiSpec nftAutoCreationIncludeAllowanceCheck() {
final var ownerAccount = "owningAlias";
final var receivingAlias = "receivingAlias";
return defaultHapiSpec("NftAutoCreationIncludeAllowanceCheck")
return defaultHapiSpec("NftAutoCreationIncludeAllowanceCheck", NONDETERMINISTIC_TRANSACTION_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(ownerAccount),
Expand Down Expand Up @@ -183,7 +188,11 @@ final HapiSpec htsTokenApproveToInnerContract() {
final var nestedContract = DIRECT_ERC_CALLEE;
final var theSpender = SPENDER;

return defaultHapiSpec("htsTokenApproveToInnerContract")
return defaultHapiSpec(
"htsTokenApproveToInnerContract",
NONDETERMINISTIC_FUNCTION_PARAMETERS,
NONDETERMINISTIC_CONTRACT_CALL_RESULTS,
HIGHLY_NON_DETERMINISTIC_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS),
Expand Down Expand Up @@ -250,7 +259,7 @@ final HapiSpec htsTokenAllowance() {
final var allowanceTxn = ALLOWANCE_TX;
final var notAnAddress = new byte[20];

return defaultHapiSpec("htsTokenAllowance")
return defaultHapiSpec("htsTokenAllowance", NONDETERMINISTIC_FUNCTION_PARAMETERS, HIGHLY_NON_DETERMINISTIC_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS),
Expand Down Expand Up @@ -333,7 +342,11 @@ final HapiSpec htsTokenApprove() {
final var approveTxn = "approveTxn";
final var theSpender = SPENDER;

return defaultHapiSpec("htsTokenApprove")
return defaultHapiSpec(
"htsTokenApprove",
NONDETERMINISTIC_FUNCTION_PARAMETERS,
NONDETERMINISTIC_CONTRACT_CALL_RESULTS,
HIGHLY_NON_DETERMINISTIC_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS),
Expand Down Expand Up @@ -395,8 +408,10 @@ final HapiSpec hapiNftIsApprovedForAll() {
final var approvedForAllTxn = "approvedForAllTxn";
final var notAnAddress = new byte[20];

return defaultHapiSpec("hapiNftIsApprovedForAll")
return defaultHapiSpec(
"hapiNftIsApprovedForAll", NONDETERMINISTIC_FUNCTION_PARAMETERS, HIGHLY_NON_DETERMINISTIC_FEES)
.given(
overriding("staking.fees.nodeRewardPercentage", "10"),
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS),
cryptoCreate(RECIPIENT).balance(100 * ONE_HUNDRED_HBARS),
Expand Down Expand Up @@ -512,7 +527,11 @@ final HapiSpec hapiNftGetApproved() {
final var allowanceTxn = ALLOWANCE_TX;
final var notAnAddress = new byte[20];

return defaultHapiSpec("hapiNftGetApproved")
return defaultHapiSpec(
"hapiNftGetApproved",
NONDETERMINISTIC_CONTRACT_CALL_RESULTS,
NONDETERMINISTIC_FUNCTION_PARAMETERS,
HIGHLY_NON_DETERMINISTIC_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS).maxAutomaticTokenAssociations(10),
Expand Down Expand Up @@ -596,7 +615,11 @@ final HapiSpec hapiNftSetApprovalForAll() {
final var theSpender2 = "spender2";
final var allowanceTxn = ALLOWANCE_TX;

return defaultHapiSpec("hapiNftSetApprovalForAll")
return defaultHapiSpec(
"hapiNftSetApprovalForAll",
NONDETERMINISTIC_CONTRACT_CALL_RESULTS,
NONDETERMINISTIC_FUNCTION_PARAMETERS,
HIGHLY_NON_DETERMINISTIC_FEES)
.given(
newKeyNamed(MULTI_KEY),
cryptoCreate(OWNER).balance(100 * ONE_HUNDRED_HBARS).maxAutomaticTokenAssociations(10),
Expand Down Expand Up @@ -685,7 +708,11 @@ final HapiSpec testIndirectApprovalWith(
final AtomicReference<String> attackerMirrorAddr = new AtomicReference<>();
final AtomicReference<String> calleeMirrorAddr = new AtomicReference<>();

return defaultHapiSpec("testIndirectApprovalWith" + testName)
return defaultHapiSpec(
"testIndirectApprovalWith" + testName,
NONDETERMINISTIC_FUNCTION_PARAMETERS,
NONDETERMINISTIC_CONTRACT_CALL_RESULTS,
HIGHLY_NON_DETERMINISTIC_FEES)
.given(
cryptoCreate(TOKEN_TREASURY),
cryptoCreate(PRETEND_ATTACKER)
Expand Down

0 comments on commit 4ae42e0

Please sign in to comment.