Skip to content

Commit 7b69b0a

Browse files
committed
test(framework): stabilize CredentialsTest fixtures
Replace random Credentials test setup with deterministic SignInterface mocks so the suite no longer depends on platform-specific SecureRandom providers or probabilistic retries. - remove NativePRNG usage from CredentialsTest - replace random key generation with fixed address fixtures via mocked SignInterface - assert create(SignInterface) returns the expected base58check address - keep equals/hashCode contract coverage with deterministic inputs
1 parent 1312696 commit 7b69b0a

1 file changed

Lines changed: 32 additions & 24 deletions

File tree

framework/src/test/java/org/tron/keystore/CredentialsTest.java

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
11
package org.tron.keystore;
22

3-
import java.security.NoSuchAlgorithmException;
4-
import java.security.SecureRandom;
53
import org.junit.Assert;
64
import org.junit.Test;
75
import org.mockito.Mockito;
86
import org.tron.common.crypto.SignInterface;
9-
import org.tron.common.crypto.SignUtils;
107
import org.tron.common.crypto.sm2.SM2;
118
import org.tron.common.utils.ByteUtil;
9+
import org.tron.common.utils.StringUtil;
1210

1311
public class CredentialsTest {
1412

13+
private static final byte[] ADDRESS_1 = ByteUtil.hexToBytes(
14+
"410102030405060708090a0b0c0d0e0f1011121314");
15+
private static final byte[] ADDRESS_2 = ByteUtil.hexToBytes(
16+
"411415161718191a1b1c1d1e1f2021222324252627");
17+
18+
private SignInterface mockSignInterface(byte[] address) {
19+
SignInterface signInterface = Mockito.mock(SignInterface.class);
20+
Mockito.when(signInterface.getAddress()).thenReturn(address);
21+
return signInterface;
22+
}
23+
1524
@Test
16-
public void testCreate() throws NoSuchAlgorithmException {
17-
Credentials credentials = Credentials.create(SignUtils.getGeneratedRandomSign(
18-
SecureRandom.getInstance("NativePRNG"), true));
19-
Assert.assertNotNull("Credentials address create failed!", credentials.getAddress());
20-
Assert.assertFalse("Credentials address create failed!", credentials.getAddress().isEmpty());
21-
Assert.assertNotNull("Credentials cryptoEngine create failed", credentials.getSignInterface());
25+
public void testCreate() {
26+
SignInterface signInterface = mockSignInterface(ADDRESS_1);
27+
28+
Credentials credentials = Credentials.create(signInterface);
29+
30+
Assert.assertEquals("Credentials address create failed!",
31+
StringUtil.encode58Check(ADDRESS_1), credentials.getAddress());
32+
Assert.assertSame("Credentials cryptoEngine create failed", signInterface,
33+
credentials.getSignInterface());
2234
}
2335

2436
@Test
@@ -34,28 +46,22 @@ public void testCreateFromSM2() {
3446
}
3547

3648
@Test
37-
public void testEquals() throws NoSuchAlgorithmException {
38-
Credentials credentials1 = Credentials.create(SignUtils.getGeneratedRandomSign(
39-
SecureRandom.getInstance("NativePRNG"), true));
40-
Credentials credentials2 = Credentials.create(SignUtils.getGeneratedRandomSign(
41-
SecureRandom.getInstance("NativePRNG"), true));
49+
public void testEquals() {
50+
Credentials credentials1 = Credentials.create(mockSignInterface(ADDRESS_1));
51+
Credentials credentials2 = Credentials.create(mockSignInterface(ADDRESS_2));
52+
53+
Assert.assertNotEquals("Credentials address fixtures should differ",
54+
credentials1.getAddress(), credentials2.getAddress());
4255
Assert.assertNotEquals("Credentials instance should be not equal!",
4356
credentials1, credentials2);
44-
Assert.assertNotEquals("Credentials instance hashcode should be not equal!",
45-
credentials1.hashCode(), credentials2.hashCode());
4657
}
4758

4859
@Test
4960
public void testEqualsWithAddressAndCryptoEngine() {
5061
Object aObject = new Object();
51-
SignInterface signInterface = Mockito.mock(SignInterface.class);
52-
SignInterface signInterface2 = Mockito.mock(SignInterface.class);
53-
SignInterface signInterface3 = Mockito.mock(SignInterface.class);
54-
byte[] address = "TQhZ7W1RudxFdzJMw6FvMnujPxrS6sFfmj".getBytes();
55-
byte[] address2 = "TNCmcTdyrYKMtmE1KU2itzeCX76jGm5Not".getBytes();
56-
Mockito.when(signInterface.getAddress()).thenReturn(address);
57-
Mockito.when(signInterface2.getAddress()).thenReturn(address);
58-
Mockito.when(signInterface3.getAddress()).thenReturn(address2);
62+
SignInterface signInterface = mockSignInterface(ADDRESS_1);
63+
SignInterface signInterface2 = mockSignInterface(ADDRESS_1);
64+
SignInterface signInterface3 = mockSignInterface(ADDRESS_2);
5965

6066
Credentials credential = Credentials.create(signInterface);
6167
Credentials sameCredential = Credentials.create(signInterface);
@@ -66,6 +72,8 @@ public void testEqualsWithAddressAndCryptoEngine() {
6672
Assert.assertFalse(credential.equals(aObject));
6773
Assert.assertFalse(credential.equals(null));
6874
Assert.assertEquals(credential, sameCredential);
75+
Assert.assertEquals("Equal credentials must have the same hashCode",
76+
credential.hashCode(), sameCredential.hashCode());
6977
Assert.assertNotEquals(credential, sameAddressDifferentEngineCredential);
7078
Assert.assertFalse(credential.equals(differentCredential));
7179
}

0 commit comments

Comments
 (0)