11package org .tron .keystore ;
22
3- import java .security .NoSuchAlgorithmException ;
4- import java .security .SecureRandom ;
53import org .junit .Assert ;
64import org .junit .Test ;
75import org .mockito .Mockito ;
86import org .tron .common .crypto .SignInterface ;
9- import org .tron .common .crypto .SignUtils ;
107import org .tron .common .crypto .sm2 .SM2 ;
118import org .tron .common .utils .ByteUtil ;
9+ import org .tron .common .utils .StringUtil ;
1210
1311public 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