Test Scripts for JAX-WS Services
This folder contains test scripts to interact with the JAX-WS services.
Available Test Scripts
test_all_services.py- Unified test script for all services (Recommended)test_hello_world.py- Test the Hello World SOAP servicetest_register_customer.py- Test the Customer Registration SOAP servicesimple_test.py- Simple automated test script for CI/CD
Unified Test Script (Recommended)
test_all_services.py
This is the recommended way to test all services. It provides comprehensive testing for all three service operations in a single script.
Features:
- Tests all service operations (Hello World, Customer Registration, Loan Processing)
- Automated test suite with 20+ test cases
- Interactive mode for manual testing
- Clear pass/fail indicators with test summary
- Comprehensive error handling and validation testing
Running the unified test:
Windows:
cd scripts
python test_all_services.py
Linux/Mac:
cd scripts
python3 test_all_services.py
# OR
chmod +x test_all_services.py
./test_all_services.py
What it tests:
-
Hello World Service
- Normal greetings
- Edge cases (empty names)
-
Customer Registration Service
- Regular customer registration
- Blacklisted customer registration
- Duplicate registration handling
- Validation error handling
-
Loan Application Processing
- High credit score approvals (3.5% rate)
- Good credit score approvals (5.5% rate)
- Fair credit score approvals (8.5% rate)
- Low credit score rejections
- Blacklisted customer rejections
- Validation error handling (empty names, invalid amounts)
Interactive Mode:
After automated tests complete, you can enter interactive mode with these commands:
hello <name>- Test Hello World serviceregister <name>- Register a regular customerblacklist <name>- Register a blacklisted customerloan <name> <amount> <credit_score>- Process loan applicationquit- Exit
Example output:
================================================================================
JAX-WS UNIFIED TEST CLIENT
================================================================================
Testing all services and operations
Checking services availability...
Hello World Service: Service is accessible
Loan Approval Service: Service is accessible
================================================================================
AUTOMATED TEST SUITE
================================================================================
--------------------------------------------------------------------------------
1. Testing Hello World Service
--------------------------------------------------------------------------------
✓ PASS | getHelloWorld('John') - Should return greeting
Hello World, John!
✓ PASS | getHelloWorld('Alice') - Should return greeting
Hello World, Alice!
--------------------------------------------------------------------------------
2. Testing Customer Registration Service
--------------------------------------------------------------------------------
✓ PASS | registerNewCustomer('Alice Johnson', blacklisted=False) - Register regular customer
Registration Successful
✓ PASS | registerNewCustomer('Charlie Brown', blacklisted=True) - Register blacklisted customer
Registration Successful
✓ PASS | registerNewCustomer('Alice Johnson', blacklisted=False) - Duplicate registration (should fail)
Error: Customer already exists
--------------------------------------------------------------------------------
3. Testing Loan Application Processing Service
--------------------------------------------------------------------------------
✓ PASS | processLoanApplication('Alice Johnson', $50000, score=750) - High credit score
approved: True
approvedRate: 3.5
message: Loan approved with excellent rate
✓ PASS | processLoanApplication('Charlie Brown', $40000, score=700) - Blacklisted customer
approved: False
rejectionReason: Applicant is blacklisted
message: Loan application rejected
================================================================================
TEST SUMMARY
================================================================================
Total Tests: 20
Passed: 20
Failed: 0
Success Rate: 100.0%
Would you like to enter interactive mode? (y/n):
Python Test Scripts
Prerequisites
- Python 3.6 or higher
- pip (Python package installer)
Installation
-
Install Python dependencies:
Windows:
cd scripts pip install -r requirements.txtLinux/Mac:
cd scripts pip3 install -r requirements.txt
Running the Test Script
Make sure the JAX-WS service is running (using Docker or traditional setup).
Windows:
python test_hello_world.py
Linux/Mac:
python3 test_hello_world.py
# OR
chmod +x test_hello_world.py
./test_hello_world.py
What the Script Does
The test_hello_world.py script:
- Checks WSDL availability - Verifies the service is running
- Tests with multiple names - Calls the service with predefined test cases
- Interactive mode - Allows you to enter custom names and see responses in real-time
Example Output
============================================================
JAX-WS Hello World Service Test Client
============================================================
1. Checking WSDL availability...
WSDL is accessible
2. Testing Hello World Service...
Calling service with name: 'World'
Response: Hello World, World!
Calling service with name: 'Python Client'
Response: Hello World, Python Client!
Calling service with name: 'JAX-WS User'
Response: Hello World, JAX-WS User!
Calling service with name: 'Docker'
Response: Hello World, Docker!
3. Interactive Mode
--------------------------------------------------------
Enter a name (or 'quit' to exit): John
Response: Hello World, John!
Enter a name (or 'quit' to exit): quit
============================================================
Test completed!
============================================================
Using the HelloWorldClient Class
You can also use the HelloWorldClient class in your own Python scripts:
from test_hello_world import HelloWorldClient
# Create client
client = HelloWorldClient()
# Check if service is available
is_available, message = client.check_wsdl()
print(message)
# Call the service
response = client.call_hello_world("Your Name")
print(response) # Output: Hello World, Your Name!
Customer Registration Test Script
Running the Customer Registration Test
Make sure the JAX-WS service is running (using Docker or traditional setup).
Windows:
python test_register_customer.py
Linux/Mac:
python3 test_register_customer.py
# OR
chmod +x test_register_customer.py
./test_register_customer.py
What the Script Does
The test_register_customer.py script:
- Checks WSDL availability - Verifies the LoanApprovalService is running
- Tests customer registration - Registers multiple customers with different scenarios
- Tests blacklist functionality - Registers both regular and blacklisted customers
- Tests duplicate registration - Verifies that duplicate registrations are handled correctly
- Interactive mode - Allows you to register customers interactively
Example Output
======================================================================
Customer Registration Service Test Client
======================================================================
1. Checking WSDL availability...
WSDL is accessible
2. Testing Customer Registration...
Test 1: Regular customer
Customer Name: John Doe
Blacklisted: False
Result: Registration Successful
Test 2: Regular customer
Customer Name: Jane Smith
Blacklisted: False
Result: Registration Successful
Test 3: Blacklisted customer
Customer Name: Bad Actor
Blacklisted: True
Result: Registration Successful
Test 4: Duplicate registration (should fail)
Customer Name: John Doe
Blacklisted: False
Result: Error: Customer already exists
3. Interactive Mode
------------------------------------------------------------------
Commands:
- register <name>: Register a regular customer
- blacklist <name>: Register a blacklisted customer
- quit: Exit
> register Alice Smith
Result: Registration Successful
> blacklist Evil Corp
Result: Registration Successful
> quit
======================================================================
Test completed!
======================================================================
Using the CustomerRegistrationClient Class
You can also use the CustomerRegistrationClient class in your own Python scripts:
from test_register_customer import CustomerRegistrationClient
# Create client
client = CustomerRegistrationClient()
# Check if service is available
is_available, message = client.check_wsdl()
print(message)
# Register a regular customer
response = client.register_customer("John Doe", is_blacklisted=False)
print(response) # Output: Registration Successful
# Register a blacklisted customer
response = client.register_customer("Bad Actor", is_blacklisted=True)
print(response) # Output: Registration Successful
# Try to register duplicate
response = client.register_customer("John Doe", is_blacklisted=False)
print(response) # Output: Error: Customer already exists
Troubleshooting
Service Not Available
If you get a connection error:
-
Make sure the Docker container is running:
docker ps | grep jaxws -
Check if the service is accessible:
curl http://localhost:8080/jaxws-hello-world/hello?wsdl -
Restart the service:
docker-compose restart
Python Not Found
If you get "python: command not found":
- Windows: Use
pythonorpycommand - Linux/Mac: Use
python3command
Dependencies Not Installing
If pip install fails:
-
Make sure pip is up to date:
python -m pip install --upgrade pip -
Try installing with sudo (Linux/Mac only):
sudo pip3 install -r requirements.txt -
Use a virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt