This is an automated email from the ASF dual-hosted git repository.
Aman-Mittal pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/fineract-consumer-facing.git
from 55a9d6f Merge pull request #26 from edk12564/main
add bd14056 FINERACT-2654: Implement OpenAPI fineract client generation
add b68af32 FINERACT-2655: Implement Savings, Loans, Transfers with ABAC
add b936f81 - used constant token_hash instead of hardcoded string
add 78651e4 - added apache rat to fineract client mustache template
new 96d487b Merge pull request #27 from edk12564/main
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
consumer/Dockerfile | 2 +-
consumer/build.gradle | 67 ++++
consumer/compose.yaml | 6 +-
.gitignore => consumer/gradle.properties | 6 +-
.../api/AuthenticationCommandController.java | 5 +
.../service/AuthenticationCommandServiceImpl.java | 22 +-
.../infrastructure/configs/SecurityConfig.java | 3 +
.../clients/FineractClientIdentifiersClient.java | 33 --
.../fineractclient/spec/fineract.ignore} | 5 +-
.../fineractclient/spec/fineract.json | 1 +
.../fineractclient/templates/apiClient.mustache} | 15 +-
.../consumer/infrastructure/jwt/JwtClaims.java | 1 +
.../stepup/StepUpConstants.java} | 13 +-
.../infrastructure/stepup/StepUpTokenService.java | 97 ++++++
.../infrastructure/web/AccessPolicyEvaluator.java | 64 ++++
.../web/UserClientResolver.java} | 25 +-
.../loans/command/api/LoansCommandController.java | 160 +++++++++
.../data/ConfirmLoanChargePaymentCommand.java} | 13 +-
.../ConfirmLoanChargePaymentCommandRequest.java} | 10 +-
.../data/InitiateLoanChargePaymentCommand.java} | 9 +-
.../command/data/LoanApplicationCommandData.java} | 9 +-
.../LoanChargePaymentChallengeCommandData.java} | 8 +-
.../data/LoanChargePaymentCommandData.java} | 9 +-
.../command/data/LoanChargePaymentConstants.java} | 14 +-
.../data/ModifyLoanApplicationCommand.java} | 26 +-
.../data/ModifyLoanApplicationCommandRequest.java} | 56 ++-
.../data/SubmitLoanApplicationCommand.java} | 25 +-
.../data/SubmitLoanApplicationCommandRequest.java} | 56 ++-
.../data/WithdrawLoanApplicationCommand.java} | 9 +-
.../WithdrawLoanApplicationCommandRequest.java} | 11 +-
.../LoanApplicationInvalidException.java} | 16 +-
.../LoanChargePaymentInvalidException.java} | 16 +-
.../LoanChargePaymentNotFoundException.java} | 10 +-
.../LoanChargePaymentStepUpInvalidException.java} | 10 +-
...ChargePaymentUpstreamUnavailableException.java} | 10 +-
.../command/exception/LoanNotFoundException.java} | 10 +-
.../LoanUpstreamUnavailableException.java} | 10 +-
.../loans/command/service/LoansCommandService.java | 45 +++
.../command/service/LoansCommandServiceImpl.java | 289 ++++++++++++++++
.../loans/query/api/LoansQueryController.java | 133 +++++++
.../query/data/CalculateLoanScheduleQuery.java} | 25 +-
.../query/data/LoanAccountListItemQueryData.java} | 12 +-
.../query/data/LoanAccountQueryData.java} | 21 +-
.../data/LoanApplicationTemplateQueryData.java | 73 ++++
.../query/data/LoanChargeQueryData.java} | 16 +-
.../query/data/LoanGuarantorQueryData.java} | 11 +-
.../query/data/LoanProductOptionQueryData.java} | 8 +-
.../data/LoanSchedulePreviewQueryRequest.java} | 56 ++-
.../query/data/LoanScheduleQueryData.java} | 33 +-
.../query/data/LoanTransactionQueryData.java} | 16 +-
.../query/exception/LoanNotFoundException.java} | 10 +-
.../exception/LoanProductNotFoundException.java} | 10 +-
.../LoanSchedulePreviewInvalidException.java} | 10 +-
.../LoanUpstreamUnavailableException.java} | 10 +-
.../loans/query/service/LoansQueryService.java | 51 +++
.../loans/query/service/LoansQueryServiceImpl.java | 383 +++++++++++++++++++++
.../command/repository/OtpCommandRepository.java | 20 +-
.../otp/command/service/OtpCommandService.java | 4 +-
.../otp/command/service/OtpCommandServiceImpl.java | 10 +-
.../command/api/RegistrationCommandController.java | 4 +
.../service/RegistrationCommandServiceImpl.java | 13 +-
.../query/service/IdentityQueryServiceImpl.java | 26 +-
.../command/api/SavingsCommandController.java | 85 +++++
.../data/ConfirmSavingsChargePaymentCommand.java} | 17 +-
...ConfirmSavingsChargePaymentCommandRequest.java} | 19 +-
.../data/InitiateSavingsChargePaymentCommand.java} | 11 +-
...nitiateSavingsChargePaymentCommandRequest.java} | 16 +-
.../SavingsChargePaymentChallengeCommandData.java} | 8 +-
.../data/SavingsChargePaymentCommandData.java} | 11 +-
.../data/SavingsChargePaymentConstants.java} | 14 +-
.../SavingsChargePaymentInvalidException.java} | 16 +-
.../SavingsChargePaymentNotFoundException.java} | 10 +-
...avingsChargePaymentStepUpInvalidException.java} | 10 +-
...ChargePaymentUpstreamUnavailableException.java} | 10 +-
.../command/service/SavingsCommandService.java} | 26 +-
.../command/service/SavingsCommandServiceImpl.java | 167 +++++++++
.../savings/query/api/SavingsQueryController.java | 107 ++++++
.../data/SavingsAccountListItemQueryData.java} | 13 +-
.../query/data/SavingsAccountQueryData.java} | 16 +-
.../data/SavingsApplicationTemplateQueryData.java | 57 +++
.../query/data/SavingsChargeQueryData.java} | 12 +-
.../query/data/SavingsProductOptionQueryData.java} | 8 +-
.../query/data/SavingsTransactionQueryData.java} | 15 +-
.../query/data/SavingsTransactionSearchQuery.java} | 13 +-
.../SavingsAccountNotFoundException.java} | 10 +-
.../SavingsProductNotFoundException.java} | 10 +-
.../exception/SavingsRequestInvalidException.java} | 10 +-
.../SavingsUpstreamUnavailableException.java} | 10 +-
.../savings/query/service/SavingsQueryService.java | 43 +++
.../query/service/SavingsQueryServiceImpl.java | 294 ++++++++++++++++
.../command/api/TransfersCommandController.java | 82 +++++
.../command/data/ConfirmTransferCommand.java} | 18 +-
.../data/ConfirmTransferCommandRequest.java} | 36 +-
.../command/data/InitiateTransferCommand.java} | 12 +-
.../data/InitiateTransferCommandRequest.java} | 22 +-
.../data/TransferChallengeCommandData.java} | 8 +-
.../command/data/TransferCommandData.java} | 11 +-
.../command/data/TransferConstants.java} | 27 +-
.../exception/TransferInvalidException.java} | 14 +-
.../exception/TransferNotFoundException.java} | 10 +-
.../exception/TransferStepUpInvalidException.java} | 10 +-
.../TransferUpstreamUnavailableException.java} | 10 +-
.../command/service/TransfersCommandService.java} | 26 +-
.../service/TransfersCommandServiceImpl.java | 206 +++++++++++
.../user/command/data/UserCreatedCommandData.java | 2 +-
.../consumer/user/command/domain/User.java | 8 +-
.../command/service/UserCommandServiceImpl.java | 2 +-
.../user/query/data/UserCredentialsQueryData.java | 2 +-
.../consumer/user/query/data/UserQueryData.java | 3 +-
.../user/query/repository/UserQueryRepository.java | 10 +-
.../user/query/service/UserQueryService.java | 2 +-
.../user/query/service/UserQueryServiceImpl.java | 4 +-
consumer/src/main/resources/application.properties | 2 +-
.../changelog/changes/001-create-users-table.yaml | 2 +-
.../AuthenticationCommandServiceImplTest.java | 33 +-
.../cucumber/clients/FineractCodeLookupClient.java | 34 --
.../clients/FineractIdentifierSeedClient.java | 32 --
.../consumer/cucumber/helpers/FineractSeeder.java | 311 +++++++++++++++--
.../consumer/cucumber/helpers/LoginHelper.java | 68 ++++
.../cucumber/helpers/RegistrationHelper.java | 31 +-
.../consumer/cucumber/steps/LoansSteps.java | 162 +++++++++
.../consumer/cucumber/steps/RegistrationSteps.java | 6 +-
.../consumer/cucumber/steps/SavingsSteps.java | 169 +++++++++
.../consumer/cucumber/steps/TransfersSteps.java | 155 +++++++++
.../service/LoansCommandServiceImplTest.java | 232 +++++++++++++
.../query/service/LoansQueryServiceImplTest.java | 91 +++++
.../service/SavingsCommandServiceImplTest.java | 234 +++++++++++++
.../query/service/SavingsQueryServiceImplTest.java | 91 +++++
.../service/TransfersCommandServiceImplTest.java | 273 +++++++++++++++
.../consumer/user/command/domain/UserTest.java | 6 +-
.../service/UserCommandServiceImplTest.java | 8 +-
.../query/service/UserQueryServiceImplTest.java | 18 +-
consumer/src/test/resources/features/loans.feature | 47 +++
.../src/test/resources/features/savings.feature | 47 +++
.../test/resources/features/transfers.feature} | 49 +--
135 files changed, 5062 insertions(+), 753 deletions(-)
copy .gitignore => consumer/gradle.properties (95%)
delete mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/fineractclient/clients/FineractClientIdentifiersClient.java
copy consumer/{openapi/java.ignore =>
src/main/java/org/apache/fineract/consumer/infrastructure/fineractclient/spec/fineract.ignore}
(82%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/fineractclient/spec/fineract.json
rename
consumer/src/{test/java/org/apache/fineract/consumer/cucumber/clients/FineractClientSeedClient.java
=>
main/java/org/apache/fineract/consumer/infrastructure/fineractclient/templates/apiClient.mustache}
(69%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/data/OtpConstants.java
=> infrastructure/stepup/StepUpConstants.java} (73%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/stepup/StepUpTokenService.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/infrastructure/web/AccessPolicyEvaluator.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/VerifyOtpCommandRequest.java
=> infrastructure/web/UserClientResolver.java} (63%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/command/api/LoansCommandController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/jwt/IssuedJwt.java
=> loans/command/data/ConfirmLoanChargePaymentCommand.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/VerifyTwoFactorCommandRequest.java
=> loans/command/data/ConfirmLoanChargePaymentCommandRequest.java} (82%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/command/data/InitiateLoanChargePaymentCommand.java} (82%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/command/data/LoanApplicationCommandData.java} (83%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginChallengeCommandData.java
=> loans/command/data/LoanChargePaymentChallengeCommandData.java} (88%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/command/data/LoanChargePaymentCommandData.java} (83%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/data/OtpConstants.java
=> loans/command/data/LoanChargePaymentConstants.java} (69%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandData.java
=> loans/command/data/ModifyLoanApplicationCommand.java} (54%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandRequest.java
=> loans/command/data/ModifyLoanApplicationCommandRequest.java} (54%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandData.java
=> loans/command/data/SubmitLoanApplicationCommand.java} (55%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandRequest.java
=> loans/command/data/SubmitLoanApplicationCommandRequest.java} (54%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/command/data/WithdrawLoanApplicationCommand.java} (82%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/VerifyTwoFactorCommand.java
=> loans/command/data/WithdrawLoanApplicationCommandRequest.java} (80%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/TwoFactorInvalidException.java
=> loans/command/exception/LoanApplicationInvalidException.java} (64%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/TwoFactorInvalidException.java
=> loans/command/exception/LoanChargePaymentInvalidException.java} (64%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/command/exception/LoanChargePaymentNotFoundException.java} (72%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/command/exception/LoanChargePaymentStepUpInvalidException.java} (71%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/command/exception/LoanChargePaymentUpstreamUnavailableException.java}
(67%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/exception/UserNotFoundException.java
=> loans/command/exception/LoanNotFoundException.java} (75%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/command/exception/LoanUpstreamUnavailableException.java} (70%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/command/service/LoansCommandService.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/command/service/LoansCommandServiceImpl.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/query/api/LoansQueryController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandData.java
=> loans/query/data/CalculateLoanScheduleQuery.java} (55%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/query/data/LoanAccountListItemQueryData.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> loans/query/data/LoanAccountQueryData.java} (64%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/query/data/LoanApplicationTemplateQueryData.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> loans/query/data/LoanChargeQueryData.java} (74%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> loans/query/data/LoanGuarantorQueryData.java} (80%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/data/OtpDestination.java
=> loans/query/data/LoanProductOptionQueryData.java} (86%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandRequest.java
=> loans/query/data/LoanSchedulePreviewQueryRequest.java} (54%)
rename
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/fineractclient/data/FineractClientIdentifierData.java
=> loans/query/data/LoanScheduleQueryData.java} (58%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> loans/query/data/LoanTransactionQueryData.java} (75%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/exception/UserNotFoundException.java
=> loans/query/exception/LoanNotFoundException.java} (76%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/query/exception/LoanProductNotFoundException.java} (74%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/query/exception/LoanSchedulePreviewInvalidException.java} (70%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> loans/query/exception/LoanUpstreamUnavailableException.java} (71%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/query/service/LoansQueryService.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/loans/query/service/LoansQueryServiceImpl.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/command/api/SavingsCommandController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginChallengeCommandData.java
=> savings/command/data/ConfirmSavingsChargePaymentCommand.java} (74%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SendOtpCommandRequest.java
=> savings/command/data/ConfirmSavingsChargePaymentCommandRequest.java} (74%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> savings/command/data/InitiateSavingsChargePaymentCommand.java} (77%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/VerifyOtpCommandRequest.java
=> savings/command/data/InitiateSavingsChargePaymentCommandRequest.java} (77%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginChallengeCommandData.java
=> savings/command/data/SavingsChargePaymentChallengeCommandData.java} (88%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> savings/command/data/SavingsChargePaymentCommandData.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/data/OtpConstants.java
=> savings/command/data/SavingsChargePaymentConstants.java} (67%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/TwoFactorInvalidException.java
=> savings/command/exception/SavingsChargePaymentInvalidException.java} (63%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> savings/command/exception/SavingsChargePaymentNotFoundException.java} (71%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> savings/command/exception/SavingsChargePaymentStepUpInvalidException.java}
(70%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=>
savings/command/exception/SavingsChargePaymentUpstreamUnavailableException.java}
(67%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginCommandRequest.java
=> savings/command/service/SavingsCommandService.java} (51%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/command/service/SavingsCommandServiceImpl.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/query/api/SavingsQueryController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> savings/query/data/SavingsAccountListItemQueryData.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> savings/query/data/SavingsAccountQueryData.java} (73%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/query/data/SavingsApplicationTemplateQueryData.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> savings/query/data/SavingsChargeQueryData.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/data/OtpDestination.java
=> savings/query/data/SavingsProductOptionQueryData.java} (86%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/query/data/UserQueryData.java
=> savings/query/data/SavingsTransactionQueryData.java} (77%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> savings/query/data/SavingsTransactionSearchQuery.java} (76%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/exception/UserNotFoundException.java
=> savings/query/exception/SavingsAccountNotFoundException.java} (73%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/exception/UserNotFoundException.java
=> savings/query/exception/SavingsProductNotFoundException.java} (73%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/exception/OtpDestinationInvalidException.java
=> savings/query/exception/SavingsRequestInvalidException.java} (73%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> savings/query/exception/SavingsUpstreamUnavailableException.java} (70%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/query/service/SavingsQueryService.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/savings/query/service/SavingsQueryServiceImpl.java
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/transfers/command/api/TransfersCommandController.java
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginChallengeCommandData.java
=> transfers/command/data/ConfirmTransferCommand.java} (72%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SubmitRegistrationCommandRequest.java
=> transfers/command/data/ConfirmTransferCommandRequest.java} (67%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> transfers/command/data/InitiateTransferCommand.java} (75%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{registration/command/data/SendOtpCommandRequest.java
=> transfers/command/data/InitiateTransferCommandRequest.java} (70%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginChallengeCommandData.java
=> transfers/command/data/TransferChallengeCommandData.java} (88%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{infrastructure/exception/ConsumerApiError.java
=> transfers/command/data/TransferCommandData.java} (78%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/TwoFactorInvalidException.java
=> transfers/command/data/TransferConstants.java} (51%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/exception/OtpTokenInvalidException.java
=> transfers/command/exception/TransferInvalidException.java} (66%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{user/command/exception/UserNotFoundException.java
=> transfers/command/exception/TransferNotFoundException.java} (73%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{otp/command/exception/OtpDestinationInvalidException.java
=> transfers/command/exception/TransferStepUpInvalidException.java} (73%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/exception/RefreshTokenInvalidException.java
=> transfers/command/exception/TransferUpstreamUnavailableException.java} (69%)
copy
consumer/src/main/java/org/apache/fineract/consumer/{authentication/command/data/LoginCommandRequest.java
=> transfers/command/service/TransfersCommandService.java} (55%)
create mode 100644
consumer/src/main/java/org/apache/fineract/consumer/transfers/command/service/TransfersCommandServiceImpl.java
delete mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/clients/FineractCodeLookupClient.java
delete mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/clients/FineractIdentifierSeedClient.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/helpers/LoginHelper.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/steps/LoansSteps.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/steps/SavingsSteps.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/cucumber/steps/TransfersSteps.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/loans/command/service/LoansCommandServiceImplTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/loans/query/service/LoansQueryServiceImplTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/savings/command/service/SavingsCommandServiceImplTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/savings/query/service/SavingsQueryServiceImplTest.java
create mode 100644
consumer/src/test/java/org/apache/fineract/consumer/transfers/command/service/TransfersCommandServiceImplTest.java
create mode 100644 consumer/src/test/resources/features/loans.feature
create mode 100644 consumer/src/test/resources/features/savings.feature
copy consumer/{.gitignore => src/test/resources/features/transfers.feature}
(52%)