api

9Line Spaces System

1. Introduction

The 9line Spaces system is a space booking platform created to support space management and booking functionalities. The system includes core functionalities such as User Management, Space Management, Appointment Booking, Rating System, Authentication/Authorization, RBAC (Role-Based Access Control), and Notification System.

2. Architecture

The system uses a clean architecture approach with Domain Driven Design (DDD). The front-end framework used is React/Next.js for web applications and React Native for mobile applications, highlighting its component-oriented architecture.

A REST API is utilized for data storage, consultation, and modification. The client application sends requests to URLs (endpoints) to access API services, and the API returns JSON objects.

3. Functionalities

Functionalities
Expected Behavior
Verifications
Acceptance Criteria

User Registration

Upon entering name, email, password, and role, a registration will be performed on the platform, and the user should be redirected to the login screen. Must indicate the mandatory field to be corrected by the user.

- Password min 8 characters and max 30 - All fields must be mandatory - Email must be unique - Display a confirmation message in case of success - Password must contain at least one uppercase letter and one number

User is created successfully with hashed password and proper validation

User Authentication

User enters email and password, system validates credentials and returns JWT tokens. Must handle invalid credentials and user status validation.

- Validate email format - Check password strength - Verify user status (ACTIVE/INACTIVE/BLOCKED) - Return access and refresh tokens - Handle case insensitive email

User receives valid JWT tokens and can access protected endpoints

User Management

Administrator can create, update, delete, and list users with different roles and statuses.

- CRUD operations for users - Role-based permissions - Status management (ACTIVE/INACTIVE/BLOCKED) - Pagination support - Soft delete functionality

All user management operations work correctly with proper permissions

Space Management

Create, update, delete, and list spaces with detailed information including photos, rules, amenities, and location.

- CRUD operations for spaces - Photo upload and management - Address and geolocation handling - Host assignment - Average rating calculation

Spaces are managed correctly with all associated data

Appointment Booking

Users can book spaces for specific dates and times with conflict detection and approval workflows.

- Date and time validation - Conflict detection - Status management (PENDING/CONFIRMED/CANCELLED/REJECTED) - Change tracking and limits - Approval workflows

Appointments are created and managed correctly with proper validation

Rating System

Users can rate spaces with scores from 1-5 and optional comments. Each user can rate a space only once.

- Score validation (1-5 range) - Unique rating per user per space - Comment optional - Average rating calculation - Rating update and deletion

Ratings are created and managed correctly with proper validation

RBAC System

Role-based access control with permission management and role assignments.

- Role creation and management - Permission assignment - User role assignment - Expiration date handling - Permission validation

RBAC system works correctly with proper access control

Notification System

Send notifications via email, SMS, and push notifications using configurable templates.

- Template management - Multiple notification types - Delivery status tracking - Error handling - User preferences

Notifications are sent correctly through all channels

Health Check

System provides endpoints to check application status and connectivity.

- API health status - Database connectivity - Redis connectivity - System uptime - Environment information

Health check endpoints return correct status information

4. Environment and Tools

The tests will be conducted in the homologation environment, and it contains the same configurations as the production environment with a data mass previously generated by the quality team.

The following tools will be used in the test:

Tool
Team
Description

Vitest

Development

Framework used for unit tests

Jest

Development

Framework used for integration tests

Postman

Quality

Tool for performing API tests

Selenium

Quality

Tool for end-to-end tests

Cypress

Quality

Tool for frontend testing

Supertest

Development

Tool for API integration testing

5. Bug Classification

Bugs will be classified with the following severities:

ID
Severity Level
Description

1

Blocker

- Bug that blocks the test of a function or feature causes application crash - Button does not work, preventing complete use of the functionality - Blocks delivery

2

Severe

- Functionality does not work as expected - Unusual input causes irreversible effects - Security vulnerabilities

3

Moderate

- Functionality does not meet certain acceptance criteria, but its overall functionality is not affected - Performance issues that don't block functionality

4

Minor

- Error or success message is not displayed - Almost no impact on functionality, but hinders the user experience - Typographical error - Small UI errors

6. Definition of Done

Functionalities will be considered ready that pass the verifications and tests described in this Test Plan, do not present bugs with severity above Minor, and pass a business validation under the responsibility of the product team.

7. Test Coverage by Module

7.1 User Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

User Entity Creation

Should create a user with all required fields and generate unique ID

- Validate all required fields (name, email, password) - Check unique ID generation - Verify default status (ACTIVE) - Verify default role (USER) - Check createdAt timestamp

User is created successfully with all fields properly set

Password Hashing

Should hash password using bcrypt with salt

- Password should be hashed with bcrypt - Hash should start with $2a$, $2b$, or $2y$ - Password verification should work - Original password should not be stored

Password is securely hashed and can be verified

User Status Management

Should allow status changes between ACTIVE, INACTIVE, BLOCKED

- Status can be updated to all valid values - updatedAt timestamp is updated - Invalid status should throw error - Status changes are persisted

User status can be changed and persisted correctly

User Role Management

Should allow role changes between ADMIN, MANAGER, USER

- Role can be updated to all valid values - updatedAt timestamp is updated - Invalid role should throw error - Role changes are persisted

User role can be changed and persisted correctly

Email Uniqueness

