From 9f616f465272116e0e030b3f901265818198788d Mon Sep 17 00:00:00 2001 From: hongwei Date: Tue, 14 Feb 2023 16:31:08 +0100 Subject: [PATCH] test/added the tests for MetricTest.scala --- .../scala/code/api/v5_1_0/MetricTest.scala | 365 ++++++++++++++++++ 1 file changed, 365 insertions(+) create mode 100644 obp-api/src/test/scala/code/api/v5_1_0/MetricTest.scala diff --git a/obp-api/src/test/scala/code/api/v5_1_0/MetricTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/MetricTest.scala new file mode 100644 index 000000000..a3a9c96ba --- /dev/null +++ b/obp-api/src/test/scala/code/api/v5_1_0/MetricTest.scala @@ -0,0 +1,365 @@ +package code.api.v5_1_0 + +import code.api.util.APIUtil.OAuth._ +import code.api.util.ApiRole.{CanReadAggregateMetrics} +import code.api.util.ErrorMessages.{UserHasMissingRoles, UserNotLoggedIn} +import code.api.v3_0_0.AggregateMetricJSON +import code.api.v5_1_0.OBPAPI5_1_0.Implementations5_1_0 +import code.entitlement.Entitlement +import com.github.dwickern.macros.NameOf.nameOf +import com.openbankproject.commons.model.ErrorMessage +import com.openbankproject.commons.util.ApiVersion +import org.scalatest.Tag + +class MetricTest extends V510ServerSetup { + /** + * Test tags + * Example: To run tests with tag "getPermissions": + * mvn test -D tagsToInclude + * + * 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.getAggregateMetrics)) + + feature(s"test $ApiEndpoint1 version $VersionOfApi - Unauthorized access") { + scenario("We will call the endpoint without user credentials", ApiEndpoint1, VersionOfApi) { + When("We make a request v5.1.0") + val request = (v5_1_0_Request / "management" / "aggregate-metrics").GET + val response = makeGetRequest(request) + Then("We should get a 401") + response.code should equal(401) + response.body.extract[ErrorMessage].message should equal(UserNotLoggedIn) + } + } + + feature(s"test $ApiEndpoint1 version $VersionOfApi - Authorized access") { + scenario("We will call the endpoint with user credentials but without a proper entitlement", ApiEndpoint1, VersionOfApi) { + When("We make a request v5.1.0") + val request = (v5_1_0_Request / "management" / "aggregate-metrics").GET <@(user1) + val response = makeGetRequest(request) + Then("error should be " + UserHasMissingRoles + CanReadAggregateMetrics) + response.code should equal(403) + response.body.extract[ErrorMessage].message should be (UserHasMissingRoles + CanReadAggregateMetrics) + } + } + + feature(s"test $ApiEndpoint1 version $VersionOfApi - Authorized access") { + scenario("We will call the endpoint with user credentials and a proper entitlement", ApiEndpoint1, VersionOfApi) { + setPropsValues("write_metrics" -> "true") + Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanReadAggregateMetrics.toString) + val requestRoot = (v5_1_0_Request / "users" / "current" ).GET <@ (user1) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + val requestBanks = (v5_1_0_Request / "banks" ).GET <@ (user1) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + + { + val requestRoot = (v5_1_0_Request / "users" / "current").GET <@ (user2) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + val requestBanks = (v5_1_0_Request / "banks").GET <@ (user2) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + } + + { + val requestRoot = (v5_1_0_Request / "users" / "current").GET <@ (user3) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + makeGetRequest(requestRoot) + val requestBanks = (v5_1_0_Request / "banks").GET <@ (user3) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + makeGetRequest(requestBanks) + } + + When("We make a request v5.1.0") + val request = (v5_1_0_Request / "management" / "aggregate-metrics").GET<@(user1) < 25 shouldBe (true) + } + + { + Then("we test the url params") + val request2 = (v5_1_0_Request / "management" / "aggregate-metrics").GET <@ (user1) < (21) should be (true) + } + { + Then("we test the implemented_in_version params") + val request2 = (v5_1_0_Request / "management" / "aggregate-metrics").GET <@ (user1) < (21) should be (true) + } + { + Then("we test the verb params") + val request2 = (v5_1_0_Request / "management" / "aggregate-metrics").GET <@ (user1) < (0) shouldBe(true ) + } + + } + } + +} \ No newline at end of file