Skip to content

Commit 55ed03b

Browse files
committed
bugfix/reject duplicate or already-completed paymentIds in updateSigningBasketPsuData finalised branch
1 parent da3ec42 commit 55ed03b

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

obp-api/src/main/scala/code/api/berlin/group/v1_3/SigningBasketsApi.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,14 @@ There are the following request types on this access path:
495495
val basket = SigningBasketX.signingBasketProvider.vend.getSigningBasketByBasketId(basketId)
496496
val existAll: Box[Boolean] =
497497
basket.flatMap(_.payments.map(_.forall(i => Connector.connector.vend.getTransactionRequestImpl(TransactionRequestId(i), callContext).isDefined)))
498-
if (existAll.getOrElse(false)) {
498+
val alreadyCompleted: List[String] =
499+
basket.flatMap(_.payments).getOrElse(Nil).filter { i =>
500+
Connector.connector.vend.getTransactionRequestImpl(TransactionRequestId(i), callContext)
501+
.exists(_._1.status == COMPLETED.toString)
502+
}
503+
if (alreadyCompleted.nonEmpty) {
504+
unboxFullOrFail(Empty, callContext, s"$InvalidConnectorResponse Some of paymentIds [${alreadyCompleted.mkString(",")}] are already completed")
505+
} else if (existAll.getOrElse(false)) {
499506
basket.map { i =>
500507
i.payments.map(_.map { i =>
501508
NewStyle.function.saveTransactionRequestStatusImpl(TransactionRequestId(i), COMPLETED.toString, callContext)

0 commit comments

Comments
 (0)