Implement admin handlers integration test

This commit is contained in:
2024-11-27 21:28:59 +01:00
parent 4ddf1f570f
commit fbb8fa3a60
3 changed files with 268 additions and 14 deletions

View File

@@ -91,23 +91,26 @@ func setupTestHarness(t *testing.T) *testHarness {
api.SetupRoutes(r, database, storageSvc, authMiddleware, sessionSvc)
})
// Create test users
adminUser, adminToken := createTestUser(t, database, sessionSvc, "admin@test.com", "admin123", models.RoleAdmin)
regularUser, regularToken := createTestUser(t, database, sessionSvc, "user@test.com", "user123", models.RoleEditor)
return &testHarness{
h := &testHarness{
DB: database,
Storage: storageSvc,
Router: router,
Handler: handler,
JWTManager: jwtSvc,
SessionSvc: sessionSvc,
AdminUser: adminUser,
AdminToken: adminToken,
RegularUser: regularUser,
RegularToken: regularToken,
TempDirectory: tempDir,
}
// Create test users
adminUser, adminToken := h.createTestUser(t, database, sessionSvc, "admin@test.com", "admin123", models.RoleAdmin)
regularUser, regularToken := h.createTestUser(t, database, sessionSvc, "user@test.com", "user123", models.RoleEditor)
h.AdminUser = adminUser
h.AdminToken = adminToken
h.RegularUser = regularUser
h.RegularToken = regularToken
return h
}
// teardownTestHarness cleans up the test environment
@@ -124,7 +127,7 @@ func (h *testHarness) teardown(t *testing.T) {
}
// createTestUser creates a test user and returns the user and access token
func createTestUser(t *testing.T, db db.Database, sessionSvc *auth.SessionService, email, password string, role models.UserRole) (*models.User, string) {
func (h *testHarness) createTestUser(t *testing.T, db db.Database, sessionSvc *auth.SessionService, email, password string, role models.UserRole) (*models.User, string) {
t.Helper()
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
@@ -144,6 +147,12 @@ func createTestUser(t *testing.T, db db.Database, sessionSvc *auth.SessionServic
t.Fatalf("Failed to create user: %v", err)
}
// Initialize the default workspace directory in storage
err = h.Storage.InitializeUserWorkspace(user.ID, user.LastWorkspaceID)
if err != nil {
t.Fatalf("Failed to initialize user workspace: %v", err)
}
session, accessToken, err := sessionSvc.CreateSession(user.ID, string(user.Role))
if err != nil {
t.Fatalf("Failed to create session: %v", err)