MCPcopy Create free account
hub / github.com/aitjcize/Overlord / TestDeleteUserHandler

Function TestDeleteUserHandler

overlord/admin_api_test.go:303–377  ·  view source on GitHub ↗

TestDeleteUserHandler tests the deleteUserHandler function

(t *testing.T)

Source from the content-addressed store, hash-verified

301
302// TestDeleteUserHandler tests the deleteUserHandler function
303func 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 }

Callers

nothing calls this directly

Calls 7

setupTestOverlordFunction · 0.85
loginAsFunction · 0.85
createAuthRequestFunction · 0.85
userExistsFunction · 0.85
registerRoutesMethod · 0.80
CreateUserMethod · 0.80
ServeHTTPMethod · 0.80

Tested by

no test coverage detected