feature/introduce CanGetCustomerOverview and CanGetCustomerOverviewFlat

This commit is contained in:
Marko Milić 2022-10-11 11:29:21 +02:00
parent ea38c355f5
commit ee4053f561
3 changed files with 20 additions and 22 deletions

View File

@ -96,6 +96,12 @@ object ApiRole {
case class CanGetCustomer(requiresBankId: Boolean = true) extends ApiRole
lazy val canGetCustomer = CanGetCustomer()
case class CanGetCustomerOverview(requiresBankId: Boolean = true) extends ApiRole
lazy val canGetCustomerOverview = CanGetCustomerOverview()
case class CanGetCustomerOverviewFlat(requiresBankId: Boolean = true) extends ApiRole
lazy val canGetCustomerOverviewFlat = CanGetCustomerOverviewFlat()
case class CanCreateCustomer(requiresBankId: Boolean = true) extends ApiRole
lazy val canCreateCustomer = CanCreateCustomer()

View File

@ -1040,21 +1040,17 @@ trait APIMethods500 {
UnknownError
),
List(apiTagCustomer, apiTagKyc ,apiTagNewStyle),
Some(List(canGetCustomer))
Some(List(canGetCustomerOverview))
)
lazy val getCustomerOverview : OBPEndpoint = {
case "banks" :: BankId(bankId) :: "customers" :: "customer-number-query" :: "overview" :: Nil JsonPost json -> req => {
cc =>
for {
(Full(u), callContext) <- authenticatedAccess(cc)
(bank, callContext) <- NewStyle.function.getBank(bankId, callContext)
_ <- NewStyle.function.hasEntitlement(bankId.value, u.userId, canGetCustomer, callContext)
failMsg = s"$InvalidJsonFormat The Json body should be the $PostCustomerOverviewJsonV500 "
postedData <- NewStyle.function.tryons(failMsg, 400, callContext) {
postedData <- NewStyle.function.tryons(s"$InvalidJsonFormat The Json body should be the $PostCustomerOverviewJsonV500 ", 400, cc.callContext) {
json.extract[PostCustomerOverviewJsonV500]
}
(customer, callContext) <- NewStyle.function.getCustomerByCustomerNumber(postedData.customer_number, bank.bankId, callContext)
(customer, callContext) <- NewStyle.function.getCustomerByCustomerNumber(postedData.customer_number, bankId, cc.callContext)
(customerAttributes, callContext) <- NewStyle.function.getCustomerAttributes(
bankId,
CustomerId(customer.customerId),
@ -1093,21 +1089,17 @@ trait APIMethods500 {
UnknownError
),
List(apiTagCustomer, apiTagKyc ,apiTagNewStyle),
Some(List(canGetCustomer))
Some(List(canGetCustomerOverviewFlat))
)
lazy val getCustomerOverviewFlat : OBPEndpoint = {
case "banks" :: BankId(bankId) :: "customers" :: "customer-number-query" :: "overview-flat" :: Nil JsonPost json -> req => {
cc =>
for {
(Full(u), callContext) <- authenticatedAccess(cc)
(bank, callContext) <- NewStyle.function.getBank(bankId, callContext)
_ <- NewStyle.function.hasEntitlement(bankId.value, u.userId, canGetCustomer, callContext)
failMsg = s"$InvalidJsonFormat The Json body should be the $PostCustomerOverviewJsonV500 "
postedData <- NewStyle.function.tryons(failMsg, 400, callContext) {
postedData <- NewStyle.function.tryons(s"$InvalidJsonFormat The Json body should be the $PostCustomerOverviewJsonV500 ", 400, cc.callContext) {
json.extract[PostCustomerOverviewJsonV500]
}
(customer, callContext) <- NewStyle.function.getCustomerByCustomerNumber(postedData.customer_number, bank.bankId, callContext)
(customer, callContext) <- NewStyle.function.getCustomerByCustomerNumber(postedData.customer_number, bankId, cc.callContext)
(customerAttributes, callContext) <- NewStyle.function.getCustomerAttributes(
bankId,
CustomerId(customer.customerId),

View File

@ -87,13 +87,13 @@ class CustomerOverviewTest extends V500ServerSetup {
val response = makePostRequest(request, write(getCustomerJson))
Then("We should get a 403")
response.code should equal(403)
And("error should be " + canGetCustomer)
And("error should be " + canGetCustomerOverview)
val errorMessage = response.body.extract[ErrorMessage].message
errorMessage contains (UserHasMissingRoles) should be (true)
errorMessage contains (canGetCustomer.toString()) should be (true)
errorMessage contains (canGetCustomerOverview.toString()) should be (true)
}
scenario(s"We will call the endpoint $ApiEndpoint1 with a user credentials and a proper role", ApiEndpoint1, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomerOverview.toString)
When(s"We make a request $VersionOfApi")
val request = (v5_0_0_Request / "banks" / bankId / "customers" / "customer-number-query" / "overview").POST <@(user1)
val response = makePostRequest(request, write(getCustomerJson))
@ -106,7 +106,7 @@ class CustomerOverviewTest extends V500ServerSetup {
val legalName = "Evelin Doe"
val mobileNumber = "+44 123 456"
val customer: CustomerJsonV310 = createCustomerEndpointV500(bankId, legalName, mobileNumber)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomerOverview.toString)
When(s"We make a request $VersionOfApi")
val request = (v5_0_0_Request / "banks" / bankId / "customers" / "customer-number-query" / "overview").POST <@(user1)
val response = makePostRequest(request, write(PostCustomerOverviewJsonV500(customer.customer_number)))
@ -140,13 +140,13 @@ class CustomerOverviewTest extends V500ServerSetup {
val response = makePostRequest(request, write(getCustomerJson))
Then("We should get a 403")
response.code should equal(403)
And("error should be " + canGetCustomer)
And("error should be " + canGetCustomerOverviewFlat)
val errorMessage = response.body.extract[ErrorMessage].message
errorMessage contains (UserHasMissingRoles) should be (true)
errorMessage contains (canGetCustomer.toString()) should be (true)
errorMessage contains (canGetCustomerOverviewFlat.toString()) should be (true)
}
scenario(s"We will call the endpoint $ApiEndpoint2 with a user credentials and a proper role", ApiEndpoint1, VersionOfApi) {
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomerOverviewFlat.toString)
When(s"We make a request $VersionOfApi")
val request = (v5_0_0_Request / "banks" / bankId / "customers" / "customer-number-query" / "overview-flat").POST <@(user1)
val response = makePostRequest(request, write(getCustomerJson))
@ -159,7 +159,7 @@ class CustomerOverviewTest extends V500ServerSetup {
val legalName = "Evelin Doe"
val mobileNumber = "+44 123 456"
val customer: CustomerJsonV310 = createCustomerEndpointV500(bankId, legalName, mobileNumber)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomer.toString)
Entitlement.entitlement.vend.addEntitlement(bankId, resourceUser1.userId, CanGetCustomerOverviewFlat.toString)
When(s"We make a request $VersionOfApi")
val request = (v5_0_0_Request / "banks" / bankId / "customers" / "customer-number-query" / "overview-flat").POST <@(user1)
val response = makePostRequest(request, write(PostCustomerOverviewJsonV500(customer.customer_number)))