173 lines
4.9 KiB
Python
173 lines
4.9 KiB
Python
import requests
|
|
import base64
|
|
import json
|
|
|
|
# Configuration
|
|
BASE_URL = "http://127.0.0.1:8080/v1/api/salary"
|
|
USERNAME = "admin"
|
|
PASSWORD = "password"
|
|
APP_ID = "your_app_id" # Replace with your actual app ID
|
|
API_KEY = "your_api_key" # Replace with your actual API key
|
|
|
|
# Authentication headers
|
|
basic_auth = base64.b64encode(f"{USERNAME}:{PASSWORD}".encode()).decode()
|
|
basic_auth_headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": f"Basic {basic_auth}"
|
|
}
|
|
|
|
api_key_headers = {
|
|
"Content-Type": "application/json",
|
|
"appID": APP_ID,
|
|
"apiKey": API_KEY
|
|
}
|
|
|
|
|
|
def test_eligibility_check():
|
|
"""Test the EligibilityCheck endpoint."""
|
|
url = f"{BASE_URL}/EligibilityCheck"
|
|
payload = {
|
|
"$type": "EligibilityCheckRequest",
|
|
"transactionId": "Tr202503RK9232P115",
|
|
"countryCode": "NGR",
|
|
"customerId": "CN621868",
|
|
"accountId": "ACN8263457",
|
|
"msisdn": "2348012345678",
|
|
"lienAmount": 4.0,
|
|
"channel": "USSD"
|
|
}
|
|
|
|
response = requests.post(url, headers=basic_auth_headers, json=payload)
|
|
print(f"EligibilityCheck Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def test_select_offer():
|
|
"""Test the SelectOffer endpoint."""
|
|
url = f"{BASE_URL}/SelectOffer"
|
|
payload = {
|
|
"requestId": "202503170001371256908",
|
|
"transactionId": "1231231321232",
|
|
"customerId": "1256907",
|
|
"accountId": "5948306019",
|
|
"msisdn": "2348012345678",
|
|
"requestedAmount": 10000.0,
|
|
"productid": "101",
|
|
"channel": "USSD"
|
|
}
|
|
|
|
response = requests.post(url, headers=basic_auth_headers, json=payload)
|
|
print(f"SelectOffer Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def test_provide_loan():
|
|
"""Test the ProvideLoan endpoint."""
|
|
url = f"{BASE_URL}/ProvideLoan"
|
|
payload = {
|
|
"$type": "ProvideLoanRequest",
|
|
"requestId": "202503170001371256908",
|
|
"transactionId": "Tr202503RK9232P115",
|
|
"customerId": "CN621868",
|
|
"accountId": "ACN8263457",
|
|
"msisdn": "2348012345678",
|
|
"productId": "101",
|
|
"lienAmount": 400.0,
|
|
"requestedAmount": 10000.0,
|
|
"collectionType": 1,
|
|
"loanType": 0,
|
|
"channel": "USSD"
|
|
}
|
|
|
|
response = requests.post(url, headers=basic_auth_headers, json=payload)
|
|
print(f"ProvideLoan Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def test_loan_information():
|
|
"""Test the LoanInformation endpoint."""
|
|
url = f"{BASE_URL}/LoanInformation"
|
|
payload = {
|
|
"$type": "LoanInformationRequest",
|
|
"transactionId": "Tr202503RK9232P115",
|
|
"customerId": "CN621868",
|
|
"msisdn": "2348012345678",
|
|
"channel": "USSD"
|
|
}
|
|
|
|
response = requests.post(url, headers=basic_auth_headers, json=payload)
|
|
print(f"LoanInformation Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def test_rac_check():
|
|
"""Test the RACCheck endpoint."""
|
|
url = f"{BASE_URL}/RACCheck"
|
|
payload = {
|
|
"transactionId": "T001",
|
|
"fbnTransactionId": "Tr202503RK9232P115",
|
|
"customerId": "CN621868",
|
|
"accountId": "2017821799",
|
|
"RAC_Array": ["SalaryAccount", "BVN", "CRMS", "CRC", "AccountStatus", "Lien", "NoBounchedCheck", "Whitelist"]
|
|
}
|
|
|
|
response = requests.post(url, headers=api_key_headers, json=payload)
|
|
print(f"RACCheck Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def test_disbursement():
|
|
"""Test the Disbursement endpoint."""
|
|
url = f"{BASE_URL}/Disbursement"
|
|
payload = {
|
|
"requestId": "202503170001371256908",
|
|
"debtId": "273194670",
|
|
"transactionId": "T001",
|
|
"customerId": "CN621868",
|
|
"accountId": "2017821799",
|
|
"productId": "101",
|
|
"provideAmount": 100000.0,
|
|
"collectAmountInterest": 5000.0,
|
|
"collectAmountMgtFee": 1000.0,
|
|
"collectAmountInsurance": 1000.0,
|
|
"collectAmountVAT": 75.0,
|
|
"countryId": "01",
|
|
"comment": "Testing LoanRequest"
|
|
}
|
|
|
|
response = requests.post(url, headers=api_key_headers, json=payload)
|
|
print(f"Disbursement Status: {response.status_code}")
|
|
print(json.dumps(response.json(), indent=2))
|
|
print("-" * 50)
|
|
return response.json()
|
|
|
|
|
|
def run_all_tests():
|
|
"""Run all test functions."""
|
|
print("Starting API tests...\n")
|
|
|
|
# Test endpoints with basic auth
|
|
test_eligibility_check()
|
|
test_select_offer()
|
|
test_provide_loan()
|
|
test_loan_information()
|
|
|
|
# Test endpoints with API key auth
|
|
test_rac_check()
|
|
test_disbursement()
|
|
|
|
print("All tests completed!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run_all_tests() |