Should prevent duplicate emails (case insensitive)

- Email uniqueness is enforced - Case insensitive comparison - Error thrown for duplicate emails - Valid emails are accepted

Email uniqueness is properly enforced

Soft Delete

Should mark user as deleted without removing from database

- deletedAt timestamp is set - updatedAt timestamp is updated - User remains in database - Status remains unchanged

User is soft deleted correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

CreateUserUseCase

Should create new user with hashed password and validation

- User is created with all fields - Password is hashed - Email uniqueness is checked - User count increases by 1 - Factory pattern works correctly

User is created successfully with proper validation

UpdateUserUseCase

Should update user fields and maintain data integrity

- Name can be updated - Email can be updated (with uniqueness check) - Status can be updated - Role can be updated - updatedAt is updated - Non-modified fields remain unchanged

User updates work correctly with data integrity

DeleteUserUseCase

Should soft delete user and update status

- User is marked as deleted - Status becomes INACTIVE - deletedAt timestamp is set - Error thrown for non-existent user - Multiple users can be deleted

User is soft deleted correctly

FindUserByIdUseCase

Should find user by ID regardless of status

- Active user is found - Inactive user is found - Deleted user is found - Null returned for non-existent user - All user fields are returned

User can be found by ID in all statuses

FindUserByEmailUseCase

Should find user by email (case insensitive)

- User is found by email - Case insensitive search works - Null returned for non-existent email - All user fields are returned - Works with different statuses

User can be found by email correctly

FindAllUsersUseCase

Should return paginated list of users

- Pagination works correctly - Total count is accurate - Empty list when no users - Correct page is returned - Works with different page sizes

Users are listed with proper pagination

CountUsersUseCase

Should count only active and non-deleted users

- Only active users are counted - Deleted users are not counted - Inactive users are not counted - Returns 0 when no users - Works with different roles

User count is accurate for active users

AuthenticateUserUseCase

Should authenticate user and return JWT tokens

- Valid credentials return tokens - Invalid password throws error - Non-existent email throws error - Inactive user throws error - Deleted user throws error - Case insensitive email works

Authentication works correctly with proper error handling

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryUserRepository

Should provide in-memory user storage for testing

- User creation works - User finding by ID works - User finding by email works (case insensitive) - User listing with pagination works - User updating works - User deletion (soft delete) works - User counting works - Handles multiple users correctly

In-memory repository works correctly for testing

PrismaUserRepository

Should provide database user storage for production

- User creation works with database - User finding by ID works - User finding by email works - User listing with pagination works - User updating works - User deletion (soft delete) works - User counting works - Database transactions work correctly

Database repository works correctly for production

7.2 Space Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Space Entity Creation

Should create a space with all required fields and generate unique ID

- Validate all required fields (title, description, hostId) - Check unique ID generation - Verify default values - Check createdAt timestamp - Handle optional fields (photos, rules)

Space is created successfully with all fields properly set

Address and Geolocation

Should handle address information and geolocation data

- Address fields are stored correctly - Latitude and longitude are validated - Address formatting works - Geolocation data is accurate - Address updates work correctly

Address and geolocation data is handled properly

Photo Management

Should handle multiple photos for spaces

- Photos array is stored correctly - Photo URLs are validated - Multiple photos are supported - Photo updates work correctly - Photo deletion works

Photo management works correctly

Host Assignment

Should validate host assignment and permissions

- Host ID is validated - Host exists in system - Host permissions are checked - Host can manage their spaces - Host changes work correctly

Host assignment and permissions work correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

CreateSpaceUseCase

Should create new space with validation and host assignment

- Space is created with all fields - Host assignment is validated - Photos are stored correctly - Rules are optional - Factory pattern works correctly - Space count increases by 1

Space is created successfully with proper validation

UpdateSpaceUseCase

Should update space fields and maintain data integrity

- Title can be updated - Description can be updated - Photos can be updated - Rules can be updated - updatedAt is updated - Non-modified fields remain unchanged

Space updates work correctly with data integrity

DeleteSpaceUseCase

Should delete space and handle related data

- Space is deleted - Related appointments are handled - Related ratings are handled - Error thrown for non-existent space - Multiple spaces can be deleted

Space is deleted correctly with proper cleanup

FindSpaceByIdUseCase

Should find space by ID with all details

- Space is found by ID - All space fields are returned - Null returned for non-existent space - Photos are included - Average rating is calculated

Space can be found by ID with complete details

FindAllSpacesUseCase

Should return paginated list of spaces

- Pagination works correctly - Total count is accurate - Empty list when no spaces - Correct page is returned - Works with different page sizes - Includes average ratings

Spaces are listed with proper pagination

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemorySpacesRepository

Should provide in-memory space storage for testing

- Space creation works - Space finding by ID works - Space listing with pagination works - Space updating works - Space deletion works - Handles multiple spaces correctly - Average rating calculation works

In-memory repository works correctly for testing

7.3 Appointment Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Appointment Entity Creation

Should create an appointment with all required fields and validation

- Validate all required fields (userId, spaceId, date, startTime, endTime) - Check unique ID generation - Verify default status (PENDING) - Check createdAt timestamp - Validate date is not in past

Appointment is created successfully with proper validation

Date and Time Validation

Should validate appointment dates and times

