http://localhost:8080
POST /api/auth/login
Headers:
Content-Type: application/json
Body (raw JSON):
{
"username": "admin",
"password": "Admin@123"
}
Other Test Users:
// Onboarding User
{
"username": "onboard_user",
"password": "Onboard@123"
}
// Compliance User
{
"username": "compliance_user",
"password": "Compliance@123"
}
// Risk User
{
"username": "risk_user",
"password": "Risk@123"
}
// Approver User
{
"username": "approver_user",
"password": "Approver@123"
}
// Manager (Multi-role)
{
"username": "manager_user",
"password": "Manager@123"
}
Expected Response (200 OK):
{
"success": true,
"message": "Login successful",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 86400,
"user": {
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE"
}
},
"error": null,
"timestamp": "2025-01-15T10:30:00"
}
Postman Tests Script:
// Save access token to environment variable
if (pm.response.code === 200) {
var jsonData = pm.response.json();
pm.environment.set("access_token", jsonData.data.accessToken);
pm.environment.set("refresh_token", jsonData.data.refreshToken);
console.log("Access token saved:", jsonData.data.accessToken);
}
POST /api/auth/refresh
Headers:
Content-Type: application/json
Body (raw JSON):
{
"refreshToken": "{{refresh_token}}"
}
Expected Response (200 OK):
{
"success": true,
"message": "Token refreshed successfully",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 86400
},
"error": null,
"timestamp": "2025-01-15T10:35:00"
}
Postman Tests Script:
if (pm.response.code === 200) {
var jsonData = pm.response.json();
pm.environment.set("access_token", jsonData.data.accessToken);
console.log("New access token saved");
}
GET /api/auth/validate
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Token is valid",
"data": {
"valid": true,
"username": "admin",
"userId": 1,
"roles": ["ROLE_ADMIN"],
"expiresIn": 86395,
"user": {
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE"
}
},
"error": null,
"timestamp": "2025-01-15T10:40:00"
}
GET /api/auth/me
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "User retrieved successfully",
"data": {
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE",
"lastLoginAt": "2025-01-15T10:30:00",
"createdAt": "2025-01-15T08:00:00",
"updatedAt": "2025-01-15T10:30:00",
"passwordChangeRequired": false,
"accountExpiresAt": null,
"passwordExpiresAt": "2025-04-15T08:00:00"
},
"error": null,
"timestamp": "2025-01-15T10:45:00"
}
POST /api/auth/change-password
Headers:
Authorization: Bearer {{access_token}}
Content-Type: application/json
Body (raw JSON):
{
"currentPassword": "Admin@123",
"newPassword": "NewAdmin@123",
"confirmPassword": "NewAdmin@123"
}
Expected Response (200 OK):
{
"success": true,
"message": "Password changed successfully",
"data": null,
"error": null,
"timestamp": "2025-01-15T10:50:00"
}
Error Response (400 Bad Request) - Passwords don't match:
{
"success": false,
"message": "New password and confirmation do not match",
"data": null,
"error": "New password and confirmation do not match",
"status": 400,
"timestamp": "2025-01-15T10:51:00"
}
POST /api/auth/register
Headers:
Authorization: Bearer {{access_token}}
Content-Type: application/json
Body (raw JSON):
{
"username": "test_user",
"email": "test@laitusneo.com",
"password": "Test@123456",
"fullName": "Test User",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ONBOARD"]
}
Expected Response (201 Created):
{
"success": true,
"message": "User registered successfully",
"data": {
"id": 7,
"username": "test_user",
"email": "test@laitusneo.com",
"fullName": "Test User",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ONBOARD"],
"status": "ACTIVE",
"lastLoginAt": null,
"createdAt": "2025-01-15T10:55:00",
"updatedAt": "2025-01-15T10:55:00",
"passwordChangeRequired": false,
"accountExpiresAt": null,
"passwordExpiresAt": "2025-04-15T10:55:00"
},
"error": null,
"timestamp": "2025-01-15T10:55:00",
"status": 201
}
POST /api/auth/logout
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Logout successful",
"data": null,
"error": null,
"timestamp": "2025-01-15T11:00:00"
}
GET /api/users
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Users retrieved successfully",
"data": [
{
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE",
"lastLoginAt": "2025-01-15T10:30:00",
"createdAt": "2025-01-15T08:00:00",
"updatedAt": "2025-01-15T10:30:00"
},
{
"id": 2,
"username": "onboard_user",
"email": "onboard@laitusneo.com",
"fullName": "Onboarding Personnel",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ONBOARD"],
"status": "ACTIVE",
"lastLoginAt": null,
"createdAt": "2025-01-15T08:00:00",
"updatedAt": "2025-01-15T08:00:00"
}
],
"error": null,
"timestamp": "2025-01-15T11:05:00"
}
GET /api/users/1
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "User retrieved successfully",
"data": {
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"phoneNumber": "+1234567890",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE",
"lastLoginAt": "2025-01-15T10:30:00",
"createdAt": "2025-01-15T08:00:00",
"updatedAt": "2025-01-15T10:30:00",
"passwordChangeRequired": false,
"accountExpiresAt": null,
"passwordExpiresAt": "2025-04-15T08:00:00"
},
"error": null,
"timestamp": "2025-01-15T11:10:00"
}
POST /api/users
Headers:
Authorization: Bearer {{access_token}}
Content-Type: application/json
Body (raw JSON):
{
"username": "new_user",
"email": "newuser@laitusneo.com",
"password": "NewUser@123",
"fullName": "New User Name",
"phoneNumber": "+9876543210",
"roles": ["ROLE_COMPLIANCE", "ROLE_RISK"]
}
Expected Response (201 Created):
{
"success": true,
"message": "User created successfully",
"data": {
"id": 8,
"username": "new_user",
"email": "newuser@laitusneo.com",
"fullName": "New User Name",
"phoneNumber": "+9876543210",
"roles": ["ROLE_COMPLIANCE", "ROLE_RISK"],
"status": "ACTIVE",
"lastLoginAt": null,
"createdAt": "2025-01-15T11:15:00",
"updatedAt": "2025-01-15T11:15:00",
"passwordChangeRequired": true
},
"error": null,
"timestamp": "2025-01-15T11:15:00",
"status": 201
}
PUT /api/users/8
Headers:
Authorization: Bearer {{access_token}}
Content-Type: application/json
Body (raw JSON):
{
"username": "new_user",
"email": "updated@laitusneo.com",
"fullName": "Updated User Name",
"phoneNumber": "+1111111111"
}
Expected Response (200 OK):
{
"success": true,
"message": "User updated successfully",
"data": {
"id": 8,
"username": "new_user",
"email": "updated@laitusneo.com",
"fullName": "Updated User Name",
"phoneNumber": "+1111111111",
"roles": ["ROLE_COMPLIANCE", "ROLE_RISK"],
"status": "ACTIVE",
"updatedAt": "2025-01-15T11:20:00"
},
"error": null,
"timestamp": "2025-01-15T11:20:00"
}
PUT /api/users/8/roles
Headers:
Authorization: Bearer {{access_token}}
Content-Type: application/json
Body (raw JSON):
["ROLE_ONBOARD", "ROLE_COMPLIANCE"]
Expected Response (200 OK):
{
"success": true,
"message": "User roles updated successfully",
"data": {
"id": 8,
"username": "new_user",
"email": "updated@laitusneo.com",
"fullName": "Updated User Name",
"roles": ["ROLE_ONBOARD", "ROLE_COMPLIANCE"],
"status": "ACTIVE"
},
"error": null,
"timestamp": "2025-01-15T11:25:00"
}
POST /api/users/8/lock
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "User locked successfully",
"data": {
"id": 8,
"username": "new_user",
"status": "LOCKED"
},
"error": null,
"timestamp": "2025-01-15T11:30:00"
}
POST /api/users/8/unlock
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "User unlocked successfully",
"data": {
"id": 8,
"username": "new_user",
"status": "ACTIVE"
},
"error": null,
"timestamp": "2025-01-15T11:35:00"
}
GET /api/users/search?searchTerm=admin
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Search completed successfully",
"data": [
{
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE"
}
],
"error": null,
"timestamp": "2025-01-15T11:40:00"
}
GET /api/users/by-role/ADMIN
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Users retrieved successfully",
"data": [
{
"id": 1,
"username": "admin",
"email": "admin@laitusneo.com",
"fullName": "System Administrator",
"roles": ["ROLE_ADMIN"],
"status": "ACTIVE"
}
],
"error": null,
"timestamp": "2025-01-15T11:45:00"
}
GET /api/users/statistics
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "Statistics retrieved successfully",
"data": {
"totalUsers": 8,
"activeUsers": 7,
"adminUsers": 1,
"onboardUsers": 2,
"complianceUsers": 2,
"riskUsers": 2,
"approverUsers": 1
},
"error": null,
"timestamp": "2025-01-15T11:50:00"
}
DELETE /api/users/8
Headers:
Authorization: Bearer {{access_token}}
Expected Response (200 OK):
{
"success": true,
"message": "User deleted successfully",
"data": null,
"error": null,
"timestamp": "2025-01-15T11:55:00"
}
{
"timestamp": "2025-01-15T12:00:00",
"status": 401,
"error": "Unauthorized",
"message": "Full authentication is required to access this resource",
"path": "/api/users"
}
{
"success": false,
"message": "You don't have permission to access this resource",
"error": "Access Denied",
"status": 403,
"path": "/api/users",
"timestamp": "2025-01-15T12:05:00"
}
{
"success": false,
"message": "Validation failed",
"data": {
"username": "Username is required",
"password": "Password must be at least 8 characters long"
},
"error": "Validation Error",
"status": 400,
"timestamp": "2025-01-15T12:10:00"
}
Create these environment variables in Postman:
Variable Name | Initial Value | Current Value |
---|---|---|
base_url | http://localhost:8080 | |
access_token | (auto-filled after login) | |
refresh_token | (auto-filled after login) |
- Login - Use admin credentials to get tokens
- Save tokens - Tokens saved automatically via test script
- Test authenticated endpoints - Use {{access_token}} variable
- Test role-based access - Login with different role users
- Test token refresh - Use refresh token endpoint
- Test authorization - Try accessing admin endpoints with non-admin user
Happy Testing!