Skip to content

Commit

Permalink
[MODINVOICE-534] - Rethrow user not linked order's acquisition unit e…
Browse files Browse the repository at this point in the history
…rror (#474)
  • Loading branch information
imerabishvili authored Mar 7, 2024
1 parent 2b57aee commit 4d20573
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
14 changes: 9 additions & 5 deletions src/main/java/org/folio/services/order/OrderLineService.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,15 @@ public Future<List<PoLine>> getPoLines(String query, RequestContext requestConte
public Future<CompositePoLine> getPoLine(String poLineId, RequestContext requestContext) {
RequestEntry requestEntry = new RequestEntry(ORDER_LINES_BY_ID_ENDPOINT).withId(poLineId);
return restClient.get(requestEntry, CompositePoLine.class, requestContext)
.recover(throwable -> {
var param = new Parameter().withKey("poLineId").withValue(poLineId);
var causeParam = new Parameter().withKey("cause").withValue(throwable.getMessage());
var error = PO_LINE_NOT_FOUND.toError().withParameters(List.of(param, causeParam));
throw new HttpException(404, error);
.recover(cause -> {
if (ExceptionUtil.matches(cause, USER_NOT_A_MEMBER_OF_THE_ACQ)) {
var causeParam = new Parameter().withKey("cause").withValue(cause.getMessage());
throw new HttpException(403, USER_NOT_A_MEMBER_OF_THE_ACQ, List.of(causeParam));
} else {
var param = new Parameter().withKey("poLineId").withValue(poLineId);
var causeParam = new Parameter().withKey("cause").withValue(cause.getMessage());
throw new HttpException(404, PO_LINE_NOT_FOUND, List.of(param, causeParam));
}
});
}

Expand Down
22 changes: 21 additions & 1 deletion src/test/java/org/folio/services/order/OrderServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ void shouldNotDeleteOrderInvoiceRelationshipByInvoiceIdIfRelationNoExist() {
}

@Test
void shouldRethrowUserNotAMemberOfTheAcq(VertxTestContext vertxTestContext) {
void shouldRethrowUserNotAMemberOfTheAcqWhenUpdatePoLine(VertxTestContext vertxTestContext) {
// given
doReturn(failedFuture(new HttpException(HttpStatus.HTTP_FORBIDDEN.toInt(), USER_NOT_A_MEMBER_OF_THE_ACQ.toError())))
.when(restClient).put(any(RequestEntry.class), any(CompositePoLine.class), eq(requestContextMock));
Expand All @@ -157,6 +157,26 @@ void shouldRethrowUserNotAMemberOfTheAcq(VertxTestContext vertxTestContext) {
});
}

@Test
void shouldRethrowUserNotAMemberOfTheAcqWhenGetPoLine(VertxTestContext vertxTestContext) {
// given
doReturn(failedFuture(new HttpException(HttpStatus.HTTP_FORBIDDEN.toInt(), USER_NOT_A_MEMBER_OF_THE_ACQ.toError())))
.when(restClient).get(any(RequestEntry.class), eq(CompositePoLine.class), eq(requestContextMock));

// when
Future<CompositePoLine> future = orderLineServiceInject.getPoLine("id", requestContextMock);

// then
vertxTestContext.assertFailure(future)
.onComplete(result -> {
HttpException httpException = (HttpException) result.cause();
assertEquals(HttpStatus.HTTP_FORBIDDEN.toInt(), httpException.getCode());
Error error = httpException.getErrors().getErrors().get(0);
assertEquals(USER_NOT_A_MEMBER_OF_THE_ACQ.getCode(), error.getCode());
vertxTestContext.completeNow();
});
}

@Test
void shouldThrowNotFoundErrorWhenDeletingOrderInvoiceRelationIfLastInvoice(VertxTestContext vertxTestContext) {
String invoiceLineId = UUID.randomUUID().toString();
Expand Down

0 comments on commit 4d20573

Please sign in to comment.