- Date cannot be in the past - Start time must be before end time - Time format is validated - Date format is validated - Timezone handling works correctly

Date and time validation works correctly

Conflict Detection

Should detect scheduling conflicts for same space

- No conflicts for different spaces at same time - Conflicts detected for same space at overlapping times - Edge cases handled (exact start/end times) - Cancelled appointments don't cause conflicts - Multiple conflicts handled correctly

Conflict detection works accurately

Status Management

Should handle appointment status transitions

- Status can be PENDING, CONFIRMED, CANCELLED, REJECTED - Status transitions are validated - Status changes are logged - Status affects conflict detection - Status updates work correctly

Status management works correctly

Change Tracking

Should track appointment changes and limits

- Change count is tracked - Change limits are enforced (3 for USER/MANAGER, unlimited for ADMIN) - Change history is maintained - 2-month rescheduling limit is enforced - Change tracking works correctly

Change tracking and limits work correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

CreateAppointmentUseCase

Should create new appointment with conflict detection and validation

- Appointment is created with all fields - User and space existence is validated - Date and time validation works - Conflict detection works - Status is set to PENDING - Factory pattern works correctly

Appointment is created successfully with proper validation

UpdateAppointmentUseCase

Should update appointment with validation and change tracking

- Date and time can be updated - Status can be updated - Change tracking works - Change limits are enforced - Validation works for updates - Non-modified fields remain unchanged

Appointment updates work correctly with validation

DeleteAppointmentUseCase

Should delete appointment and handle cleanup

- Appointment is deleted - Error thrown for non-existent appointment - Works with different statuses - Multiple appointments can be deleted - Cleanup is handled correctly

Appointment is deleted correctly

FindAppointmentByIdUseCase

Should find appointment by ID with all details

- Appointment is found by ID - All appointment fields are returned - Error thrown for non-existent appointment - Works with different statuses - Complete appointment data is returned

Appointment can be found by ID with complete details

FindAppointmentsByUserIdUseCase

Should return paginated list of user appointments

- Pagination works correctly - Total count is accurate - Empty list when no appointments - Correct page is returned - Works with different page sizes - Includes all appointment details

User appointments are listed with proper pagination

FindAppointmentsBySpaceIdUseCase

Should return paginated list of space appointments

- Pagination works correctly - Total count is accurate - Empty list when no appointments - Correct page is returned - Works with different page sizes - Includes all appointment details

Space appointments are listed with proper pagination

ApproveAppointmentUseCase

Should approve appointment and send notifications

- Status changes to CONFIRMED - Notification is sent to user - Approval is logged - Works with proper permissions - Error handling works correctly

Appointment approval works correctly

RejectAppointmentUseCase

Should reject appointment and send notifications

- Status changes to REJECTED - Notification is sent to user - Rejection is logged - Works with proper permissions - Error handling works correctly

Appointment rejection works correctly

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryAppointmentRepository

Should provide in-memory appointment storage for testing

- Appointment creation works - Appointment finding by ID works - Appointment listing with pagination works - Appointment updating works - Appointment deletion works - Conflict detection works - Change tracking works - Handles multiple appointments correctly

In-memory repository works correctly for testing

7.4 Rating Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Rating Entity Creation

Should create a rating with all required fields and validation

- Validate all required fields (userId, spaceId, score) - Check unique ID generation - Verify score range (1-5) - Check createdAt timestamp - Handle optional comment field

Rating is created successfully with proper validation

Score Validation

Should validate rating score within 1-5 range

- Score must be between 1 and 5 - Integer scores are accepted - Decimal scores are rejected - Zero and negative scores are rejected - Scores above 5 are rejected

Score validation works correctly

Comment Handling

Should handle optional comment field

- Comment is optional - Comment can be empty string - Comment can be null - Comment length is validated - Comment updates work correctly

Comment handling works correctly

Average Rating Calculation

Should calculate average rating for spaces

- Average is calculated correctly - Decimal places are handled - Zero ratings return 0 - Single rating returns that rating - Multiple ratings average correctly

Average rating calculation works accurately

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

CreateRatingUseCase

Should create new rating with validation and space update

- Rating is created with all fields - Score validation works (1-5) - Comment is optional - Space average rating is updated - User can only rate once per space - Factory pattern works correctly

Rating is created successfully with proper validation

UpdateRatingUseCase

Should update rating with validation and space update

- Score can be updated (1-5) - Comment can be updated - Space average rating is recalculated - Validation works for updates - Non-modified fields remain unchanged

Rating updates work correctly with validation

DeleteRatingUseCase

Should delete rating and update space average

- Rating is deleted - Space average rating is recalculated - Error thrown for non-existent rating - Works with different scores - Multiple ratings can be deleted

Rating is deleted correctly with space update

FindRatingByIdUseCase

Should find rating by ID with all details

- Rating is found by ID - All rating fields are returned - Null returned for non-existent rating - Complete rating data is returned - Works with different scores

Rating can be found by ID with complete details

FindRatingsBySpaceIdUseCase

Should return paginated list of space ratings

- Pagination works correctly - Total count is accurate - Empty list when no ratings - Correct page is returned - Works with different page sizes - Includes all rating details

Space ratings are listed with proper pagination

FindRatingsByUserIdUseCase

Should return paginated list of user ratings

