Merge pull request #2550 from constantine2nd/develop

Berlin Group
This commit is contained in:
Simon Redfern 2025-05-28 16:22:12 +02:00 committed by GitHub
commit bdee8e311e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 24 additions and 21 deletions

View File

@ -179,6 +179,8 @@ jwt.use.ssl=false
## Expire OBP consents with status "ACCEPTED"
## If this props is not set corresponding job is not started
## Unit is a second
# obp_expired_consents_interval_in_seconds =

View File

@ -560,6 +560,8 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
def getRequestHeadersBerlinGroup(callContext: Option[CallContextLight]): CustomResponseHeaders = {
val aspspScaApproach = getPropsValue("berlin_group_aspsp_sca_approach", defaultValue = "redirect")
logger.debug(s"ConstantsBG.berlinGroupVersion1.urlPrefix: ${ConstantsBG.berlinGroupVersion1.urlPrefix}")
logger.debug(s"callContext.map(_.url): ${callContext.map(_.url)}")
callContext match {
case Some(cc) if cc.url.contains(ConstantsBG.berlinGroupVersion1.urlPrefix) && cc.url.endsWith("/consents") =>
CustomResponseHeaders(List(
@ -3043,10 +3045,10 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{
}
}
} else if (hasAnOAuthHeader(cc.authReqHeaderField)) { // OAuth 1
getUserFromOAuthHeaderFuture(cc)
getUserFromOAuthHeaderFuture(cc.copy(consumer = consumerByCertificate))
} else if (hasAnOAuth2Header(cc.authReqHeaderField)) { // OAuth 2
for {
(user, callContext) <- OAuth2Login.getUserFuture(cc)
(user, callContext) <- OAuth2Login.getUserFuture(cc.copy(consumer = consumerByCertificate))
} yield {
(user, callContext)
}

View File

@ -8195,10 +8195,10 @@ trait APIMethods400 extends MdcLoggable {
nameOf(getConsentInfosByBank),
"GET",
"/banks/BANK_ID/my/consent-infos",
"Get My Consents Info By Bank",
"Get My Consents Info At Bank",
s"""
|
|This endpoint gets the Consents that the current User created.
|This endpoint gets the Consents that the current User created at bank.
|
|${userAuthenticationMessage(true)}
|

View File

@ -1772,8 +1772,7 @@ trait APIMethods510 {
consent <- Future { Consents.consentProvider.vend.getConsentByConsentId(consentId)} map {
unboxFullOrFail(_, cc.callContext, ConsentNotFound, 404)
}
errorMessage = s" ${consent.mConsumerId.get} != ${cc.consumer.map(_.consumerId.get).getOrElse("None")}"
_ <- Helper.booleanToFuture(failMsg = ConsentNotFound + errorMessage, failCode = 404, cc = cc.callContext) {
_ <- Helper.booleanToFuture(failMsg = ConsentNotFound, failCode = 404, cc = cc.callContext) {
consent.mConsumerId.get == cc.consumer.map(_.consumerId.get).getOrElse("None")
}
} yield {

View File

@ -47,27 +47,27 @@ class ConsumerTest extends V510ServerSetup {
* This is made possible by the scalatest maven plugin
*/
object VersionOfApi extends Tag(ApiVersion.v5_1_0.toString)
object ApiEndpoint1 extends Tag(nameOf(Implementations5_1_0.createConsumer))
object ApiEndpoint2 extends Tag(nameOf(Implementations5_1_0.getConsumers))
object ApiEndpoint3 extends Tag(nameOf(Implementations5_1_0.updateConsumerRedirectURL))
object ApiEndpoint4 extends Tag(nameOf(Implementations5_1_0.updateConsumerLogoURL))
object CreateConsumer extends Tag(nameOf(Implementations5_1_0.createConsumer))
object GetConsumers extends Tag(nameOf(Implementations5_1_0.getConsumers))
object UpdateConsumerRedirectURL extends Tag(nameOf(Implementations5_1_0.updateConsumerRedirectURL))
object UpdateConsumerLogoURL extends Tag(nameOf(Implementations5_1_0.updateConsumerLogoURL))
object UpdateConsumerName extends Tag(nameOf(Implementations5_1_0.updateConsumerName))
object UpdateConsumerCertificate extends Tag(nameOf(Implementations5_1_0.updateConsumerCertificate))
object GetConsumer extends Tag(nameOf(Implementations5_1_0.getConsumer))
feature("Test all error cases ") {
scenario("We test the authentication errors", UpdateConsumerName, GetConsumer, ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, ApiEndpoint4, UpdateConsumerCertificate, VersionOfApi) {
scenario("We test the authentication errors", UpdateConsumerName, GetConsumer, CreateConsumer, GetConsumers, UpdateConsumerRedirectURL, UpdateConsumerLogoURL, UpdateConsumerCertificate, VersionOfApi) {
When("We make a request v5.1.0")
lazy val postApiCollectionJson = SwaggerDefinitionsJSON.postApiCollectionJson400
val requestApiEndpoint1 = (v5_1_0_Request / "management" / "consumers").POST
val responseApiEndpoint1 = makePostRequest(requestApiEndpoint1, write(postApiCollectionJson))
val requestApiEndpoint2 = (v5_1_0_Request / "management" / "consumers").GET
val requestApiEndpoint2 = (v5_1_0_Request / "management" / "consumers").GET
val responseApiEndpoint2 = makeGetRequest(requestApiEndpoint2)
val requestApiEndpoint3= (v5_1_0_Request / "management" / "consumers" / "CONSUMER_ID" / "consumer" / "redirect_url").PUT
val responseApiEndpoint3 = makePutRequest(requestApiEndpoint3, write(postApiCollectionJson))
val requestApiEndpoint4 = (v5_1_0_Request /"management" / "consumers" / "CONSUMER_ID" / "consumer" / "logo_url").PUT
val responseApiEndpoint4 = makePutRequest(requestApiEndpoint4, write(postApiCollectionJson))
@ -99,8 +99,8 @@ class ConsumerTest extends V510ServerSetup {
responseApiEndpoint5.code should equal(401)
responseApiEndpoint5.body.toString contains(s"$UserNotLoggedIn") should be (true)
}
scenario("We test the missing roles errors", UpdateConsumerName, GetConsumer, ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, ApiEndpoint4, UpdateConsumerCertificate, VersionOfApi) {
scenario("We test the missing roles errors", UpdateConsumerName, GetConsumer, CreateConsumer, GetConsumers, UpdateConsumerRedirectURL, UpdateConsumerLogoURL, UpdateConsumerCertificate, VersionOfApi) {
When("We make a request v5.1.0")
lazy val wrongJsonForTesting = SwaggerDefinitionsJSON.routing
@ -112,7 +112,7 @@ class ConsumerTest extends V510ServerSetup {
val requestApiEndpoint3= (v5_1_0_Request / "management" / "consumers" / "CONSUMER_ID" / "consumer" / "redirect_url").PUT<@ (user1)
val responseApiEndpoint3 = makePutRequest(requestApiEndpoint3, write(wrongJsonForTesting))
val requestApiEndpoint4 = (v5_1_0_Request /"management" / "consumers" / "CONSUMER_ID" / "consumer" / "logo_url").PUT<@ (user1)
val responseApiEndpoint4 = makePutRequest(requestApiEndpoint4, write(wrongJsonForTesting))
@ -143,8 +143,8 @@ class ConsumerTest extends V510ServerSetup {
responseApiEndpoint5.code should equal(403)
responseApiEndpoint5.body.toString contains (s"$canGetConsumers") should be(true)
}
scenario("We added the proper roles, but wrong json", UpdateConsumerName, ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, ApiEndpoint4, VersionOfApi) {
scenario("We added the proper roles, but wrong json", UpdateConsumerName, CreateConsumer, GetConsumers, UpdateConsumerRedirectURL, UpdateConsumerLogoURL, VersionOfApi) {
When("we first grant the missing roles:")
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, canCreateConsumer.toString)
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, canUpdateConsumerLogoUrl.toString)
@ -159,7 +159,7 @@ class ConsumerTest extends V510ServerSetup {
val requestApiEndpoint3= (v5_1_0_Request / "management" / "consumers" / "CONSUMER_ID" / "consumer" / "redirect_url").PUT<@ (user1)
val responseApiEndpoint3 = makePutRequest(requestApiEndpoint3, write(wrongJsonForTesting))
val requestApiEndpoint4 = (v5_1_0_Request /"management" / "consumers" / "CONSUMER_ID" / "consumer" / "logo_url").PUT<@ (user1)
val responseApiEndpoint4 = makePutRequest(requestApiEndpoint4, write(wrongJsonForTesting))
@ -183,9 +183,9 @@ class ConsumerTest extends V510ServerSetup {
responseApiUpdateConsumerCertificate.body.toString contains(s"$InvalidJsonFormat") should be (true)
}
}
feature(s"test all successful cases") {
scenario("we create, update and get consumers", UpdateConsumerName, GetConsumer, ApiEndpoint1, ApiEndpoint2, ApiEndpoint3, ApiEndpoint4, VersionOfApi) {
scenario("we create, update and get consumers", UpdateConsumerName, GetConsumer, CreateConsumer, GetConsumers, UpdateConsumerRedirectURL, UpdateConsumerLogoURL, VersionOfApi) {
When("we first grant the missing roles:")
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, canCreateConsumer.toString)