diff --git a/pkg/setup/client.go b/pkg/setup/client.go index 98fa6a0e7a0d9e7d7676b89b43e096121f1804fd..cc103faf1dd4dca2ee1547e88b150819ebb730a9 100644 --- a/pkg/setup/client.go +++ b/pkg/setup/client.go @@ -182,7 +182,9 @@ func (s *Setup) UninstallClients(ctx context.Context) error { func (s *Setup) UninstallClient(ctx context.Context, c ClientConfig) error { if c.DeleteFn(s, c.client) { - return s.content.Clients.Delete(ctx, s.SpaceID, c.client.ID) + if err := s.content.Clients.Delete(ctx, s.SpaceID, c.client.ID); err != nil && !strings.Contains(err.Error(), clients.ErrNotFound.Error()) { + return err + } } return nil } diff --git a/pkg/setup/setup_test.go b/pkg/setup/setup_test.go index 979e29053bdb5316495a409aedd079afe34cb711..162c5188bed62bcedc0be8afcfc462962ed43e86 100644 --- a/pkg/setup/setup_test.go +++ b/pkg/setup/setup_test.go @@ -822,6 +822,58 @@ func TestSetupUninstall(t *testing.T) { itmMock.AssertExpectations(t) }) + t.Run("Remove, with clients NotFound error", func(t *testing.T) { + collsMock := &collectionMock.Collections{} + for _, collection := range getCollections() { + collsMock.On("Delete", mock.Anything, spaceID, envID, collection.ID). + Return(nil). + Once() + } + + rMock := &rolesMock.Roles{} + for _, role := range getRoles() { + rMock.On("Delete", mock.Anything, spaceID, role.ID). + Return(nil). + Once() + } + + clMock := &clientsMock.Clients{} + clMock.On("Delete", mock.Anything, spaceID, mock.Anything). + Return(clients.ErrNotFound). + Once() + + itmMock := &itemsMock.Items{} + for _, act := range getActions() { + itmMock.On("Delete", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { + del := args[1].(*items.Item) + require.Equal(t, spaceID, del.SpaceID) + require.Equal(t, envID, del.EnvID) + require.Equal(t, extension.ActionsCollectionID, del.CollectionID) + require.Equal(t, act.ID, del.ID) + }). + Return(nil). + Once() + } + + setup := newSetup(&content.Content{ + Collections: collsMock, + Clients: clMock, + Roles: rMock, + Items: itmMock, + }, t) + + setup = setup.WithRemove(true) + err := setup.Uninstall(context.Background()) + + require.NoError(t, err) + require.False(t, setup.HasErrors()) + + rMock.AssertExpectations(t) + collsMock.AssertExpectations(t) + clMock.AssertExpectations(t) + itmMock.AssertExpectations(t) + }) + t.Run("Can't uninstall clients, storage returns error", func(t *testing.T) { rMock := &rolesMock.Roles{}