- Pagination works correctly - Total count is accurate - Empty list when no ratings - Correct page is returned - Works with different page sizes - Includes all rating details

User ratings are listed with proper pagination

GetSpaceAverageRatingUseCase

Should return average rating for a space

- Average is calculated correctly - Returns 0 when no ratings - Handles decimal averages - Works with single rating - Works with multiple ratings

Space average rating is calculated correctly

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryRatingRepository

Should provide in-memory rating storage for testing

- Rating creation works - Rating finding by ID works - Rating listing with pagination works - Rating updating works - Rating deletion works - Average calculation works - Handles multiple ratings correctly - Space and user filtering works

In-memory repository works correctly for testing

7.5 Authentication Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

JWT Token Generation

Should generate valid JWT tokens with proper payload

- Access token is generated - Refresh token is generated - Tokens contain correct payload - Tokens have proper expiration - Tokens are signed correctly

JWT tokens are generated correctly

JWT Token Validation

Should validate JWT tokens and extract payload

- Valid tokens are accepted - Invalid tokens are rejected - Expired tokens are rejected - Malformed tokens are rejected - Payload extraction works correctly

JWT token validation works correctly

Password Verification

Should verify passwords against hashed values

- Correct password is verified - Incorrect password is rejected - Hash comparison works correctly - Salt handling works correctly - Performance is acceptable

Password verification works correctly

Token Blacklist

Should manage blacklisted tokens

- Tokens can be blacklisted - Blacklisted tokens are rejected - Token expiration is handled - Blacklist cleanup works - Multiple tokens can be blacklisted

Token blacklist functionality works correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

AuthenticateUseCase

Should authenticate user and return JWT tokens

- Valid credentials return tokens - Invalid password throws error - Non-existent email throws error - Inactive user throws error - Deleted user throws error - Case insensitive email works - Tokens are properly formatted

Authentication works correctly with proper error handling

RefreshTokenUseCase

Should refresh access token using refresh token

- Valid refresh token generates new tokens - Invalid refresh token throws error - Expired refresh token throws error - Revoked refresh token throws error - New tokens are different from old ones - Refresh token is rotated

Token refresh works correctly

LogoutUseCase

Should logout user and blacklist tokens

- Access token is blacklisted - Refresh token is invalidated - User session is terminated - Blacklist is updated - Error handling works correctly

Logout functionality works correctly

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryRefreshTokenRepository

Should provide in-memory refresh token storage for testing

- Refresh token storage works - Token retrieval works - Token deletion works - Token validation works - Expiration handling works - Handles multiple tokens correctly

In-memory refresh token repository works correctly

InMemoryTokenBlacklistRepository

Should provide in-memory token blacklist storage for testing

- Token blacklisting works - Blacklist checking works - Token removal works - Expiration cleanup works - Handles multiple blacklisted tokens - Performance is acceptable

In-memory token blacklist repository works correctly

7.6 RBAC Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Role Entity Creation

Should create a role with all required fields and validation

- Validate all required fields (name, description) - Check unique ID generation - Verify role name uniqueness - Check createdAt timestamp - Handle optional description field

Role is created successfully with proper validation

Permission Entity Creation

Should create a permission with resource:operation format

- Validate all required fields (resource, operation) - Check unique ID generation - Verify permission format (resource:operation) - Check createdAt timestamp - Handle optional description field

Permission is created successfully with proper validation

Role Assignment Validation

Should validate role assignments to users

- User existence is validated - Role existence is validated - Duplicate assignments are prevented - Expiration dates are handled - Assignment permissions are checked

Role assignment validation works correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

AssignRoleUseCase

Should assign role to user with validation

- Role is assigned to user - User and role existence is validated - Duplicate assignments are prevented - Expiration date is handled - Assignment is logged - Error handling works correctly

Role assignment works correctly with validation

RevokeRoleUseCase

Should revoke role from user

- Role is revoked from user - User and role existence is validated - Revocation is logged - Error handling works correctly - Works with different roles - Multiple revocations work

Role revocation works correctly

GetRolesUseCase

Should return list of available roles

- All roles are returned - Pagination works correctly - Role details are complete - Empty list when no roles - Works with different page sizes

Roles are listed correctly

GetUserPermissionsUseCase

Should return user permissions based on roles

- User permissions are calculated - Role-based permissions are included - Permission format is correct - Duplicate permissions are removed - Works with multiple roles - Empty permissions when no roles

User permissions are calculated correctly

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryRoleRepository

Should provide in-memory role storage for testing

- Role creation works - Role finding by ID works - Role listing works - Role updating works - Role deletion works - Handles multiple roles correctly - Role name uniqueness works

In-memory role repository works correctly

InMemoryPermissionRepository

Should provide in-memory permission storage for testing

- Permission creation works - Permission finding by ID works - Permission listing works - Permission updating works - Permission deletion works - Handles multiple permissions correctly - Permission format validation works

In-memory permission repository works correctly

InMemoryUserRoleRepository

Should provide in-memory user-role assignment storage for testing

- Role assignment works - Role revocation works - User roles listing works - Assignment validation works - Expiration handling works - Handles multiple assignments correctly - Duplicate prevention works

In-memory user-role repository works correctly

7.7 Notification Module

Unit Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Notification Template Creation

