From 9f5a57f0012946faebb073295ccb2d3d275f64a3 Mon Sep 17 00:00:00 2001 From: hongwei Date: Thu, 26 Jan 2023 15:41:14 +0100 Subject: [PATCH] refactor/Username is not unique in OBP -- disabled the endpoints --- .../scala/code/api/v5_1_0/APIMethods510.scala | 24 +++++++++---------- .../scala/code/api/v5_1_0/OBPAPI5_1_0.scala | 10 +++++++- .../scala/code/api/v5_1_0/LockUserTest.scala | 6 ++--- .../test/scala/code/api/v5_1_0/UserTest.scala | 2 +- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala b/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala index a74e2974c..68eba9852 100644 --- a/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala +++ b/obp-api/src/main/scala/code/api/v5_1_0/APIMethods510.scala @@ -205,9 +205,9 @@ trait APIMethods510 { staticResourceDocs += ResourceDoc( - getUserByUsername, + getUserByProviderAndUsername, implementedInApiVersion, - nameOf(getUserByUsername), + nameOf(getUserByProviderAndUsername), "GET", "/users/provider/PROVIDER/username/USERNAME", "Get User by USERNAME", @@ -225,7 +225,7 @@ trait APIMethods510 { Some(List(canGetAnyUser)) ) - lazy val getUserByUsername: OBPEndpoint = { + lazy val getUserByProviderAndUsername: OBPEndpoint = { case "users" :: "provider" :: provider :: "username" :: username :: Nil JsonGet _ => { cc => for { @@ -241,9 +241,9 @@ trait APIMethods510 { } resourceDocs += ResourceDoc( - getBadLoginStatus, + getUserLockStatus, implementedInApiVersion, - nameOf(getBadLoginStatus), + nameOf(getUserLockStatus), "GET", "/users/PROVIDER/USERNAME/lock-status", "Get User Lock Status", @@ -258,7 +258,7 @@ trait APIMethods510 { List(apiTagUser, apiTagNewStyle), Some(List(canReadUserLockedStatus)) ) - lazy val getBadLoginStatus: OBPEndpoint = { + lazy val getUserLockStatus: OBPEndpoint = { //get private accounts for all banks case "users" ::provider :: username :: "lock-status" :: Nil JsonGet req => { cc => @@ -277,9 +277,9 @@ trait APIMethods510 { } resourceDocs += ResourceDoc( - unlockUser, + unlockUserByProviderAndUsername, implementedInApiVersion, - nameOf(unlockUser), + nameOf(unlockUserByProviderAndUsername), "PUT", "/users/PROVIDER/USERNAME/lock-status", "Unlock the user", @@ -296,7 +296,7 @@ trait APIMethods510 { List(UserNotLoggedIn, UserNotFoundByProviderAndUsername, UserHasMissingRoles, UnknownError), List(apiTagUser, apiTagNewStyle), Some(List(canUnlockUser))) - lazy val unlockUser: OBPEndpoint = { + lazy val unlockUserByProviderAndUsername: OBPEndpoint = { //get private accounts for all banks case "users" :: provider :: username :: "lock-status" :: Nil JsonPut req => { cc => @@ -321,9 +321,9 @@ trait APIMethods510 { } staticResourceDocs += ResourceDoc( - lockUser, + lockUserByProviderAndUsername, implementedInApiVersion, - nameOf(lockUser), + nameOf(lockUserByProviderAndUsername), "POST", "/users/PROVIDER/USERNAME/locks", "Lock the user", @@ -338,7 +338,7 @@ trait APIMethods510 { List($UserNotLoggedIn, UserNotFoundByProviderAndUsername, UserHasMissingRoles, UnknownError), List(apiTagUser, apiTagNewStyle), Some(List(canLockUser))) - lazy val lockUser: OBPEndpoint = { + lazy val lockUserByProviderAndUsername: OBPEndpoint = { case "users" :: provider :: username :: "locks" :: Nil JsonPost req => { cc => for { diff --git a/obp-api/src/main/scala/code/api/v5_1_0/OBPAPI5_1_0.scala b/obp-api/src/main/scala/code/api/v5_1_0/OBPAPI5_1_0.scala index 30e3fcd90..388e435b4 100644 --- a/obp-api/src/main/scala/code/api/v5_1_0/OBPAPI5_1_0.scala +++ b/obp-api/src/main/scala/code/api/v5_1_0/OBPAPI5_1_0.scala @@ -40,6 +40,7 @@ import code.api.v3_1_0.APIMethods310 import code.api.v4_0_0.APIMethods400 import code.api.v5_0_0.{APIMethods500, OBPAPI5_0_0} import code.util.Helper.MdcLoggable +import com.github.dwickern.macros.NameOf.nameOf import com.openbankproject.commons.util.{ApiVersion, ApiVersionStatus} import net.liftweb.common.{Box, Full} import net.liftweb.http.{LiftResponse, PlainTextResponse} @@ -71,11 +72,18 @@ object OBPAPI5_1_0 extends OBPRestHelper // e.g getEndpoints(Implementations5_0_0) -- List(Implementations5_0_0.genericEndpoint, Implementations5_0_0.root) val endpointsOf5_1_0 = getEndpoints(Implementations5_1_0) + lazy val bugEndpoints = // these endpoints miss Provider parameter in the URL, we introduce new ones in V510. + nameOf(Implementations3_0_0.getUserByUsername) :: + nameOf(Implementations3_1_0.getBadLoginStatus) :: + nameOf(Implementations3_1_0.unlockUser) :: + nameOf(Implementations4_0_0.lockUser) :: + Nil + // if old version ResourceDoc objects have the same name endpoint with new version, omit old version ResourceDoc. def allResourceDocs = collectResourceDocs( OBPAPI5_0_0.allResourceDocs, Implementations5_1_0.resourceDocs - ) + ).filterNot(it => it.partialFunctionName.matches(bugEndpoints.mkString("|"))) // all endpoints private val endpoints: List[OBPEndpoint] = OBPAPI5_0_0.routes ++ endpointsOf5_1_0 diff --git a/obp-api/src/test/scala/code/api/v5_1_0/LockUserTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/LockUserTest.scala index f2a78ee7e..b49ae658b 100644 --- a/obp-api/src/test/scala/code/api/v5_1_0/LockUserTest.scala +++ b/obp-api/src/test/scala/code/api/v5_1_0/LockUserTest.scala @@ -24,9 +24,9 @@ class LockUserTest 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.lockUser)) - object ApiEndpoint2 extends Tag(nameOf(Implementations5_1_0.getBadLoginStatus)) - object ApiEndpoint3 extends Tag(nameOf(Implementations5_1_0.unlockUser)) + object ApiEndpoint1 extends Tag(nameOf(Implementations5_1_0.lockUserByProviderAndUsername)) + object ApiEndpoint2 extends Tag(nameOf(Implementations5_1_0.getUserLockStatus)) + object ApiEndpoint3 extends Tag(nameOf(Implementations5_1_0.unlockUserByProviderAndUsername)) feature(s"test $ApiEndpoint1,$ApiEndpoint2, $ApiEndpoint3, version $VersionOfApi - Unauthorized access") { diff --git a/obp-api/src/test/scala/code/api/v5_1_0/UserTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/UserTest.scala index 980430215..6a9d1c702 100644 --- a/obp-api/src/test/scala/code/api/v5_1_0/UserTest.scala +++ b/obp-api/src/test/scala/code/api/v5_1_0/UserTest.scala @@ -25,7 +25,7 @@ class UserTest 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.getUserByUsername)) + object ApiEndpoint1 extends Tag(nameOf(Implementations5_1_0.getUserByProviderAndUsername)) feature(s"test $ApiEndpoint1 version $VersionOfApi - Unauthorized access") { scenario("We will call the endpoint without user credentials", ApiEndpoint1, VersionOfApi) {