TestDeleteUserHandler tests the deleteUserHandler function
(t *testing.T)
| 301 | |
| 302 | // TestDeleteUserHandler tests the deleteUserHandler function |
| 303 | func TestDeleteUserHandler(t *testing.T) { |
| 304 | ovl, cleanup := setupTestOverlord(t) |
| 305 | defer cleanup() |
| 306 | |
| 307 | // Get the router with proper configuration |
| 308 | router := ovl.registerRoutes() |
| 309 | |
| 310 | // Login to get a JWT token |
| 311 | adminJWTToken, err := loginAs(router, adminUsername) |
| 312 | if err != nil { |
| 313 | t.Fatalf("Failed to login: %v", err) |
| 314 | } |
| 315 | |
| 316 | // Create a new test user to be deleted. |
| 317 | err = ovl.dbManager.CreateUser("usertobedeleted", "userpass", false) |
| 318 | if err != nil { |
| 319 | t.Fatalf("Failed to create test user: %v", err) |
| 320 | } |
| 321 | |
| 322 | // Test with admin user |
| 323 | req := createAuthRequest(adminJWTToken, "DELETE", "/api/users/usertobedeleted", nil) |
| 324 | rr := httptest.NewRecorder() |
| 325 | |
| 326 | router.ServeHTTP(rr, req) |
| 327 | |
| 328 | // Check response |
| 329 | if rr.Code != http.StatusOK { |
| 330 | t.Errorf("Expected status code 200, got %d", rr.Code) |
| 331 | } |
| 332 | |
| 333 | // Verify the user was deleted |
| 334 | exists, _ := userExists(ovl.dbManager, "usertobedeleted") |
| 335 | if exists { |
| 336 | t.Errorf("User 'usertobedeleted' should have been deleted from the database") |
| 337 | } |
| 338 | |
| 339 | // Test deleting the admin user (should be prevented) |
| 340 | req = createAuthRequest(adminJWTToken, "DELETE", "/api/users/admin", nil) |
| 341 | rr = httptest.NewRecorder() |
| 342 | |
| 343 | router.ServeHTTP(rr, req) |
| 344 | |
| 345 | // Check response (should be bad request - cannot delete admin) |
| 346 | if rr.Code != http.StatusBadRequest { |
| 347 | t.Errorf("Expected status code 400, got %d", rr.Code) |
| 348 | } |
| 349 | |
| 350 | // Verify admin still exists |
| 351 | exists, _ = userExists(ovl.dbManager, "admin") |
| 352 | if !exists { |
| 353 | t.Errorf("User 'admin' should still exist in the database") |
| 354 | } |
| 355 | |
| 356 | // Test with non-admin user (should be forbidden by middleware) |
| 357 | userJWTToken, err := loginAs(router, testUsername) |
| 358 | if err != nil { |
| 359 | t.Fatalf("Failed to login: %v", err) |
| 360 | } |
nothing calls this directly
no test coverage detected