Should create notification templates with variables

- Template creation works - Variable substitution works - Template validation works - Template format is correct - Template updates work correctly

Notification templates are created correctly

Notification Entity Creation

Should create notification with all required fields

- Validate all required fields (type, recipient, content) - Check unique ID generation - Verify notification type - Check createdAt timestamp - Handle delivery status

Notification is created successfully with proper validation

Delivery Status Tracking

Should track notification delivery status

- Status can be PENDING, SENT, FAILED - Status transitions are tracked - Delivery attempts are logged - Error handling works correctly - Status updates work correctly

Delivery status tracking works correctly

Use Case Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

SendNotificationUseCase

Should send notification through multiple channels

- Email notifications are sent - SMS notifications are sent - Push notifications are sent - Template substitution works - Delivery status is tracked - Error handling works correctly - Multiple recipients work

Notifications are sent correctly through all channels

ListNotificationsUseCase

Should return paginated list of notifications

- Pagination works correctly - Total count is accurate - Empty list when no notifications - Correct page is returned - Works with different page sizes - Includes delivery status

Notifications are listed with proper pagination

GetNotificationByIdUseCase

Should find notification by ID with all details

- Notification is found by ID - All notification fields are returned - Error thrown for non-existent notification - Complete notification data is returned - Delivery status is included

Notification can be found by ID with complete details

ListTemplatesUseCase

Should return list of available notification templates

- All templates are returned - Template details are complete - Template variables are included - Empty list when no templates - Template categories work correctly

Notification templates are listed correctly

Repository Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryNotificationRepository

Should provide in-memory notification storage for testing

- Notification creation works - Notification finding by ID works - Notification listing with pagination works - Notification updating works - Notification deletion works - Delivery status tracking works - Handles multiple notifications correctly

In-memory notification repository works correctly

8. Integration Tests

8.1 API Endpoint Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

User Endpoints (CRUD)

Should handle all user operations via REST API

- POST /users creates user - GET /users lists users with pagination - GET /users/:id finds user by ID - PUT /users/:id updates user - DELETE /users/:id soft deletes user - Proper HTTP status codes - Request/response validation works

User API endpoints work correctly

Space Endpoints (CRUD)

Should handle all space operations via REST API

- POST /spaces creates space - GET /spaces lists spaces with pagination - GET /spaces/:id finds space by ID - PUT /spaces/:id updates space - DELETE /spaces/:id deletes space - Proper HTTP status codes - Request/response validation works

Space API endpoints work correctly

Appointment Endpoints (CRUD)

Should handle all appointment operations via REST API

- POST /appointments creates appointment - GET /appointments lists appointments with pagination - GET /appointments/:id finds appointment by ID - PUT /appointments/:id updates appointment - DELETE /appointments/:id deletes appointment - Proper HTTP status codes - Request/response validation works

Appointment API endpoints work correctly

Rating Endpoints (CRUD)

Should handle all rating operations via REST API

- POST /ratings creates rating - GET /ratings lists ratings with pagination - GET /ratings/:id finds rating by ID - PUT /ratings/:id updates rating - DELETE /ratings/:id deletes rating - Proper HTTP status codes - Request/response validation works

Rating API endpoints work correctly

Authentication Endpoints

Should handle authentication operations via REST API

- POST /auth/login authenticates user - POST /auth/refresh refreshes tokens - POST /auth/logout logs out user - Proper HTTP status codes - JWT token handling works - Error responses are correct

Authentication API endpoints work correctly

RBAC Endpoints

Should handle role-based access control via REST API

- POST /rbac/assign assigns role to user - DELETE /rbac/revoke revokes role from user - GET /rbac/roles lists available roles - GET /rbac/permissions gets user permissions - Proper HTTP status codes - Authorization works correctly

RBAC API endpoints work correctly

Notification Endpoints

Should handle notification operations via REST API

- POST /notifications/send sends notification - GET /notifications lists notifications - GET /notifications/:id finds notification by ID - GET /notifications/templates lists templates - Proper HTTP status codes - Request/response validation works

Notification API endpoints work correctly

Health Check Endpoints

Should provide system health information

- GET /health returns system status - GET /health/db returns database status - GET /health/redis returns Redis status - Proper HTTP status codes - Response includes relevant metrics

Health check endpoints work correctly

8.2 Database Integration Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

PostgreSQL Connection

Should establish and maintain database connections

- Connection is established successfully - Connection pool works correctly - Connection errors are handled - Connection timeouts work - Connection recovery works

Database connections work correctly

PostgreSQL Queries

Should execute database queries correctly

- SELECT queries return correct data - INSERT queries create records - UPDATE queries modify records - DELETE queries remove records - Complex queries work correctly - Query performance is acceptable

Database queries work correctly

Redis Cache Operations

Should handle Redis cache operations

- Cache SET operations work - Cache GET operations work - Cache DELETE operations work - Cache expiration works - Cache keys are managed correctly - Cache performance is acceptable

Redis cache operations work correctly

Data Persistence

Should persist data correctly across operations

- Data is saved to database - Data is retrieved correctly - Data integrity is maintained - Transaction rollback works - Data consistency is preserved

Data persistence works correctly

Transaction Handling

Should handle database transactions correctly

- Transactions are started correctly - Transactions are committed successfully - Transactions are rolled back on errors - Nested transactions work - Transaction isolation levels work

