diff --git a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala index 367a32f3f..83b9c45e3 100644 --- a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala +++ b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala @@ -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) ) } diff --git a/obp-api/src/test/scala/code/api/v4_0_0/GetScannedApiVersionsTest.scala b/obp-api/src/test/scala/code/api/v4_0_0/GetScannedApiVersionsTest.scala index 14d90ec75..a87c0e36f 100644 --- a/obp-api/src/test/scala/code/api/v4_0_0/GetScannedApiVersionsTest.scala +++ b/obp-api/src/test/scala/code/api/v4_0_0/GetScannedApiVersionsTest.scala @@ -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")