From 610f241a0a41bd0d7288355ecca96864c07f97f0 Mon Sep 17 00:00:00 2001 From: Steven Lin Date: Thu, 18 Jun 2026 15:33:13 +0800 Subject: [PATCH] test(permission): cover default active operation bitmap --- .../UpdateAccountPermissionInteractive.java | 14 ++++++++-- ...pdateAccountPermissionInteractiveTest.java | 28 +++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 src/test/java/org/tron/core/manager/UpdateAccountPermissionInteractiveTest.java diff --git a/src/main/java/org/tron/core/manager/UpdateAccountPermissionInteractive.java b/src/main/java/org/tron/core/manager/UpdateAccountPermissionInteractive.java index f2675b7d..753164ad 100644 --- a/src/main/java/org/tron/core/manager/UpdateAccountPermissionInteractive.java +++ b/src/main/java/org/tron/core/manager/UpdateAccountPermissionInteractive.java @@ -44,6 +44,8 @@ public class UpdateAccountPermissionInteractive { 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59 ); + static final String DEFAULT_ACTIVE_OPERATIONS = + "7fff1fc0033ef30f000000000000000000000000000000000000000000000000"; public static final Map operationsMap = new HashMap<>(); static { @@ -86,9 +88,15 @@ public class UpdateAccountPermissionInteractive { operationsMap.put("59", "Cancel Unstake"); } - private static String opLabel(int code) { + static String opLabel(int code) { String name = operationsMap.get(String.valueOf(code)); - return name != null ? name : "Unsupported/Disabled op " + code; + if (name != null) { + return name; + } + ContractType type = ContractType.forNumber(code); + return type != null + ? "Unlisted op " + code + " (" + type.name() + ")" + : "Unknown op " + code; } private static String contractTypeName(int code) { @@ -115,7 +123,7 @@ public String start(String address) { active.setType(2); active.setPermissionName("active"); active.setThreshold(1L); - active.setOperations("7fff1fc0033ef30f000000000000000000000000000000000000000000000000"); + active.setOperations(DEFAULT_ACTIVE_OPERATIONS); active.setKeys(Lists.newArrayList(new Key(address, 1L))); activePermissions = Lists.newArrayList(active); } diff --git a/src/test/java/org/tron/core/manager/UpdateAccountPermissionInteractiveTest.java b/src/test/java/org/tron/core/manager/UpdateAccountPermissionInteractiveTest.java new file mode 100644 index 00000000..840f2e20 --- /dev/null +++ b/src/test/java/org/tron/core/manager/UpdateAccountPermissionInteractiveTest.java @@ -0,0 +1,28 @@ +package org.tron.core.manager; + +import static org.tron.common.utils.ByteUtil.hexStringToIntegerList; + +import java.util.List; +import org.junit.Assert; +import org.junit.Test; + +public class UpdateAccountPermissionInteractiveTest { + + @Test + public void defaultActiveOperationsExcludeShieldedTransferContract() { + List operations = + hexStringToIntegerList(UpdateAccountPermissionInteractive.DEFAULT_ACTIVE_OPERATIONS); + + Assert.assertFalse(operations.contains(51)); + Assert.assertTrue(operations.contains(49)); + Assert.assertTrue(operations.contains(52)); + } + + @Test + public void opLabelDistinguishesUnlistedAndUnknownOperations() { + Assert.assertEquals("Transfer TRX", UpdateAccountPermissionInteractive.opLabel(1)); + Assert.assertEquals("Unlisted op 51 (ShieldedTransferContract)", + UpdateAccountPermissionInteractive.opLabel(51)); + Assert.assertEquals("Unknown op 255", UpdateAccountPermissionInteractive.opLabel(255)); + } +}