# Integration Tests

This directory contains integration tests for the Calypso API.

## Setup

### 1. Create Test Database (Optional)

For isolated testing, create a separate test database:

```bash
sudo -u postgres createdb calypso_test
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE calypso_test TO calypso;"
```

### 2. Environment Variables

Set test database configuration:

```bash
export TEST_DB_HOST=localhost
export TEST_DB_PORT=5432
export TEST_DB_USER=calypso
export TEST_DB_PASSWORD=calypso123
export TEST_DB_NAME=calypso_test  # or use existing 'calypso' database
```

Or use the existing database:

```bash
export TEST_DB_NAME=calypso
export TEST_DB_PASSWORD=calypso123
```

## Running Tests

### Run All Integration Tests

```bash
cd backend
go test ./tests/integration/... -v
```

### Run Specific Test

```bash
go test ./tests/integration/... -run TestHealthEndpoint -v
```

### Run with Coverage

```bash
go test -cover ./tests/integration/... -v
```

## Test Structure

- `setup.go` - Test database setup and helper functions
- `api_test.go` - API endpoint integration tests

## Test Coverage

### ✅ Implemented Tests

1. **TestHealthEndpoint** - Tests enhanced health check endpoint
2. **TestLoginEndpoint** - Tests user login with password verification
3. **TestLoginEndpoint_WrongPassword** - Tests wrong password rejection
4. **TestGetCurrentUser** - Tests authenticated user info retrieval
5. **TestListAlerts** - Tests monitoring alerts endpoint

### ⏳ Future Tests

- Storage endpoints
- SCST endpoints
- VTL endpoints
- Task management
- IAM endpoints

## Notes

- Tests use the actual database (test or production)
- Tests clean up data after each test run
- Tests create test users with proper password hashing
- Tests verify authentication and authorization

