diff --git a/api4/system_test.go b/api4/system_test.go index d576fad0f9..828b7331a2 100644 --- a/api4/system_test.go +++ b/api4/system_test.go @@ -869,17 +869,32 @@ func TestCompleteOnboarding(t *testing.T) { CheckOKStatus(t, resp) }) - installedPlugins, resp, err := th.SystemAdminClient.GetPlugins() - require.NoError(t, err) - CheckOKStatus(t, resp) + received := make(chan struct{}) - found := false - for _, p := range installedPlugins.Active { - if p.Id == "testplugin2" { - found = true + go func() { + for { + installedPlugins, resp, err := th.SystemAdminClient.GetPlugins() + if err != nil || resp.StatusCode != http.StatusOK { + time.Sleep(500 * time.Millisecond) + continue + } + + for _, p := range installedPlugins.Active { + if p.Id == "testplugin2" { + received <- struct{}{} + return + } + } + time.Sleep(500 * time.Millisecond) } + }() + + select { + case <-received: + break + case <-time.After(15 * time.Second): + require.Fail(t, "timed out waiting testplugin2 to be installed and enabled ") } - require.True(t, found, "testplugin2 should have been installed and enabled") }) } diff --git a/app/onboarding.go b/app/onboarding.go index d621d28b3f..66a6f37bfc 100644 --- a/app/onboarding.go +++ b/app/onboarding.go @@ -5,7 +5,6 @@ package app import ( "net/http" - "sync" "github.com/pkg/errors" @@ -23,12 +22,9 @@ func (a *App) CompleteOnboarding(c *request.Context, request *model.CompleteOnbo pluginContext := pluginContext(c) - var wg sync.WaitGroup for _, pluginID := range request.InstallPlugins { - wg.Add(1) go func(id string) { - defer wg.Done() installRequest := &model.InstallMarketplacePluginRequest{ Id: id, } @@ -68,8 +64,6 @@ func (a *App) CompleteOnboarding(c *request.Context, request *model.CompleteOnbo return model.NewAppError("setFirstAdminCompleteSetup", "api.error_set_first_admin_complete_setup", nil, err.Error(), http.StatusInternalServerError) } - wg.Wait() - return nil }