diff --git a/integrationtest/disable_user_test.go b/integrationtest/disable_user_test.go new file mode 100644 index 0000000000000000000000000000000000000000..7adb0b830beadd5ad55d96bd906ea77a2482e0be --- /dev/null +++ b/integrationtest/disable_user_test.go @@ -0,0 +1,53 @@ +package integrationtest + +import ( + "testing" + + as "git.autistici.org/ai3/accountserver" +) + +func TestIntegration_DisableUser(t *testing.T) { + stop, _, c := startService(t) + defer stop() + + username := "uno@investici.org" + err := c.request("/api/user/disable", &as.DisableUserRequest{ + UserRequestBase: as.UserRequestBase{ + RequestBase: as.RequestBase{ + SSO: c.ssoTicket(username), + }, + Username: username, + }, + }, nil) + if err != nil { + t.Fatalf("DisableUser(): %v", err) + } + + // Normal GetUser does not return the user anymore. + if _, err := c.getUser(username); err == nil { + t.Fatal("GetUser() returns user after deletion") + } + + // We have to specify IncludeInactive to get it. + var user as.User + err = c.request("/api/user/get", &as.GetUserRequest{ + UserRequestBase: as.UserRequestBase{ + RequestBase: as.RequestBase{ + SSO: c.ssoTicket(testAdminUser, testAdminGroup), + }, + Username: username, + }, + IncludeInactive: true, + }, &user) + if err != nil { + t.Fatalf("GetUser(include_inactive=true) error: %v", err) + } + if user.Status != as.UserStatusInactive { + t.Errorf("user status is not inactive: %s", user.Status) + } + for _, r := range user.Resources { + if r.Status != as.ResourceStatusInactive { + t.Errorf("resource %s status is not inactive: %s", r.ID.String(), r.Status) + } + } +}