Transaction handling works correctly

8.3 External Service Integration Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Email Service Integration

Should send emails through external service

- Email is sent successfully - Email content is correct - Email recipients are correct - Email templates work - Email delivery status is tracked - Error handling works correctly

Email service integration works correctly

SMS Service Integration

Should send SMS through external service

- SMS is sent successfully - SMS content is correct - SMS recipients are correct - SMS templates work - SMS delivery status is tracked - Error handling works correctly

SMS service integration works correctly

Push Notification Service

Should send push notifications through external service

- Push notification is sent successfully - Notification content is correct - Device tokens are handled correctly - Notification templates work - Delivery status is tracked - Error handling works correctly

Push notification service integration works correctly

Payment Service Integration

Should handle payment processing (if applicable)

- Payment processing works - Payment validation works - Payment status tracking works - Refund processing works - Payment security is maintained - Error handling works correctly

Payment service integration works correctly

9. End-to-End Tests

9.1 User Journey Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Complete User Registration and Login Flow

Should allow new user to register and login successfully

- User fills registration form - User data is validated - User is created in database - Email confirmation is sent - User can login with credentials - JWT tokens are generated - User is redirected to dashboard

Complete user registration and login works correctly

Space Booking Workflow

Should allow user to book a space successfully

- User browses available spaces - User selects a space - User fills booking form - Date and time validation works - Conflict detection works - Booking is created - Confirmation is sent to user - Space availability is updated

Space booking workflow works correctly

Rating Submission Process

Should allow user to rate a space after booking

- User can access rating form - Rating validation works (1-5) - Comment is optional - Rating is saved to database - Space average rating is updated - User can only rate once per space - Rating confirmation is shown

Rating submission process works correctly

Admin User Management Workflow

Should allow admin to manage users effectively

- Admin can view all users - Admin can create new users - Admin can update user details - Admin can change user status - Admin can assign roles - Admin can delete users - Changes are reflected immediately

Admin user management workflow works correctly

Manager Space Approval Workflow

Should allow manager to approve space bookings

- Manager can view pending bookings - Manager can approve bookings - Manager can reject bookings - Notifications are sent to users - Booking status is updated - Space availability is managed - Approval history is maintained

Manager space approval workflow works correctly

9.2 Cross-Module Integration Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

User Creates Appointment and Receives Notification

Should send notification when appointment is created

- User creates appointment - Appointment is saved to database - Notification is triggered - Email notification is sent - SMS notification is sent (if enabled) - Push notification is sent (if enabled) - Notification status is tracked

Cross-module notification integration works correctly

Manager Approves Appointment and User Gets Notified

Should send notification when appointment is approved

- Manager approves appointment - Appointment status is updated - Notification is triggered - User receives approval notification - Email content is correct - Notification delivery is tracked - User can view updated status

Approval notification integration works correctly

User Rates Space and Average Rating Updates

Should update space average rating when user rates

- User submits rating - Rating is saved to database - Space average rating is recalculated - Space record is updated - Rating count is updated - Average is displayed correctly - Rating history is maintained

Rating integration with space updates works correctly

Admin Assigns Role and User Gets New Permissions

Should update user permissions when role is assigned

- Admin assigns role to user - Role assignment is saved - User permissions are recalculated - Permission cache is updated - User can access new features - Role assignment is logged - Permission changes are immediate

Role assignment and permission integration works correctly

10. Performance Tests

10.1 Load Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

API Response Time Under Normal Load

Should maintain acceptable response times under normal load

- Response time < 200ms for simple operations - Response time < 500ms for complex operations - Response time < 1000ms for heavy operations - 95th percentile response time is acceptable - Response time consistency is maintained

API performance meets requirements under normal load

Database Query Performance

Should execute database queries efficiently

- Simple queries execute in < 50ms - Complex queries execute in < 200ms - Query optimization is effective - Database indexes are utilized - Query caching works correctly - Database connection pooling works

Database query performance meets requirements

Concurrent User Handling

Should handle multiple concurrent users effectively

- System supports 100+ concurrent users - Response times remain acceptable - No data corruption occurs - Session management works correctly - Resource usage is reasonable - System stability is maintained

Concurrent user handling works correctly

Memory Usage Monitoring

Should monitor and manage memory usage effectively

- Memory usage is tracked - Memory leaks are detected - Garbage collection works correctly - Memory usage is optimized - Memory alerts are triggered - Memory cleanup works correctly

Memory usage monitoring works correctly

10.2 Stress Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Maximum Concurrent Users

Should determine system capacity limits

- System handles maximum load - Performance degrades gracefully - Error rates remain acceptable - System doesn't crash - Recovery mechanisms work - Capacity planning data is collected

System capacity limits are determined correctly

Database Connection Limits

Should handle database connection limits

- Connection pool limits are respected - Connection timeouts work correctly - Connection errors are handled - Connection recovery works - Database performance is maintained - Connection monitoring works

Database connection limits are handled correctly

Memory and CPU Usage Under Stress

Should manage resources under stress conditions

- CPU usage is monitored - Memory usage is controlled - Resource exhaustion is prevented - Performance degradation is gradual - System stability is maintained - Resource cleanup works

Resource management under stress works correctly

Recovery After High Load

