mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 14:46:49 +00:00
feature/Filter scanned API versions based on api_enabled_versions and api_disabled_versions props; add APIUtil.versionIsAllowed check to getScannedApiVersions endpoint and comprehensive test coverage for version filtering
This commit is contained in:
parent
d9de077248
commit
fc4585ea7d
@ -5,16 +5,10 @@ import code.DynamicEndpoint.DynamicEndpointSwagger
|
||||
import code.accountattribute.AccountAttributeX
|
||||
import code.api.Constant._
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{
|
||||
jsonDynamicResourceDoc,
|
||||
_
|
||||
}
|
||||
import code.api.dynamic.endpoint.helper.practise.{
|
||||
DynamicEndpointCodeGenerator,
|
||||
PractiseEndpoint
|
||||
}
|
||||
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{jsonDynamicResourceDoc, _}
|
||||
import code.api.dynamic.endpoint.helper.practise.{DynamicEndpointCodeGenerator, PractiseEndpoint}
|
||||
import code.api.dynamic.endpoint.helper.{CompiledObjects, DynamicEndpointHelper}
|
||||
import code.api.dynamic.entity.helper.{DynamicEntityHelper, DynamicEntityInfo}
|
||||
import code.api.dynamic.entity.helper.DynamicEntityInfo
|
||||
import code.api.util.APIUtil.{fullBoxOrException, _}
|
||||
import code.api.util.ApiRole._
|
||||
import code.api.util.ApiTag._
|
||||
@ -31,20 +25,11 @@ import code.api.util.migration.Migration
|
||||
import code.api.util.newstyle.AttributeDefinition._
|
||||
import code.api.util.newstyle.Consumer._
|
||||
import code.api.util.newstyle.UserCustomerLinkNewStyle.getUserCustomerLinks
|
||||
import code.api.util.newstyle.{
|
||||
BalanceNewStyle,
|
||||
UserCustomerLinkNewStyle,
|
||||
ViewNewStyle
|
||||
}
|
||||
import code.api.util.newstyle.{BalanceNewStyle, UserCustomerLinkNewStyle, ViewNewStyle}
|
||||
import code.api.v1_2_1.{JSONFactory, PostTransactionTagJSON}
|
||||
import code.api.v1_4_0.JSONFactory1_4_0
|
||||
import code.api.v2_0_0.OBPAPI2_0_0.Implementations2_0_0
|
||||
import code.api.v2_0_0.{
|
||||
CreateEntitlementJSON,
|
||||
CreateUserCustomerLinkJson,
|
||||
EntitlementJSONs,
|
||||
JSONFactory200
|
||||
}
|
||||
import code.api.v2_0_0.{CreateEntitlementJSON, CreateUserCustomerLinkJson, EntitlementJSONs, JSONFactory200}
|
||||
import code.api.v2_1_0._
|
||||
import code.api.v3_0_0.{CreateScopeJson, JSONFactory300}
|
||||
import code.api.v3_1_0._
|
||||
@ -54,15 +39,10 @@ import code.apicollection.MappedApiCollectionsProvider
|
||||
import code.apicollectionendpoint.MappedApiCollectionEndpointsProvider
|
||||
import code.authtypevalidation.JsonAuthTypeValidation
|
||||
import code.bankconnectors.LocalMappedConnectorInternal._
|
||||
import code.bankconnectors.{
|
||||
Connector,
|
||||
DynamicConnector,
|
||||
InternalConnector,
|
||||
LocalMappedConnectorInternal
|
||||
}
|
||||
import code.bankconnectors.{Connector, DynamicConnector, InternalConnector, LocalMappedConnectorInternal}
|
||||
import code.connectormethod.{JsonConnectorMethod, JsonConnectorMethodMethodBody}
|
||||
import code.consent.{ConsentStatus, Consents}
|
||||
import code.dynamicEntity.{DynamicEntityCommons, ReferenceType}
|
||||
import code.dynamicEntity.DynamicEntityCommons
|
||||
import code.dynamicMessageDoc.JsonDynamicMessageDoc
|
||||
import code.dynamicResourceDoc.JsonDynamicResourceDoc
|
||||
import code.endpointMapping.EndpointMappingCommons
|
||||
@ -82,10 +62,7 @@ import code.util.Helper.{MdcLoggable, ObpS, SILENCE_IS_GOLDEN, booleanToFuture}
|
||||
import code.util.{Helper, JsonSchemaUtil}
|
||||
import code.validation.JsonValidation
|
||||
import code.views.Views
|
||||
import code.webhook.{
|
||||
BankAccountNotificationWebhookTrait,
|
||||
SystemAccountNotificationWebhookTrait
|
||||
}
|
||||
import code.webhook.{BankAccountNotificationWebhookTrait, SystemAccountNotificationWebhookTrait}
|
||||
import code.webuiprops.MappedWebUiPropsProvider.getWebUiPropsValue
|
||||
import com.github.dwickern.macros.NameOf.nameOf
|
||||
import com.networknt.schema.ValidationMessage
|
||||
@ -110,10 +87,10 @@ import java.net.URLEncoder
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util
|
||||
import java.util.{Calendar, Date}
|
||||
import scala.collection.JavaConverters._
|
||||
import scala.collection.immutable.{List, Nil}
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
import scala.concurrent.Future
|
||||
import scala.collection.JavaConverters._
|
||||
|
||||
trait APIMethods400 extends MdcLoggable {
|
||||
self: RestHelper =>
|
||||
@ -11796,10 +11773,10 @@ trait APIMethods400 extends MdcLoggable {
|
||||
Future {
|
||||
val versions: List[ScannedApiVersion] =
|
||||
ApiVersion.allScannedApiVersion.asScala.toList.filter { version =>
|
||||
version.urlPrefix.trim.nonEmpty
|
||||
version.urlPrefix.trim.nonEmpty && APIUtil.versionIsAllowed(version)
|
||||
}
|
||||
(
|
||||
ListResult("scanned_api_versions", versions),
|
||||
ListResult("scanned_api_versions", versions),
|
||||
HttpCode.`200`(cc.callContext)
|
||||
)
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ TESOBE (http://www.tesobe.com/)
|
||||
*/
|
||||
package code.api.v4_0_0
|
||||
|
||||
import code.api.util.APIUtil
|
||||
import code.api.util.ApiRole._
|
||||
import code.api.v4_0_0.APIMethods400.Implementations4_0_0
|
||||
import code.entitlement.Entitlement
|
||||
@ -46,8 +47,63 @@ class GetScannedApiVersionsTest extends V400ServerSetup {
|
||||
object VersionOfApi extends Tag(ApiVersion.v4_0_0.toString)
|
||||
object ApiEndpoint extends Tag(nameOf(Implementations4_0_0.getScannedApiVersions))
|
||||
|
||||
feature("test props-api_disabled_versions, Get all scanned API versions should works") {
|
||||
scenario("We get all the scanned API versions with disabled versions filtered out", ApiEndpoint, VersionOfApi) {
|
||||
// api_disabled_versions=[OBPv3.0.0,BGv1.3]
|
||||
setPropsValues("api_disabled_versions"-> "[OBPv3.0.0,BGv1.3]")
|
||||
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanCreateSystemLevelDynamicEntity.toString)
|
||||
When("We make a request v4.0.0")
|
||||
val request = (v4_0_0_Request / "api" / "versions").GET
|
||||
|
||||
val response = makeGetRequest(request)
|
||||
Then("We should get a 200")
|
||||
response.code should equal(200)
|
||||
|
||||
val listResult = response.body.extract[ListResult[List[ScannedApiVersion]]]
|
||||
val responseApiVersions = listResult.results
|
||||
val scannedApiVersions = ApiVersion.allScannedApiVersion.asScala.toList.filter { version =>
|
||||
version.urlPrefix.trim.nonEmpty && APIUtil.versionIsAllowed(version)
|
||||
}
|
||||
|
||||
responseApiVersions should equal(scannedApiVersions)
|
||||
|
||||
// Verify that disabled versions are not included
|
||||
responseApiVersions.exists(_.fullyQualifiedVersion == "OBPv3.0.0") should equal(false)
|
||||
responseApiVersions.exists(_.fullyQualifiedVersion == "BGv1.3") should equal(false)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
feature("test props-api_enabled_versions, Get all scanned API versions should works") {
|
||||
scenario("We get all the scanned API versions with disabled versions filtered out", ApiEndpoint, VersionOfApi) {
|
||||
// api_enabled_versions=[OBPv2.2.0,OBPv3.0.0,UKv2.0]
|
||||
setPropsValues("api_enabled_versions"-> "[OBPv2.2.0,OBPv3.0.0,UKv2.0]")
|
||||
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanCreateSystemLevelDynamicEntity.toString)
|
||||
When("We make a request v4.0.0")
|
||||
val request = (v4_0_0_Request / "api" / "versions").GET
|
||||
|
||||
val response = makeGetRequest(request)
|
||||
Then("We should get a 200")
|
||||
response.code should equal(200)
|
||||
|
||||
val listResult = response.body.extract[ListResult[List[ScannedApiVersion]]]
|
||||
val responseApiVersions = listResult.results
|
||||
val scannedApiVersions = ApiVersion.allScannedApiVersion.asScala.toList.filter { version =>
|
||||
version.urlPrefix.trim.nonEmpty && APIUtil.versionIsAllowed(version)
|
||||
}
|
||||
|
||||
responseApiVersions should equal(scannedApiVersions)
|
||||
|
||||
// Verify that disabled versions are not included
|
||||
responseApiVersions.exists(_.fullyQualifiedVersion == "OBPv2.2.0") should equal(true)
|
||||
responseApiVersions.exists(_.fullyQualifiedVersion == "OBPv3.0.0") should equal(true)
|
||||
responseApiVersions.exists(_.fullyQualifiedVersion == "UKv2.0") should equal(true)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
feature("Get all scanned API versions should works") {
|
||||
|
||||
scenario("We get all the scanned API versions", ApiEndpoint, VersionOfApi) {
|
||||
Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanCreateSystemLevelDynamicEntity.toString)
|
||||
When("We make a request v4.0.0")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user