Allow forced server deletion
This commit is contained in:
@@ -580,11 +580,21 @@ func TestCoreServiceDeletesServerInstancesWithPasswordConfirmation(t *testing.T)
|
||||
if err := svc.store.ServerInstances().Update(runningTarget); err != nil {
|
||||
t.Fatalf("set running target state: %v", err)
|
||||
}
|
||||
installingTarget, err := svc.CreateServerInstanceForSession(ownerSession, domain.ServerInstance{
|
||||
ID: "server-delete-installing",
|
||||
PluginID: plugin.ID,
|
||||
RunEndpointID: endpoint.ID,
|
||||
Name: "Delete Installing Target",
|
||||
State: domain.ServerInstanceStateInstalling,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("create installing target: %v", err)
|
||||
}
|
||||
|
||||
if _, err := svc.DeleteServerInstanceForSession(otherSession, ownerInstance.ID, "secret-password"); !errors.Is(err, ErrForbidden) {
|
||||
if _, err := svc.DeleteServerInstanceForSession(otherSession, ownerInstance.ID, domain.ServerDeletionRequest{Password: "secret-password"}); !errors.Is(err, ErrForbidden) {
|
||||
t.Fatalf("expected non-owner delete to be forbidden, got %v", err)
|
||||
}
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, ""); err == nil {
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, domain.ServerDeletionRequest{}); err == nil {
|
||||
t.Fatalf("expected missing password to fail")
|
||||
} else {
|
||||
var validationErr validator.ValidationError
|
||||
@@ -592,25 +602,25 @@ func TestCoreServiceDeletesServerInstancesWithPasswordConfirmation(t *testing.T)
|
||||
t.Fatalf("expected missing password to be validation error, got %v", err)
|
||||
}
|
||||
}
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, "wrong-password"); !errors.Is(err, ErrForbidden) {
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, domain.ServerDeletionRequest{Password: "wrong-password"}); !errors.Is(err, ErrForbidden) {
|
||||
t.Fatalf("expected wrong password to be forbidden, got %v", err)
|
||||
}
|
||||
|
||||
deletedOwner, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, "secret-password")
|
||||
deletedOwner, err := svc.DeleteServerInstanceForSession(ownerSession, ownerInstance.ID, domain.ServerDeletionRequest{Password: "secret-password"})
|
||||
if err != nil {
|
||||
t.Fatalf("delete owner instance: %v", err)
|
||||
}
|
||||
if deletedOwner.State != domain.ServerInstanceStateDeleted {
|
||||
t.Fatalf("expected deleted owner state, got %+v", deletedOwner)
|
||||
}
|
||||
deletedAdmin, err := svc.DeleteServerInstanceForSession(adminSession, adminTarget.ID, "secret-password")
|
||||
deletedAdmin, err := svc.DeleteServerInstanceForSession(adminSession, adminTarget.ID, domain.ServerDeletionRequest{Password: "secret-password"})
|
||||
if err != nil {
|
||||
t.Fatalf("delete admin target: %v", err)
|
||||
}
|
||||
if deletedAdmin.State != domain.ServerInstanceStateDeleted {
|
||||
t.Fatalf("expected deleted admin state, got %+v", deletedAdmin)
|
||||
}
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, runningTarget.ID, "secret-password"); err == nil {
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, runningTarget.ID, domain.ServerDeletionRequest{Password: "secret-password"}); err == nil {
|
||||
t.Fatalf("expected running instance delete to fail")
|
||||
} else {
|
||||
var validationErr validator.ValidationError
|
||||
@@ -618,6 +628,23 @@ func TestCoreServiceDeletesServerInstancesWithPasswordConfirmation(t *testing.T)
|
||||
t.Fatalf("expected running delete to be validation error, got %v", err)
|
||||
}
|
||||
}
|
||||
if _, err := svc.DeleteServerInstanceForSession(ownerSession, installingTarget.ID, domain.ServerDeletionRequest{Password: "secret-password", Force: true, Confirmation: "not enough"}); err == nil {
|
||||
t.Fatalf("expected installing force delete without exact confirmation to fail")
|
||||
}
|
||||
forcedRunning, err := svc.DeleteServerInstanceForSession(ownerSession, runningTarget.ID, domain.ServerDeletionRequest{Password: "secret-password", Force: true, Confirmation: ServerDeletionForceConfirmation})
|
||||
if err != nil {
|
||||
t.Fatalf("force delete running target: %v", err)
|
||||
}
|
||||
if forcedRunning.State != domain.ServerInstanceStateDeleted {
|
||||
t.Fatalf("expected forced running target deleted, got %+v", forcedRunning)
|
||||
}
|
||||
forcedInstalling, err := svc.DeleteServerInstanceForSession(ownerSession, installingTarget.ID, domain.ServerDeletionRequest{Password: "secret-password", Force: true, Confirmation: ServerDeletionForceConfirmation})
|
||||
if err != nil {
|
||||
t.Fatalf("force delete installing target: %v", err)
|
||||
}
|
||||
if forcedInstalling.State != domain.ServerInstanceStateDeleted {
|
||||
t.Fatalf("expected forced installing target deleted, got %+v", forcedInstalling)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoreServiceMetricsAndConfigReadAreRoleScoped(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user