Should recover gracefully after high load

- System recovers automatically - Performance returns to normal - Data integrity is maintained - Services restart correctly - Monitoring systems work - Error rates return to normal

System recovery after high load works correctly

11. Security Tests

11.1 Authentication Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

JWT Token Validation

Should validate JWT tokens securely

- Valid tokens are accepted - Invalid tokens are rejected - Expired tokens are rejected - Malformed tokens are rejected - Token signature verification works - Token payload validation works

JWT token validation works securely

Password Strength Requirements

Should enforce strong password policies

- Minimum 8 characters required - Maximum 30 characters allowed - At least one uppercase letter required - At least one number required - Special characters are allowed - Password validation works correctly

Password strength requirements are enforced

Account Lockout Mechanisms

Should prevent brute force attacks

- Account is locked after failed attempts - Lockout duration is enforced - Lockout counter resets after success - Admin can unlock accounts - Lockout notifications are sent - Failed attempt tracking works

Account lockout mechanisms work correctly

Session Management

Should manage user sessions securely

- Sessions are created correctly - Sessions expire properly - Sessions are invalidated on logout - Session data is protected - Concurrent sessions are handled - Session cleanup works correctly

Session management works securely

11.2 Authorization Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

Role-Based Access Control

Should enforce role-based permissions

- User roles are validated - Role permissions are enforced - Access is denied for unauthorized roles - Role changes are immediate - Role inheritance works correctly - Role validation works correctly

Role-based access control works correctly

Permission Validation

Should validate user permissions for actions

- Permission checks work correctly - Resource access is controlled - Operation permissions are enforced - Permission caching works - Permission updates are immediate - Permission inheritance works

Permission validation works correctly

API Endpoint Protection

Should protect API endpoints with authentication

- Protected endpoints require authentication - Unauthorized access is blocked - Token validation works - Permission checks work - Error responses are secure - Rate limiting works

API endpoint protection works correctly

Data Access Restrictions

Should restrict data access based on permissions

- Users can only access authorized data - Data filtering works correctly - Cross-user data access is prevented - Admin access is properly controlled - Data privacy is maintained - Access logging works

Data access restrictions work correctly

11.3 Input Validation Tests

Test Case
Expected Behavior
Verifications
Acceptance Criteria

SQL Injection Prevention

Should prevent SQL injection attacks

- Malicious SQL is rejected - Parameterized queries work - Input sanitization works - Database queries are safe - Error messages don't leak data - SQL injection attempts are logged

SQL injection prevention works correctly

XSS Protection

Should prevent cross-site scripting attacks

- Malicious scripts are sanitized - HTML encoding works correctly - Script tags are blocked - Event handlers are sanitized - XSS attempts are logged - Content security policy works

XSS protection works correctly

Input Sanitization

Should sanitize all user inputs

- Special characters are handled - HTML entities are encoded - Script content is removed - Input length is validated - Input format is validated - Sanitization is consistent

Input sanitization works correctly

File Upload Security

Should secure file upload functionality

- File type validation works - File size limits are enforced - Malicious files are rejected - File storage is secure - File access is controlled - Upload logging works correctly

File upload security works correctly

12. Test Data Management

12.1 Test Factories

Test Case
Expected Behavior
Verifications
Acceptance Criteria

makeUser() Factory

Should create user entities with customizable properties

- User is created with default values - Custom properties override defaults - All user fields are properly set - User ID is generated correctly - Password is hashed correctly - User validation works - Factory is reusable

User factory creates valid user entities

makeSpace() Factory

Should create space entities with customizable properties

- Space is created with default values - Custom properties override defaults - All space fields are properly set - Space ID is generated correctly - Photos array is handled correctly - Space validation works - Factory is reusable

Space factory creates valid space entities

makeAppointment() Factory

Should create appointment entities with customizable properties

- Appointment is created with default values - Custom properties override defaults - All appointment fields are properly set - Appointment ID is generated correctly - Date and time validation works - Appointment validation works - Factory is reusable

Appointment factory creates valid appointment entities

makeRating() Factory

Should create rating entities with customizable properties

- Rating is created with default values - Custom properties override defaults - All rating fields are properly set - Rating ID is generated correctly - Score validation works (1-5) - Rating validation works - Factory is reusable

Rating factory creates valid rating entities

12.2 Test Repositories

Test Case
Expected Behavior
Verifications
Acceptance Criteria

InMemoryUserRepository

Should provide in-memory user storage for testing

- User creation works correctly - User retrieval by ID works - User retrieval by email works - User listing with pagination works - User updating works - User deletion (soft delete) works - User counting works - Handles multiple users correctly

In-memory user repository works correctly for testing

InMemorySpaceRepository

Should provide in-memory space storage for testing

- Space creation works correctly - Space retrieval by ID works - Space listing with pagination works - Space updating works - Space deletion works - Average rating calculation works - Handles multiple spaces correctly

In-memory space repository works correctly for testing

InMemoryAppointmentRepository

Should provide in-memory appointment storage for testing

- Appointment creation works correctly - Appointment retrieval by ID works - Appointment listing with pagination works - Appointment updating works - Appointment deletion works - Conflict detection works - Handles multiple appointments correctly

In-memory appointment repository works correctly for testing

InMemoryRatingRepository

