1313import java .nio .file .Path ;
1414import java .nio .file .Paths ;
1515import java .nio .file .attribute .FileAttribute ;
16- import java .security .NoSuchAlgorithmException ;
17- import java .security .NoSuchProviderException ;
18- import java .security .cert .CertificateException ;
1916import java .util .Arrays ;
2017import java .util .Collection ;
2118import java .util .EnumSet ;
19+ import java .util .concurrent .atomic .AtomicLong ;
2220import java .util .concurrent .atomic .AtomicReference ;
2321import java .util .function .Consumer ;
2422
25- import org .bouncycastle .operator .OperatorCreationException ;
2623import org .hyperledger .fabric .gateway .impl .GatewayImpl ;
2724import org .hyperledger .fabric .gateway .impl .identity .GatewayUser ;
2825import org .hyperledger .fabric .gateway .spi .PeerDisconnectEvent ;
3431import org .hyperledger .fabric .sdk .HFClient ;
3532import org .hyperledger .fabric .sdk .Peer ;
3633import org .hyperledger .fabric .sdk .ProposalResponse ;
34+ import org .hyperledger .fabric .sdk .QueryByChaincodeRequest ;
35+ import org .hyperledger .fabric .sdk .TransactionProposalRequest ;
3736import org .hyperledger .fabric .sdk .User ;
3837import org .hyperledger .fabric .sdk .exception .InvalidArgumentException ;
3938import org .hyperledger .fabric .sdk .exception .ServiceDiscoveryException ;
4039import org .hyperledger .fabric .sdk .identity .X509Enrollment ;
40+ import org .hyperledger .fabric .sdk .transaction .TransactionContext ;
4141import org .mockito .Mockito ;
4242
4343public final class TestUtils {
@@ -46,6 +46,8 @@ public final class TestUtils {
4646 private static final String UNUSED_FILE_PREFIX = "fgj-unused-" ;
4747 private static final Path NETWORK_CONFIG_PATH = Paths .get ("src" , "test" , "java" , "org" , "hyperledger" , "fabric" , "gateway" , "connection.json" );
4848
49+ private final AtomicLong currentTransactionId = new AtomicLong ();
50+
4951 public static TestUtils getInstance () {
5052 return INSTANCE ;
5153 }
@@ -79,6 +81,8 @@ public HFClient newMockClient() {
7981
8082 HFClient mockClient = Mockito .mock (HFClient .class );
8183 Mockito .when (mockClient .getUserContext ()).thenReturn (user );
84+ Mockito .when (mockClient .newTransactionProposalRequest ()).thenReturn (TransactionProposalRequest .newInstance (user ));
85+ Mockito .when (mockClient .newQueryProposalRequest ()).thenReturn (QueryByChaincodeRequest .newInstance (user ));
8286
8387 return mockClient ;
8488 }
@@ -100,6 +104,8 @@ public Peer newMockPeer(String name) {
100104 public Channel newMockChannel (String name ) {
101105 Channel mockChannel = Mockito .mock (Channel .class );
102106 Mockito .when (mockChannel .getName ()).thenReturn (name );
107+ Mockito .when (mockChannel .newTransactionContext ())
108+ .thenAnswer (invocation -> newMockTransactionContext ());
103109
104110 AtomicReference <Channel .SDPeerAddition > sdPeerAdditionRef = new AtomicReference <>(newMockSDPeerAddition ());
105111 Mockito .when (mockChannel .getSDPeerAddition ())
@@ -110,6 +116,16 @@ public Channel newMockChannel(String name) {
110116 return mockChannel ;
111117 }
112118
119+ private TransactionContext newMockTransactionContext () {
120+ TransactionContext mockContext = Mockito .mock (TransactionContext .class );
121+ Mockito .when (mockContext .getTxID ()).thenReturn (newFakeTransactionId ());
122+ return mockContext ;
123+ }
124+
125+ private String newFakeTransactionId () {
126+ return Long .toHexString (currentTransactionId .incrementAndGet ());
127+ }
128+
113129 private Channel .SDPeerAddition newMockSDPeerAddition () {
114130 Channel .SDPeerAddition mockPeerAddition = Mockito .mock (Channel .SDPeerAddition .class );
115131 try {
@@ -166,6 +182,14 @@ public Throwable getCause() {
166182 };
167183 }
168184
185+ public ProposalResponse newSuccessfulProposalResponse () {
186+ return newSuccessfulProposalResponse (new byte [0 ]);
187+ }
188+
189+ public ProposalResponse newSuccessfulProposalResponse (String responsePayload ) {
190+ return newSuccessfulProposalResponse (responsePayload .getBytes ());
191+ }
192+
169193 public ProposalResponse newSuccessfulProposalResponse (byte [] responsePayload ) {
170194 ProposalResponse response = newProposalResponse (200 , responsePayload );
171195 Mockito .when (response .getStatus ()).thenReturn (ChaincodeResponse .Status .SUCCESS );
0 commit comments