56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/noteapp/backend/internal/infrastructure/database"
|
|
)
|
|
|
|
// TestDatabaseConnection tests MongoDB connection
|
|
func TestDatabaseConnection(t *testing.T) {
|
|
mongoURL := "mongodb://admin:password@localhost:27017/noteapp?authSource=admin"
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
|
|
db, err := database.NewDatabase(ctx, mongoURL)
|
|
if err != nil {
|
|
t.Fatalf("Failed to connect to database: %v", err)
|
|
}
|
|
defer db.Close(ctx)
|
|
|
|
t.Log("✓ Successfully connected to MongoDB")
|
|
}
|
|
|
|
// TestAPIHealth tests the health check endpoint
|
|
func TestAPIHealth(t *testing.T) {
|
|
resp, err := http.Get("http://localhost:8080/health")
|
|
if err != nil {
|
|
t.Skipf("Skipping test - server not running: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
t.Fatalf("Expected status 200, got %d", resp.StatusCode)
|
|
}
|
|
|
|
t.Log("✓ Health check passed")
|
|
}
|
|
|
|
// TestAuthenticationFlow does an integration test of auth flow
|
|
func TestAuthenticationFlow(t *testing.T) {
|
|
log.Println("Integration test: Authentication flow")
|
|
log.Println("1. Register new user")
|
|
log.Println("2. Login with credentials")
|
|
log.Println("3. Use access token to access protected endpoint")
|
|
log.Println("4. Refresh access token")
|
|
log.Println("5. Logout")
|
|
|
|
fmt.Println("\nTo run: cd backend && go test ./tests/integration/...")
|
|
}
|