diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1ac928b..170f099 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,4 +1,67 @@
- {}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1743767940554
+
+
+ 1743767940554
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bank-to-simbrella/firstbank_to_simbrella_jwt_test.jmx b/bank-to-simbrella/firstbank_to_simbrella_jwt_test.jmx
new file mode 100644
index 0000000..f137ccc
--- /dev/null
+++ b/bank-to-simbrella/firstbank_to_simbrella_jwt_test.jmx
@@ -0,0 +1,1077 @@
+
+
+
+
+ true
+
+
+
+ BASE_URL
+ localhost
+ =
+
+
+ PORT
+ 5000
+ =
+
+
+ API_PATH
+ /v1/api/salary
+ =
+
+
+
+
+
+
+ 1
+ 1
+ true
+ continue
+
+ -1
+ false
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ /Authorize
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "username": "your_username",
+ "password": "your_password"
+}
+ =
+
+
+
+
+
+
+
+
+ Content-Type
+ application/json
+
+
+
+
+
+ jwtToken
+ $.token
+ 1
+ NO_TOKEN
+
+
+
+
+ false
+ true
+ false
+
+
+
+
+ 1
+ 1
+ true
+ continue
+
+ -1
+ false
+
+
+
+
+
+
+ Authorization
+ Bearer ${jwtToken}
+
+
+ Content-Type
+ application/json
+
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/EligibilityCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "Tr${__time()}",
+ "countryCode": "NGR",
+ "customerId": "CN${__Random(100000,999999)}",
+ "accountId": "ACN${__Random(1000000,9999999)}",
+ "msisdn": "801${__Random(1000000,9999999)}",
+ "channel": "100"
+}
+ =
+
+
+
+
+
+
+ transactionId
+ $.transactionId
+ 1
+ NO_TRANSACTION_ID
+
+
+
+ customerId
+ $.customerId
+ 1
+ NO_CUSTOMER_ID
+
+
+
+ accountId
+ $.accountId
+ 1
+ ACN8263457
+
+
+
+ msisdn
+ $.msisdn
+ 1
+ 8012345678
+
+
+
+ countryCode
+ $.countryCode
+ 1
+ NGR
+
+
+
+ offerId
+ $.eligibleOffers[0].offerId
+ 1
+ 101
+
+
+
+ productId
+ $.eligibleOffers[0].productId
+ 1
+ 2030
+
+
+
+ maxAmount
+ $.eligibleOffers[0].maxAmount
+ 1
+ 5000
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/RACCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "T${__time()}",
+ "fbnTransactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "RAC_Array": ["SalaryAccount", "BVN", "BVNAttachedtoAccount", "CRC", "CRMS", "AccountStatus", "Lien", "NoBouncedCheck", "Whitelist", "NoPastDueSalaryLoan", "NoPastDueOtherLoan"]
+}
+ =
+
+
+
+
+
+
+ $.resultDescription
+ RAC Check Successful
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/SelectOffer
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "REQ${__time()}",
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "msisdn": "${msisdn}",
+ "requestedAmount": "${maxAmount}",
+ "productId": "${productId}",
+ "channel": "USSD"
+}
+ =
+
+
+
+
+
+
+ requestId
+ $.requestId
+ 1
+ REQ${__time()}
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/ProvideLoan
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "${requestId}",
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "msisdn": "${msisdn}",
+ "productId": "${productId}",
+ "requestedAmount": "${maxAmount}",
+ "collectionType": 0,
+ "offerId": ${offerId},
+ "channel": "USSD"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/Disbursement
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "${requestId}",
+ "countryCode": "${countryCode}",
+ "transactionId": "${transactionId}",
+ "debtId": "D${__time()}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "productId": "${productId}",
+ "provideAmount": "${maxAmount}",
+ "totalFees": 7075, "${accountId}",
+ "productId": "${productId}",
+ "provideAmount": "${maxAmount}",
+ "totalFees": 7075,
+ "feesDetails": {
+ "collectAmountInterest": 5000,
+ "collectAmountMgtFee": 1000,
+ "collectAmountInsurance": 1000,
+ "collectAmountVAT": 75
+ },
+ "countryId": "01"
+}
+ =
+
+
+
+
+
+
+ debtId
+ $.debtId
+ 1
+ D${__time()}
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/LienCheck
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "LC${__time()}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}"
+}
+ =
+
+
+
+
+
+
+ lienAmount
+ $.lienAmount
+ 1
+ 0
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/StatusCall
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "SC${__time()}",
+ "countryCode": "${countryCode}",
+ "transactionId": "${transactionId}",
+ "debtId": "${debtId}",
+ "transactionType": "Disbursement",
+ "customerId": "${customerId}"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/SMS
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "text": "Your loan of ${maxAmount} has been approved and disbursed to your account. Thank you for using our service.",
+ "dest": "+${msisdn}",
+ "unicode": false
+}
+ =
+
+
+
+
+
+
+ $.statusCode
+ 200
+ true
+ false
+ false
+ false
+
+
+
+ $.IsSuccessful
+ true
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/BulkSMS
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ [
+ {
+ "text": "Your loan of ${maxAmount} has been approved and disbursed to your account. Thank you for using our service.",
+ "dest": "+${msisdn}",
+ "unicode": true
+ },
+ {
+ "text": "Reminder: Your loan repayment is due in 7 days. Please ensure sufficient funds in your account.",
+ "dest": "+${msisdn}",
+ "unicode": true
+ },
+ {
+ "text": "Important: Your loan application has been processed successfully. Contact customer service for any inquiries.",
+ "dest": "+${msisdn}",
+ "unicode": true
+ }
+]
+ =
+
+
+
+
+
+
+ $.statusCode
+ 200
+ true
+ false
+ false
+ false
+
+
+
+ $.IsSuccessful
+ true
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/TransactionVerify
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "TV${__time()}",
+ "countryCode": "${countryCode}",
+ "counter": "1",
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "transactionType": "Disbursement"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/LoanStatus
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "msisdn": "${msisdn}",
+ "channel": "USSD"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ loanDetails
+ $.loans
+ 1
+ NO_LOANS
+
+
+
+ currentLoanAmount
+ $.loans[0].currentLoanAmount
+ 1
+ ${maxAmount}
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/CollectLoan
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "CL${__time()}",
+ "fbnTransactionId": "${transactionId}",
+ "debtId": "${debtId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "productId": "${productId}",
+ "collectAmount": "${currentLoanAmount}",
+ "penalCharge": 0,
+ "collectionMethod": 3,
+ "lienAmount": "${currentLoanAmount}",
+ "countryId": "01",
+ "comment": 0,
+ "collectionMethod": 3,
+ "lienAmount": "${currentLoanAmount}",
+ "countryId": "01",
+ "comment": "Collection via JMeter test"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/TransactionVerify
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "TV${__time()}",
+ "countryCode": "${countryCode}",
+ "counter": "1",
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "transactionType": "Collection"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/PenalCharge
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "transactionId": "PC${__time()}",
+ "fbnTransactionId": "${transactionId}",
+ "debtId": "${debtId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "penalCharge": 100.0,
+ "lienAmount": 100.0,
+ "comment": "Penal charge via JMeter test"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/TransactionVerify
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "TV${__time()}",
+ "countryCode": "${countryCode}",
+ "counter": "1",
+ "transactionId": "${transactionId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "transactionType": "Penalty"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+ ${BASE_URL}
+ ${PORT}
+ http
+ ${API_PATH}/Repayment
+ true
+ POST
+ true
+ true
+
+
+
+ false
+ {
+ "requestId": "R${__time()}",
+ "countryCode": "${countryCode}",
+ "transactionId": "${transactionId}",
+ "debtId": "${debtId}",
+ "customerId": "${customerId}",
+ "accountId": "${accountId}",
+ "productId": "${productId}",
+ "collectedAmount": "${currentLoanAmount}",
+ "penalCharge": 0,
+ "collectionMethod": 3,
+ "lienAmount": "${currentLoanAmount}",
+ "comment": "Repayment via JMeter test"
+}
+ =
+
+
+
+
+
+
+ $.resultCode
+ 00
+ true
+ false
+ false
+ false
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+