diff --git a/obp-api/src/test/scala/code/api/berlin/group/v1_3/SigningBasketServiceSBSApiTest.scala b/obp-api/src/test/scala/code/api/berlin/group/v1_3/SigningBasketServiceSBSApiTest.scala index b6ba197b5..71908d8f4 100644 --- a/obp-api/src/test/scala/code/api/berlin/group/v1_3/SigningBasketServiceSBSApiTest.scala +++ b/obp-api/src/test/scala/code/api/berlin/group/v1_3/SigningBasketServiceSBSApiTest.scala @@ -1,12 +1,13 @@ package code.api.berlin.group.v1_3 import code.api.berlin.group.ConstantsBG -import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.{ErrorMessagesBG, PostSigningBasketJsonV13, SigningBasketGetResponseJson, SigningBasketResponseJson} +import code.api.berlin.group.v1_3.JSONFactory_BERLIN_GROUP_1_3.{AuthorisationJsonV13, ErrorMessagesBG, PostSigningBasketJsonV13, ScaStatusJsonV13, SigningBasketGetResponseJson, SigningBasketResponseJson, StartPaymentAuthorisationJson} import code.api.builder.SigningBasketsApi.APIMethods_SigningBasketsApi import code.api.util.APIUtil.OAuth._ import code.api.util.ErrorMessages._ import code.setup.{APIResponse, DefaultUsers} import com.github.dwickern.macros.NameOf.nameOf +import com.openbankproject.commons.model.enums.StrongCustomerAuthenticationStatus import org.scalatest.Tag class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with DefaultUsers { @@ -15,6 +16,9 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def object getSigningBasket extends Tag(nameOf(APIMethods_SigningBasketsApi.getSigningBasket)) object getSigningBasketStatus extends Tag(nameOf(APIMethods_SigningBasketsApi.getSigningBasketStatus)) object deleteSigningBasket extends Tag(nameOf(APIMethods_SigningBasketsApi.deleteSigningBasket)) + object startSigningBasketAuthorisation extends Tag(nameOf(APIMethods_SigningBasketsApi.startSigningBasketAuthorisation)) + object getSigningBasketScaStatus extends Tag(nameOf(APIMethods_SigningBasketsApi.getSigningBasketScaStatus)) + object getSigningBasketAuthorisation extends Tag(nameOf(APIMethods_SigningBasketsApi.getSigningBasketAuthorisation)) feature(s"test the BG v1.3 - ${createSigningBasket.name}") { scenario("Failed Case - Unauthenticated Access", BerlinGroupV1_3, SBS, createSigningBasket) { @@ -111,9 +115,47 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def } } + feature(s"test the BG v1.3 - ${startSigningBasketAuthorisation.name}") { + scenario("Failed Case - Unauthenticated Access", BerlinGroupV1_3, SBS, startSigningBasketAuthorisation) { + val postJson = s"""{}""".stripMargin + val request = (V1_3_BG / "signing-baskets" / "basketId" / "authorisations").POST + val response = makePostRequest(request, postJson) + Then("We should get a 401 ") + response.code should equal(401) + val error = s"$UserNotLoggedIn" + And("error should be " + error) + response.body.extract[ErrorMessagesBG].tppMessages.head.text should startWith(error) + } + } - feature(s"BG v1.3 - $createSigningBasket, $getSigningBasket, $getSigningBasketStatus, $deleteSigningBasket") { - scenario("Authentication User, test succeed", BerlinGroupV1_3, SBS, createSigningBasket, getSigningBasket, getSigningBasketStatus, deleteSigningBasket) { + feature(s"test the BG v1.3 - ${getSigningBasketScaStatus.name}") { + scenario("Failed Case - Unauthenticated Access", BerlinGroupV1_3, SBS, getSigningBasketScaStatus) { + val requestGet = (V1_3_BG / "signing-baskets" / "basketId" / "authorisations" / "authorisationId").GET + val responseGet = makeGetRequest(requestGet) + Then("We should get a 401 ") + responseGet.code should equal(401) + val error = s"$UserNotLoggedIn" + And("error should be " + error) + responseGet.body.extract[ErrorMessagesBG].tppMessages.head.text should startWith(error) + } + } + + feature(s"test the BG v1.3 - ${getSigningBasketAuthorisation.name}") { + scenario("Failed Case - Unauthenticated Access", BerlinGroupV1_3, SBS, getSigningBasketAuthorisation) { + val requestGet = (V1_3_BG / "signing-baskets" / "basketId" / "authorisations").GET + val responseGet = makeGetRequest(requestGet) + Then("We should get a 401 ") + responseGet.code should equal(401) + val error = s"$UserNotLoggedIn" + And("error should be " + error) + responseGet.body.extract[ErrorMessagesBG].tppMessages.head.text should startWith(error) + } + } + + + feature(s"BG v1.3 - $createSigningBasket, $getSigningBasket, $getSigningBasketStatus, $deleteSigningBasket, $startSigningBasketAuthorisation, $getSigningBasketAuthorisation") { + scenario("Authentication User, test succeed", BerlinGroupV1_3, SBS, createSigningBasket, getSigningBasket, getSigningBasketStatus, deleteSigningBasket, startSigningBasketAuthorisation, getSigningBasketAuthorisation) { + // Create Signing Basket val postJson = s"""{ | "paymentIds": [ @@ -129,6 +171,7 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def val basketId = response.body.extract[SigningBasketResponseJson].basketId + // Get Signing Basket Then(s"We test the $getSigningBasket") val requestGet = (V1_3_BG / "signing-baskets" / basketId).GET <@ (user1) val responseGet = makeGetRequest(requestGet) @@ -136,6 +179,7 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def responseGet.body.extract[SigningBasketGetResponseJson].transactionStatus should be(ConstantsBG.SigningBasketsStatus.RCVD.toString.toLowerCase()) + // Get Signing Basket Status Then(s"We test the $getSigningBasketStatus") val requestGetStatus = (V1_3_BG / "signing-baskets" / basketId / "status").GET <@ (user1) var responseGetStatus = makeGetRequest(requestGetStatus) @@ -143,6 +187,7 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def responseGetStatus.body.extract[SigningBasketGetResponseJson].transactionStatus should be(ConstantsBG.SigningBasketsStatus.RCVD.toString.toLowerCase()) + // Delete Signing Basket val requestDelete = (V1_3_BG / "signing-baskets" / basketId).DELETE <@ (user1) val responseDelete = makeDeleteRequest(requestDelete) responseDelete.code should be(204) @@ -151,6 +196,31 @@ class SigningBasketServiceSBSApiTest extends BerlinGroupServerSetupV1_3 with Def responseGetStatus.code should be(200) responseGetStatus.body.extract[SigningBasketGetResponseJson].transactionStatus should be(ConstantsBG.SigningBasketsStatus.CANC.toString.toLowerCase()) + + // Start Signing Basket Auth Flow + val postJsonAuth = s"""{}""".stripMargin + val requestAuth = (V1_3_BG / "signing-baskets" / basketId / "authorisations").POST <@ (user1) + val responseAuth = makePostRequest(requestAuth, postJsonAuth) + Then("We should get a 201 ") + responseAuth.code should equal(201) + responseAuth.body.extract[StartPaymentAuthorisationJson].scaStatus should + be(StrongCustomerAuthenticationStatus.received.toString) + val authorisationId = responseAuth.body.extract[StartPaymentAuthorisationJson].authorisationId + + // Get Signing Basket Auth Flow Status + val requestAuthStatus = (V1_3_BG / "signing-baskets" / basketId / "authorisations" / authorisationId).GET <@ (user1) + val responseAuthStatus = makeGetRequest(requestAuthStatus) + Then("We should get a 200 ") + responseAuthStatus.code should equal(200) + responseAuthStatus.body.extract[ScaStatusJsonV13].scaStatus should + be(responseAuth.body.extract[StartPaymentAuthorisationJson].scaStatus) + + // Get Signing Basket Authorisations + val requestGetAuths = (V1_3_BG / "signing-baskets" / "basketId" / "authorisations").GET <@ (user1) + val responseGetAuths = makeGetRequest(requestGetAuths) + Then("We should get a 200 ") + responseGetAuths.code should equal(200) + responseGetAuths.body.extract[AuthorisationJsonV13] } }