From bc52b51dd972c00e855efed9086215e4d938460a Mon Sep 17 00:00:00 2001 From: Valera Shaitorov <shaitorov@perx.ru> Date: Mon, 26 Jun 2023 17:13:55 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D0=B2=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=20=D0=BA=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=8B=D1=82=D0=B0?= =?UTF-8?q?=D0=B5=D0=BC=D1=81=D1=8F=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/setup/client.go | 4 +++- pkg/setup/setup_test.go | 52 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/pkg/setup/client.go b/pkg/setup/client.go index 98fa6a0e..cc103faf 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 979e2905..162c5188 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{} -- GitLab