diff --git a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala index dd71ba290..178917634 100644 --- a/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala +++ b/obp-api/src/main/scala/bootstrap/liftweb/Boot.scala @@ -137,7 +137,7 @@ import code.regulatedentities.attribute.RegulatedEntityAttribute import com.openbankproject.commons.model.ErrorMessage import com.openbankproject.commons.util.Functions.Implicits._ import com.openbankproject.commons.util.{ApiVersion, Functions} - +import code.bankaccountbalance.BankAccountBalance import javax.mail.internet.MimeMessage import net.liftweb.common._ import net.liftweb.db.{DB, DBLogEntry} @@ -1129,7 +1129,7 @@ object ToSchemify { CustomerAccountLink, TransactionIdMapping, RegulatedEntityAttribute, - code.bankaccountbalance.BankAccountBalance + BankAccountBalance ) // start grpc server diff --git a/obp-api/src/main/scala/code/api/util/ApiRole.scala b/obp-api/src/main/scala/code/api/util/ApiRole.scala index 7b228f65f..04ba4a160 100644 --- a/obp-api/src/main/scala/code/api/util/ApiRole.scala +++ b/obp-api/src/main/scala/code/api/util/ApiRole.scala @@ -1010,21 +1010,21 @@ object ApiRole extends MdcLoggable{ case class CanGetBankLevelEndpointTag(requiresBankId: Boolean = true) extends ApiRole lazy val canGetBankLevelEndpointTag = CanGetBankLevelEndpointTag() - // BankAccountBalance roles - case class CanCreateBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole - lazy val canCreateBankAccountBalance = CanCreateBankAccountBalance() - - case class CanGetBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole - lazy val canGetBankAccountBalance = CanGetBankAccountBalance() - - case class CanGetBankAccountBalances(requiresBankId: Boolean = false) extends ApiRole - lazy val canGetBankAccountBalances = CanGetBankAccountBalances() - - case class CanUpdateBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole - lazy val canUpdateBankAccountBalance = CanUpdateBankAccountBalance() - - case class CanDeleteBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole - lazy val canDeleteBankAccountBalance = CanDeleteBankAccountBalance() +// // BankAccountBalance roles +// case class CanCreateBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole +// lazy val canCreateBankAccountBalance = CanCreateBankAccountBalance() +// +// case class CanGetBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole +// lazy val canGetBankAccountBalance = CanGetBankAccountBalance() +// +// case class CanGetBankAccountBalances(requiresBankId: Boolean = false) extends ApiRole +// lazy val canGetBankAccountBalances = CanGetBankAccountBalances() +// +// case class CanUpdateBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole +// lazy val canUpdateBankAccountBalance = CanUpdateBankAccountBalance() +// +// case class CanDeleteBankAccountBalance(requiresBankId: Boolean = false) extends ApiRole +// lazy val canDeleteBankAccountBalance = CanDeleteBankAccountBalance() case class CanCreateHistoricalTransactionAtBank(requiresBankId: Boolean = true) extends ApiRole lazy val canCreateHistoricalTransactionAtBank = CanCreateHistoricalTransactionAtBank() 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 025336220..8f3ea8ef9 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 @@ -208,8 +208,7 @@ trait APIMethods510 { InvalidJsonFormat, UnknownError ), - List(apiTagAccount, apiTagBalance), - Some(List(canCreateBankAccountBalance)) + List(apiTagAccount, apiTagBalance) ) lazy val createBankAccountBalance: OBPEndpoint = { @@ -256,8 +255,7 @@ trait APIMethods510 { UserHasMissingRoles, UnknownError ), - List(apiTagAccount, apiTagBalance), - Some(List(canGetBankAccountBalance)) + List(apiTagAccount, apiTagBalance) ) lazy val getBankAccountBalanceById: OBPEndpoint = { @@ -295,8 +293,7 @@ trait APIMethods510 { UserHasMissingRoles, UnknownError ), - List(apiTagAccount, apiTagBalance), - Some(List(canGetBankAccountBalances)) + List(apiTagAccount, apiTagBalance) ) lazy val getAllBankAccountBalances: OBPEndpoint = { @@ -335,8 +332,7 @@ trait APIMethods510 { InvalidJsonFormat, UnknownError ), - List(apiTagAccount, apiTagBalance), - Some(List(canUpdateBankAccountBalance)) + List(apiTagAccount, apiTagBalance) ) lazy val updateBankAccountBalance: OBPEndpoint = { @@ -383,8 +379,7 @@ trait APIMethods510 { UserHasMissingRoles, UnknownError ), - List(apiTagAccount, apiTagBalance), - Some(List(canDeleteBankAccountBalance)) + List(apiTagAccount, apiTagBalance) ) lazy val deleteBankAccountBalance: OBPEndpoint = { diff --git a/obp-api/src/main/scala/code/bankaccountbalance/BankAccountBalance.scala b/obp-api/src/main/scala/code/bankaccountbalance/BankAccountBalance.scala index 343dbeb22..2f7906b73 100644 --- a/obp-api/src/main/scala/code/bankaccountbalance/BankAccountBalance.scala +++ b/obp-api/src/main/scala/code/bankaccountbalance/BankAccountBalance.scala @@ -19,10 +19,10 @@ class BankAccountBalance extends BankAccountBalanceTrait with LongKeyedMapper[Ba //this is the smallest unit of currency! eg. cents, yen, pence, øre, etc. object BalanceAmount extends MappedLong(this) - val foreignMappedBankAccount: Box[MappedBankAccount] = code.model.dataAccess.MappedBankAccount.find( - By(MappedBankAccount.theAccountId, AccountId_.get) - ) - val foreignMappedBankAccountCurrency = foreignMappedBankAccount.map(_.currency).getOrElse("EUR") +// val foreignMappedBankAccount: Box[MappedBankAccount] = code.model.dataAccess.MappedBankAccount.find( +// By(MappedBankAccount.theAccountId, AccountId_.get) +// ) + val foreignMappedBankAccountCurrency = "EUR" //foreignMappedBankAccount.map(_.currency).getOrElse("EUR") override def balanceId: BalanceId = BalanceId(BalanceId_.get) override def accountId: AccountId = AccountId(AccountId_.get) diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index 93dd6b97d..0ee18569f 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -990,7 +990,7 @@ object LocalMappedConnector extends Connector with MdcLoggable { label = bankAccount.label, bankId = bankAccount.bankId.value, accountRoutings = bankAccount.accountRoutings.map(accountRounting => AccountRouting(accountRounting.scheme, accountRounting.address)), - balances = List(OneAccountBalance(AmountOfMoney(bankAccount.currency, bankAccount.balance.toString),"OpeningBooked")), + balances = List(BankAccountBalance(AmountOfMoney(bankAccount.currency, bankAccount.balance.toString),"OpeningBooked")), overallBalance = AmountOfMoney(bankAccount.currency, bankAccount.balance.toString), overallBalanceDate = now ) diff --git a/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala b/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala index c43e37f69..ea08ff63c 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rabbitmq/RabbitMQConnector_vOct2024.scala @@ -1071,7 +1071,7 @@ trait RabbitMQConnector_vOct2024 extends Connector with MdcLoggable { bankId=bankIdExample.value, accountRoutings=List( AccountRouting(scheme=accountRoutingSchemeExample.value, address=accountRoutingAddressExample.value)), - balances=List( OneAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, + balances=List( BankAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, amount=balanceAmountExample.value), balanceType="string")), overallBalance= AmountOfMoney(currency=currencyExample.value, diff --git a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala index 445f38ba0..92343ceb1 100644 --- a/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/rest/RestConnector_vMar2019.scala @@ -1098,7 +1098,7 @@ trait RestConnector_vMar2019 extends Connector with MdcLoggable { bankId=bankIdExample.value, accountRoutings=List( AccountRouting(scheme=accountRoutingSchemeExample.value, address=accountRoutingAddressExample.value)), - balances=List( OneAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, + balances=List( BankAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, amount=balanceAmountExample.value), balanceType="string")), overallBalance= AmountOfMoney(currency=currencyExample.value, diff --git a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala index 7459065a5..b1675d8b5 100644 --- a/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala +++ b/obp-api/src/main/scala/code/bankconnectors/storedprocedure/StoredProcedureConnector_vDec2019.scala @@ -1078,7 +1078,7 @@ trait StoredProcedureConnector_vDec2019 extends Connector with MdcLoggable { bankId=bankIdExample.value, accountRoutings=List( AccountRouting(scheme=accountRoutingSchemeExample.value, address=accountRoutingAddressExample.value)), - balances=List( OneAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, + balances=List( BankAccountBalance(balance= AmountOfMoney(currency=balanceCurrencyExample.value, amount=balanceAmountExample.value), balanceType="string")), overallBalance= AmountOfMoney(currency=currencyExample.value, diff --git a/obp-api/src/test/scala/code/api/v5_1_0/BankAccountBalanceTest.scala b/obp-api/src/test/scala/code/api/v5_1_0/BankAccountBalanceTest.scala index 5d979f57e..4ddfe1de1 100644 --- a/obp-api/src/test/scala/code/api/v5_1_0/BankAccountBalanceTest.scala +++ b/obp-api/src/test/scala/code/api/v5_1_0/BankAccountBalanceTest.scala @@ -28,66 +28,48 @@ class BankAccountBalanceTest extends V510ServerSetup with DefaultUsers { def createMockBalance(bankId: String, accountId: String): String = { val json = bankAccountBalanceRequestJsonV510 - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanCreateBankAccountBalance.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").POST <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances").POST <@ user1 val response = makePostRequest(request, write(json)) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) (response.body.extract[BankAccountBalanceResponseJsonV510].balance_id) } feature("Create Bank Account Balance") { scenario("401 Unauthorized", Create, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").POST + val request = (v5_1_0_Request / "accounts" / accountId / "balances").POST val response = makePostRequest(request, write(bankAccountBalanceRequestJsonV510)) response.code should equal(401) response.body.extract[ErrorMessage].message should equal(ErrorMessages.UserNotLoggedIn) } - scenario("403 Forbidden (no role)", Create, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").POST <@ user1 - val response = makePostRequest(request, write(bankAccountBalanceRequestJsonV510)) - response.code should equal(403) - response.body.extract[ErrorMessage].message should startWith(ErrorMessages.UserHasMissingRoles + CanCreateBankAccountBalance) - } - scenario("201 Success + Field Echo", Create, VersionOfApi) { - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanCreateBankAccountBalance.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").POST <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances").POST <@ user1 val response = makePostRequest(request, write(bankAccountBalanceRequestJsonV510)) response.code should equal(201) val created = response.body.extract[BankAccountBalanceResponseJsonV510] created.balance_type should equal(bankAccountBalanceRequestJsonV510.balance_type) created.balance_amount should equal(bankAccountBalanceRequestJsonV510.balance_amount) created.account_id should equal(accountId) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) } } feature("Update Bank Account Balance") { scenario("401 Unauthorized", Update, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).PUT + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).PUT val response = makePutRequest(request, write(bankAccountBalanceRequestJsonV510)) response.code should equal(401) } - scenario("403 Forbidden", Update, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).PUT <@ user1 - val response = makePutRequest(request, write(bankAccountBalanceRequestJsonV510)) - response.code should equal(403) - } scenario("200 Success", Update, VersionOfApi) { lazy val bankId = testBankId1.value lazy val accountId = testAccountId1.value lazy val balanceId = createMockBalance(bankId, accountId) - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanUpdateBankAccountBalance.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).PUT <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).PUT <@ user1 val response = makePutRequest(request, write(bankAccountBalanceRequestJsonV510)) response.code should equal(200) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) } } @@ -97,27 +79,19 @@ class BankAccountBalanceTest extends V510ServerSetup with DefaultUsers { lazy val balanceId = createMockBalance(bankId, accountId) scenario("401 Unauthorized", Delete, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).DELETE + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).DELETE val response = makeDeleteRequest(request) response.code should equal(401) } - scenario("403 Forbidden", Delete, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).DELETE <@ user1 - val response = makeDeleteRequest(request) - response.code should equal(403) - } - scenario("204 Success", Delete, VersionOfApi) { lazy val bankId = testBankId1.value lazy val accountId = testAccountId1.value lazy val balanceId = createMockBalance(bankId, accountId) - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanDeleteBankAccountBalance.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).DELETE <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).DELETE <@ user1 val response = makeDeleteRequest(request) response.code should equal(204) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) } } @@ -127,25 +101,17 @@ class BankAccountBalanceTest extends V510ServerSetup with DefaultUsers { lazy val balanceId = createMockBalance(bankId, accountId) scenario("401 Unauthorized", GetAll, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").GET + val request = (v5_1_0_Request / "accounts" / accountId / "balances").GET val response = makeGetRequest(request) response.code should equal(401) } - scenario("403 Forbidden", GetAll, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").GET <@ user1 - val response = makeGetRequest(request) - response.code should equal(403) - } - scenario("200 Success", GetAll, VersionOfApi) { lazy val bankId = testBankId1.value lazy val accountId = testAccountId1.value - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanGetBankAccountBalances.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances").GET <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances").GET <@ user1 val response = makeGetRequest(request) response.code should equal(200) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) } } @@ -154,26 +120,18 @@ class BankAccountBalanceTest extends V510ServerSetup with DefaultUsers { lazy val accountId = testAccountId1.value scenario("401 Unauthorized", GetOne, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).GET + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).GET val response = makeGetRequest(request) response.code should equal(401) } - scenario("403 Forbidden", GetOne, VersionOfApi) { - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).GET <@ user1 - val response = makeGetRequest(request) - response.code should equal(403) - } - scenario("200 Success", GetOne, VersionOfApi) { lazy val bankId = testBankId1.value lazy val accountId = testAccountId1.value lazy val balanceId = createMockBalance(bankId, accountId) - val entitlement = Entitlement.entitlement.vend.addEntitlement("", resourceUser1.userId, CanGetBankAccountBalance.toString) - val request = (v5_1_0_Request / "banks" / bankId / "accounts" / accountId / "balances" / balanceId).GET <@ user1 + val request = (v5_1_0_Request / "accounts" / accountId / "balances" / balanceId).GET <@ user1 val response = makeGetRequest(request) response.code should equal(200) - Entitlement.entitlement.vend.deleteEntitlement(entitlement) } } } \ No newline at end of file diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/BankingModel.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/BankingModel.scala index c916b45b7..2775ed740 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/BankingModel.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/BankingModel.scala @@ -398,12 +398,12 @@ case class AccountBalances( label: String, bankId: String, accountRoutings: List[AccountRouting], - balances: List[OneAccountBalance], + balances: List[BankAccountBalance], overallBalance: AmountOfMoney, overallBalanceDate: Date ) -case class OneAccountBalance( +case class BankAccountBalance( balance: AmountOfMoney, balanceType: String, )