Should provide in-memory rating storage for testing

- Rating creation works correctly - Rating retrieval by ID works - Rating listing with pagination works - Rating updating works - Rating deletion works - Average calculation works - Handles multiple ratings correctly

In-memory rating repository works correctly for testing

InMemoryRoleRepository

Should provide in-memory role storage for testing

- Role creation works correctly - Role retrieval by ID works - Role listing works - Role updating works - Role deletion works - Role name uniqueness works - Handles multiple roles correctly

In-memory role repository works correctly for testing

InMemoryPermissionRepository

Should provide in-memory permission storage for testing

- Permission creation works correctly - Permission retrieval by ID works - Permission listing works - Permission updating works - Permission deletion works - Permission format validation works - Handles multiple permissions correctly

In-memory permission repository works correctly for testing

13. Test Execution Strategy

13.1 Test Execution Order

Test Type
Execution Order
Description
Expected Duration

Unit Tests

1st Priority

Fast execution, high isolation, test individual components

2-5 minutes

Integration Tests

2nd Priority

Medium execution time, test component interactions

5-15 minutes

End-to-End Tests

3rd Priority

Slow execution, test complete user workflows

15-30 minutes

Performance Tests

4th Priority

Separate execution, resource intensive testing

30-60 minutes

Security Tests

5th Priority

Separate execution, specialized security tools

10-20 minutes

13.2 Test Environment Setup

Environment
Purpose
Configuration
Test Coverage

Development Environment

Local development and unit testing

- Local database - In-memory repositories - Mock external services - Fast execution

Unit tests, integration tests

Staging Environment

Integration and E2E testing

- Staging database - Real external services - Production-like configuration - Full system testing

Integration tests, E2E tests

Production Environment

Performance and security testing

- Production database - Real external services - Production configuration - Load testing

Performance tests, security tests

14. Test Reporting

14.1 Test Metrics

Metric
Description
Target
Measurement Method

Test Coverage Percentage

Percentage of code covered by tests

≥ 80%

Code coverage tools (Vitest, Jest)

Pass/Fail Ratios

Ratio of passing vs failing tests

≥ 95% pass rate

Test execution reports

Execution Time Metrics

Time taken to execute test suites

Unit: < 5min, Integration: < 15min, E2E: < 30min

Test execution timing

Bug Severity Distribution

Distribution of bugs by severity level

Blocker: 0%, Severe: < 5%, Moderate: < 15%

Bug tracking system

Test Reliability

Consistency of test results

≥ 98% reliability

Test flakiness analysis

Performance Benchmarks

Response time and throughput metrics

Meets performance requirements

Performance monitoring tools

14.2 Test Reports

Report Type
Frequency
Content
Audience

Daily Test Execution Reports

Daily

- Test execution results - Pass/fail statistics - Failed test details - Performance metrics - Coverage updates

Development team, QA team

Weekly Test Coverage Reports

Weekly

- Coverage trends - Coverage gaps - New test additions - Coverage improvements - Coverage targets

Development team, QA team, Management

Monthly Test Quality Metrics

Monthly

- Test quality trends - Bug detection rates - Test effectiveness - Quality improvements - Process improvements

QA team, Management

Bug Trend Analysis

Monthly

- Bug severity trends - Bug frequency analysis - Bug resolution times - Bug prevention strategies - Quality improvements

Development team, QA team, Management

15. Continuous Integration

15.1 CI/CD Pipeline

Pipeline Stage
Description
Tools
Success Criteria

Code Quality Check

Static code analysis and linting

ESLint, Prettier, SonarQube

- No critical code smells - Code style compliance - Security vulnerabilities detected

Unit Test Execution

Run all unit tests automatically

Vitest, Jest

- All unit tests pass - Coverage ≥ 80% - Execution time < 5 minutes

Integration Test Execution

Run integration tests

Vitest, Supertest

- All integration tests pass - Database integration works - API endpoints work correctly

E2E Test Execution

Run end-to-end tests

Cypress, Selenium

- All E2E tests pass - User workflows work correctly - Cross-browser compatibility

Performance Test Execution

Run performance tests

Artillery, JMeter

- Performance benchmarks met - Response times acceptable - Load handling works

Security Test Execution

Run security tests

OWASP ZAP, npm audit

- No critical security vulnerabilities - Security scan passes - Dependency vulnerabilities resolved

Deployment

Deploy to staging/production

Docker, Kubernetes

- Application deploys successfully - Health checks pass - Monitoring works correctly

15.2 Quality Gates

Quality Gate
Criteria
Enforcement
Action on Failure

Test Coverage

≥ 80% code coverage

Automated

- Block deployment - Generate report - Notify development team

Test Results

All tests must pass

Automated

- Block deployment - Generate failure report - Notify development team

Bug Severity

No Blocker/Critical bugs

Automated

- Block deployment - Generate bug report - Notify QA team

Performance

Meet performance benchmarks

Automated

- Block deployment - Generate performance report - Notify DevOps team

Security

No critical security vulnerabilities

Automated

- Block deployment - Generate security report - Notify security team

Code Quality

Pass code quality checks

Automated

- Block deployment - Generate quality report - Notify development team


Version: 1.0.0 Last Update: July 2025 Author: Antonio Silva Email: contato@antoniobsilva.com.br

Last updated