Skip to content

Commit 3c18d6a

Browse files
and-morafedcurciorubertiniChristian Geovese
authored
feat: Promote To UAT (#299)
Co-authored-by: fedcurciorubertini <federico.curciorubertini@nttdata.com> Co-authored-by: Christian Geovese <cgenoves@emeal.nttdata.com>
2 parents e5d5be0 + 32bfbff commit 3c18d6a

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

src/test/java/it/gov/pagopa/common/reactive/web/exception/ErrorManagerTest.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package it.gov.pagopa.common.reactive.web.exception;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertNull;
36
import ch.qos.logback.classic.LoggerContext;
47
import ch.qos.logback.classic.spi.ILoggingEvent;
58
import ch.qos.logback.classic.spi.IThrowableProxy;
@@ -11,6 +14,7 @@
1114
import it.gov.pagopa.common.web.exception.ClientExceptionWithBody;
1215
import it.gov.pagopa.common.web.exception.ErrorManager;
1316
import it.gov.pagopa.common.web.exception.RewardBatchException;
17+
import it.gov.pagopa.common.web.exception.ServiceException;
1418
import lombok.extern.slf4j.Slf4j;
1519
import org.junit.jupiter.api.Assertions;
1620
import org.junit.jupiter.api.BeforeAll;
@@ -204,10 +208,23 @@ public static void checkLog(MemoryAppender memoryAppender, String expectedLogged
204208
loggedEvent.getFormattedMessage()),
205209
"Unexpected logged message: " + loggedMessage);
206210

207-
Assertions.assertEquals(expectedLoggedExceptionMessage,
211+
assertEquals(expectedLoggedExceptionMessage,
208212
loggedException.getClassName() + ": " + loggedException.getMessage());
209213

210-
Assertions.assertEquals(expectedLoggedExceptionOccurrencePosition,
214+
assertEquals(expectedLoggedExceptionOccurrencePosition,
211215
loggedExceptionOccurrenceStackTrace.getStackTraceElement().getClassName() + "." + loggedExceptionOccurrenceStackTrace.getStackTraceElement().getMethodName());
212216
}
217+
218+
@Test
219+
void shouldCreateServiceExceptionWithDefaultValues() {
220+
String code = "TEST_CODE";
221+
String message = "Test message";
222+
223+
ServiceException ex = new ServiceException(code, message);
224+
225+
assertEquals(code, ex.getCode());
226+
assertEquals(message, ex.getMessage());
227+
assertFalse(ex.isPrintStackTrace());
228+
assertNull(ex.getCause());
229+
}
213230
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package it.gov.pagopa.idpay.transactions.config;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.ExtendWith;
6+
import org.mockito.ArgumentCaptor;
7+
import org.mockito.InjectMocks;
8+
import org.mockito.Mock;
9+
import org.mockito.Mockito;
10+
import org.mockito.junit.jupiter.MockitoExtension;
11+
import org.springframework.boot.autoconfigure.cache.RedisCacheManagerBuilderCustomizer;
12+
import org.springframework.data.redis.cache.RedisCacheConfiguration;
13+
import org.springframework.data.redis.cache.RedisCacheManager;
14+
15+
16+
@ExtendWith(MockitoExtension.class)
17+
class RedisConfigTest {
18+
19+
@InjectMocks
20+
private RedisConfig redisConfig;
21+
22+
@Mock
23+
private RedisCacheManager.RedisCacheManagerBuilder builder;
24+
25+
@Test
26+
void testRedisCustomizer() {
27+
ArgumentCaptor<RedisCacheConfiguration> configCaptor = ArgumentCaptor.forClass(RedisCacheConfiguration.class);
28+
29+
Mockito.when(builder.withCacheConfiguration(Mockito.eq("getPointOfSale"), configCaptor.capture()))
30+
.thenReturn(builder);
31+
32+
RedisCacheManagerBuilderCustomizer customizer = redisConfig.redisCacheManagerBuilderCustomizer();
33+
customizer.customize(builder);
34+
35+
Mockito.verify(builder, Mockito.times(1))
36+
.withCacheConfiguration(Mockito.eq("getPointOfSale"), Mockito.any());
37+
38+
RedisCacheConfiguration config = configCaptor.getValue();
39+
40+
Assertions.assertNotNull(config);
41+
Assertions.assertNotNull(config.getValueSerializationPair());
42+
}
43+
}

src/test/java/it/gov/pagopa/idpay/transactions/controller/PointOfSaleTransactionControllerImplTest.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,12 @@
2727
import org.springframework.data.domain.PageRequest;
2828
import org.springframework.data.domain.Pageable;
2929
import org.springframework.http.HttpStatus;
30+
import org.springframework.http.MediaType;
31+
import org.springframework.http.client.MultipartBodyBuilder;
32+
import org.springframework.http.codec.multipart.FilePart;
3033
import org.springframework.test.context.bean.override.mockito.MockitoBean;
3134
import org.springframework.test.web.reactive.server.WebTestClient;
35+
import org.springframework.web.reactive.function.BodyInserters;
3236
import reactor.core.publisher.Mono;
3337

3438
@WebFluxTest(controllers = PointOfSaleTransactionControllerImpl.class)
@@ -188,4 +192,55 @@ void downloadInvoiceShouldReturnOkWithoutPosHeader() {
188192
assertEquals("testUrl", res.getInvoiceUrl());
189193
});
190194
}
195+
196+
@Test
197+
void updateInvoiceFileOk() {
198+
199+
when(pointOfSaleTransactionService.updateInvoiceTransaction(
200+
eq(TRX_ID),
201+
eq(MERCHANT_ID),
202+
eq(POINT_OF_SALE_ID),
203+
any(FilePart.class),
204+
eq("DOC123")
205+
)).thenReturn(Mono.empty());
206+
207+
MultipartBodyBuilder builder = new MultipartBodyBuilder();
208+
builder.part("file", "dummycontent".getBytes())
209+
.filename("invoice.pdf")
210+
.contentType(MediaType.APPLICATION_OCTET_STREAM);
211+
builder.part("docNumber", "DOC123");
212+
213+
webClient.put()
214+
.uri("/idpay/transactions/{id}/invoice/update", TRX_ID)
215+
.header("x-merchant-id", MERCHANT_ID)
216+
.header("x-point-of-sale-id", POINT_OF_SALE_ID)
217+
.contentType(MediaType.MULTIPART_FORM_DATA)
218+
.body(BodyInserters.fromMultipartData(builder.build()))
219+
.exchange()
220+
.expectStatus().isNoContent();
221+
222+
verify(pointOfSaleTransactionService).updateInvoiceTransaction(
223+
eq(TRX_ID),
224+
eq(MERCHANT_ID),
225+
eq(POINT_OF_SALE_ID),
226+
any(FilePart.class),
227+
eq("DOC123")
228+
);
229+
}
230+
231+
@Test
232+
void updateInvoiceFileBadRequestWhenMissingMerchantId() {
233+
MultipartBodyBuilder builder = new MultipartBodyBuilder();
234+
builder.part("file", "dummy".getBytes())
235+
.filename("f.pdf")
236+
.contentType(MediaType.APPLICATION_OCTET_STREAM);
237+
238+
webClient.put()
239+
.uri("/idpay/transactions/{transactionId}/invoice/update", TRX_ID)
240+
.header("x-point-of-sale-id", POINT_OF_SALE_ID)
241+
.contentType(MediaType.MULTIPART_FORM_DATA)
242+
.body(BodyInserters.fromMultipartData(builder.build()))
243+
.exchange()
244+
.expectStatus().isBadRequest();
245+
}
191246
}

0 commit comments

Comments
 (0)