feat: manage health settings using Coder API (#10861)

This commit is contained in:
Marcin Tojek
2023-11-28 18:15:17 +01:00
committed by GitHub
parent 452668c893
commit 19b6d194fc
20 changed files with 603 additions and 4 deletions
+103
View File
@@ -14,6 +14,7 @@ import (
"github.com/coder/coder/v2/coderd/coderdtest"
"github.com/coder/coder/v2/coderd/healthcheck"
"github.com/coder/coder/v2/coderd/healthcheck/derphealth"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/testutil"
)
@@ -232,6 +233,108 @@ func TestDebugHealth(t *testing.T) {
})
}
func TestHealthSettings(t *testing.T) {
t.Parallel()
t.Run("InitialState", func(t *testing.T) {
t.Parallel()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
// given
adminClient := coderdtest.New(t, nil)
_ = coderdtest.CreateFirstUser(t, adminClient)
// when
settings, err := adminClient.HealthSettings(ctx)
require.NoError(t, err)
// then
require.Equal(t, codersdk.HealthSettings{DismissedHealthchecks: []string{}}, settings)
})
t.Run("DismissSection", func(t *testing.T) {
t.Parallel()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
// given
adminClient := coderdtest.New(t, nil)
_ = coderdtest.CreateFirstUser(t, adminClient)
expected := codersdk.HealthSettings{
DismissedHealthchecks: []string{healthcheck.SectionDERP, healthcheck.SectionWebsocket},
}
// when: dismiss "derp" and "websocket"
err := adminClient.PutHealthSettings(ctx, expected)
require.NoError(t, err)
// then
settings, err := adminClient.HealthSettings(ctx)
require.NoError(t, err)
require.Equal(t, expected, settings)
})
t.Run("UnDismissSection", func(t *testing.T) {
t.Parallel()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
// given
adminClient := coderdtest.New(t, nil)
_ = coderdtest.CreateFirstUser(t, adminClient)
initial := codersdk.HealthSettings{
DismissedHealthchecks: []string{healthcheck.SectionDERP, healthcheck.SectionWebsocket},
}
err := adminClient.PutHealthSettings(ctx, initial)
require.NoError(t, err)
expected := codersdk.HealthSettings{
DismissedHealthchecks: []string{healthcheck.SectionDERP},
}
// when: undismiss "websocket"
err = adminClient.PutHealthSettings(ctx, expected)
require.NoError(t, err)
// then
settings, err := adminClient.HealthSettings(ctx)
require.NoError(t, err)
require.Equal(t, expected, settings)
})
t.Run("NotModified", func(t *testing.T) {
t.Parallel()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
defer cancel()
// given
adminClient := coderdtest.New(t, nil)
_ = coderdtest.CreateFirstUser(t, adminClient)
expected := codersdk.HealthSettings{
DismissedHealthchecks: []string{healthcheck.SectionDERP, healthcheck.SectionWebsocket},
}
err := adminClient.PutHealthSettings(ctx, expected)
require.NoError(t, err)
// when
err = adminClient.PutHealthSettings(ctx, expected)
// then
require.Error(t, err)
require.Contains(t, err.Error(), "health settings not modified")
})
}
func TestDebugWebsocket(t *testing.T) {
t.Parallel()