Files
apirestful/TESTING.md
2025-12-13 21:58:17 +01:00

4.4 KiB

API Testing Results

Test Execution Summary

All tests executed successfully on 2025-12-13.

1. Swagger/OpenAPI Integration

Swagger UI: http://localhost:8080/swagger-ui.html

  • Status: 200 OK (with redirect)
  • All endpoints documented
  • Interactive API testing available

OpenAPI Specification: http://localhost:8080/v3/api-docs

  • API Title: "Customer Management API"
  • Version: "1.0.0"
  • JSON format available

2. CRUD Operations Tests

CREATE (POST /api/customers)

Request:
{
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@example.com",
  "phone": "+1234567890",
  "address": "123 Main St, City"
}

Response (201 Created):
{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@example.com",
  "phone": "+1234567890",
  "address": "123 Main St, City",
  "createdAt": "2025-12-13T21:48:44.902979805",
  "updatedAt": "2025-12-13T21:48:44.902999458"
}

Status: 201 Created

READ ALL (GET /api/customers)

Response (200 OK):
[
  { customer1 },
  { customer2 }
]

Status: 200 OK Returns array of customers

READ ONE (GET /api/customers/1)

Response (200 OK):
{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@example.com"
}

Status: 200 OK

UPDATE (PUT /api/customers/1)

Request:
{
  "firstName": "Johnny",
  "lastName": "Doe",
  "email": "johnny.doe@example.com",
  "phone": "+1111111111",
  "address": "789 Updated St"
}

Response (200 OK):
{
  "id": 1,
  "firstName": "Johnny",
  "email": "johnny.doe@example.com"
}

Status: 200 OK Fields updated correctly

DELETE (DELETE /api/customers/2)

Status: 204 No Content

3. Validation Tests

Invalid Email Format

Request:
{
  "firstName": "",
  "lastName": "Test",
  "email": "invalid-email"
}

Response (400 Bad Request):
{
  "status": 400,
  "errors": {
    "firstName": "First name is required",
    "email": "Email must be valid"
  }
}

Validation working correctly

Duplicate Email

Request with existing email

Response (409 Conflict):
{
  "status": 409,
  "message": "Email already exists: johnny.doe@example.com"
}

Duplicate validation working

Customer Not Found

GET /api/customers/999

Response (404 Not Found):
{
  "status": 404,
  "message": "Customer not found with id: 999"
}

404 handling working correctly

4. H2 Database

  • Console available at: http://localhost:8080/h2-console
  • JDBC URL: jdbc:h2:mem:customersdb
  • Username: sa
  • Password: (empty)
  • Table created: customers
  • Unique constraint on email working

5. Async Operations

  • All operations use @Async annotation
  • CompletableFuture return types
  • Thread pool configured (4 core, 8 max)

Eclipse IDE Errors Analysis

Current IDE Errors:

The Eclipse IDE shows errors related to:

  1. Lombok generated methods (getters/setters)
  2. Lombok @Builder pattern
  3. Lombok @Slf4j (log field)
  4. Lombok @RequiredArgsConstructor

Root Cause:

These are IDE configuration issues, NOT code errors. Lombok requires Eclipse annotation processing to be enabled.

Evidence:

  1. Maven compiles successfully: BUILD SUCCESS
  2. All tests pass
  3. Application runs without errors
  4. All API endpoints work correctly
  5. Swagger documentation generated successfully

Solution for Eclipse:

To fix Eclipse errors, install Lombok plugin:

java -jar ~/.m2/repository/org/projectlombok/lombok/1.18.36/lombok-1.18.36.jar

Or download from: https://projectlombok.org/download

Then restart Eclipse.

Build & Run Commands

Compile

./mvnw clean compile -B

Result: BUILD SUCCESS

Package

./mvnw package -DskipTests -B

Result: BUILD SUCCESS

Run

./mvnw spring-boot:run

Result: Application starts on port 8080

Docker Build

docker build -t apirestful:latest .

Docker Run

docker run -p 8080:8080 apirestful:latest

Conclusion

All functionality working correctly Swagger/OpenAPI fully integrated and functional CRUD operations working with async support Validation working (Jakarta Validation) Exception handling working (Global handler) H2 Database working Security configured (endpoints accessible) Docker ready

The Eclipse IDE errors are cosmetic and related to Lombok annotation processing configuration. The code is correct and fully functional.