1919import com .iexec .blockchain .tool .IexecHubService ;
2020import com .iexec .common .sdk .broker .BrokerOrder ;
2121import com .iexec .commons .poco .chain .ChainAccount ;
22+ import com .iexec .commons .poco .contract .generated .IexecHubContract ;
2223import com .iexec .commons .poco .order .*;
2324import com .iexec .commons .poco .utils .BytesUtils ;
2425import org .junit .jupiter .api .BeforeEach ;
2526import org .junit .jupiter .api .Test ;
2627import org .junit .jupiter .api .extension .ExtendWith ;
28+ import org .mockito .Mock ;
29+ import org .mockito .MockitoAnnotations ;
2730import org .springframework .boot .test .system .CapturedOutput ;
2831import org .springframework .boot .test .system .OutputCaptureExtension ;
2932import org .web3j .crypto .Credentials ;
3033import org .web3j .crypto .ECKeyPair ;
3134import org .web3j .crypto .Keys ;
35+ import org .web3j .protocol .core .RemoteFunctionCall ;
36+ import org .web3j .protocol .core .methods .response .TransactionReceipt ;
3237
38+ import java .io .IOException ;
3339import java .math .BigInteger ;
3440import java .text .MessageFormat ;
3541import java .util .Optional ;
3642
3743import static org .assertj .core .api .Assertions .assertThat ;
3844import static org .assertj .core .api .Assertions .assertThatThrownBy ;
45+ import static org .mockito .ArgumentMatchers .any ;
3946import static org .mockito .ArgumentMatchers .anyString ;
4047import static org .mockito .Mockito .mock ;
4148import static org .mockito .Mockito .when ;
4249
4350@ ExtendWith (OutputCaptureExtension .class )
4451class BrokerServiceTests {
4552
53+ @ Mock
4654 private IexecHubService iexecHubService ;
4755 private BrokerService brokerService ;
4856
57+ @ Mock
58+ RemoteFunctionCall <TransactionReceipt > remoteCall ;
59+
4960 private static final ChainAccount deposit = ChainAccount .builder ().deposit (100L ).build ();
5061 private static final ChainAccount emptyDeposit = ChainAccount .builder ().deposit (0L ).build ();
5162
5263 @ BeforeEach
5364 void init () {
54- iexecHubService = mock ( IexecHubService . class );
65+ MockitoAnnotations . openMocks ( this );
5566 brokerService = new BrokerService (iexecHubService );
5667 }
5768
@@ -100,12 +111,10 @@ WorkerpoolOrder generateWorkerpoolOrder() {
100111 .build ();
101112 }
102113
103- BrokerOrder generateBrokerOrder (boolean withDataset ) {
104- AppOrder appOrder = generateAppOrder ();
105- WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder ();
106- DatasetOrder datasetOrder = generateDatasetOrder (withDataset );
114+ RequestOrder generateRequestOrder (
115+ AppOrder appOrder , DatasetOrder datasetOrder , WorkerpoolOrder workerpoolOrder ) {
107116 String requestAddress = generateEthereumAddress ();
108- RequestOrder requestOrder = RequestOrder .builder ()
117+ return RequestOrder .builder ()
109118 .app (appOrder .getApp ())
110119 .appmaxprice (BigInteger .ONE )
111120 .dataset (datasetOrder .getDataset ())
@@ -123,6 +132,14 @@ BrokerOrder generateBrokerOrder(boolean withDataset) {
123132 .salt (BytesUtils .toByte32HexString (1 ))
124133 .sign ("sign" )
125134 .build ();
135+ }
136+
137+ BrokerOrder generateBrokerOrder (boolean withDataset ) {
138+ AppOrder appOrder = generateAppOrder ();
139+ WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder ();
140+ DatasetOrder datasetOrder = generateDatasetOrder (withDataset );
141+ RequestOrder requestOrder = generateRequestOrder (
142+ appOrder , datasetOrder , workerpoolOrder );
126143 return BrokerOrder .builder ()
127144 .appOrder (appOrder )
128145 .datasetOrder (datasetOrder )
@@ -397,36 +414,39 @@ void shouldNotMatchOrderAndReturnEmptyStringWithoutDataset(CapturedOutput output
397414
398415 //region fireMatchOrders
399416 @ Test
400- void shouldFailToMatchOrdersWithDataset () {
417+ void shouldFailToMatchOrdersWithDataset () throws Exception {
401418 AppOrder appOrder = generateAppOrder ();
402419 DatasetOrder datasetOrder = generateDatasetOrder (true );
403420 WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder ();
404- RequestOrder requestOrder = RequestOrder .builder ()
405- .requester (generateEthereumAddress ())
406- .beneficiary (generateEthereumAddress ())
407- .app (appOrder .getApp ())
408- .dataset (datasetOrder .getDataset ())
409- .workerpool (workerpoolOrder .getWorkerpool ())
410- .build ();
421+ RequestOrder requestOrder = generateRequestOrder (
422+ appOrder , datasetOrder , workerpoolOrder );
423+ IexecHubContract iexecHubContract = mock (IexecHubContract .class );
424+ when (iexecHubService .getHubContract ()).thenReturn (iexecHubContract );
425+ when (iexecHubContract .matchOrders (any (), any (), any (), any ())).thenReturn (remoteCall );
426+ when (remoteCall .send ()).thenThrow (IOException .class );
427+ assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder ,workerpoolOrder , requestOrder ))
428+ .isEmpty ();
411429 assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder , workerpoolOrder , requestOrder ))
412430 .isEmpty ();
413431 }
414432
415433 @ Test
416- void shouldFailToMatchOrdersWithoutDataset () {
434+ void shouldFailToMatchOrdersWithoutDataset () throws Exception {
417435 AppOrder appOrder = generateAppOrder ();
418436 DatasetOrder datasetOrder = generateDatasetOrder (false );
419437 WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder ();
420- RequestOrder requestOrder = RequestOrder .builder ()
421- .requester (generateEthereumAddress ())
422- .beneficiary (generateEthereumAddress ())
423- .app (appOrder .getApp ())
424- .workerpool (workerpoolOrder .getWorkerpool ())
425- .workerpoolmaxprice (BigInteger .ONE )
426- .build ();
438+ RequestOrder requestOrder = generateRequestOrder (
439+ appOrder , datasetOrder , workerpoolOrder );
440+ IexecHubContract iexecHubContract = mock (IexecHubContract .class );
441+ when (iexecHubService .getHubContract ()).thenReturn (iexecHubContract );
442+ when (iexecHubContract .matchOrders (any (), any (), any (), any ())).thenReturn (remoteCall );
443+ when (remoteCall .send ()).thenThrow (IOException .class );
444+ assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder ,workerpoolOrder , requestOrder ))
445+ .isEmpty ();
427446 assertThat (brokerService .fireMatchOrders (appOrder , datasetOrder , workerpoolOrder , requestOrder ))
428447 .isEmpty ();
429448 }
449+
430450 //endregion
431451
432452 //region hasRequesterAcceptedPrices
0 commit comments