| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package api
- import (
- "context"
- "testing"
- "connectrpc.com/connect"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- apiv1 "github.com/OliveTin/OliveTin/gen/olivetin/api/v1"
- config "github.com/OliveTin/OliveTin/internal/config"
- "github.com/OliveTin/OliveTin/internal/configissues"
- "github.com/OliveTin/OliveTin/internal/executor"
- )
- func deprecatedAPICallSources(t *testing.T, client interface {
- GetDiagnostics(context.Context, *connect.Request[apiv1.GetDiagnosticsRequest]) (*connect.Response[apiv1.GetDiagnosticsResponse], error)
- }) map[string]bool {
- t.Helper()
- res, err := client.GetDiagnostics(context.Background(), connect.NewRequest(&apiv1.GetDiagnosticsRequest{}))
- require.NoError(t, err)
- sources := map[string]bool{}
- for _, issue := range res.Msg.ConfigIssues {
- if issue.Code == configissues.CodeDeprecatedAPICall {
- assert.Equal(t, configissues.SeverityWarning, issue.Severity)
- sources[issue.Source] = true
- }
- }
- return sources
- }
- func TestDeprecatedStartActionByGetRaisesDiagnosticsWarning(t *testing.T) {
- configissues.ClearRuntime()
- t.Cleanup(configissues.ClearRuntime)
- cfg := config.DefaultConfig()
- cfg.Actions = []*config.Action{{Title: "Ping", ID: "ping", Shell: "echo ping"}}
- ex := executor.DefaultExecutor(cfg)
- ex.RebuildActionMap()
- testServer, client := getNewTestServerAndClientWithExecutor(cfg, ex)
- defer testServer.Close()
- assert.Empty(t, deprecatedAPICallSources(t, client))
- //nolint:staticcheck // Deliberately calling the deprecated RPC.
- _, err := client.StartActionByGet(context.Background(), connect.NewRequest(&apiv1.StartActionByGetRequest{ActionId: "ping"}))
- require.NoError(t, err)
- //nolint:staticcheck // Deliberately calling the deprecated RPC.
- _, err = client.StartActionByGetAndWait(context.Background(), connect.NewRequest(&apiv1.StartActionByGetAndWaitRequest{ActionId: "ping"}))
- require.NoError(t, err)
- sources := deprecatedAPICallSources(t, client)
- assert.True(t, sources["StartActionByGet"])
- assert.True(t, sources["StartActionByGetAndWait"])
- // Config reloads and entity changes rebuild the issue list; the warnings must survive.
- ex.RebuildActionMap()
- sources = deprecatedAPICallSources(t, client)
- assert.True(t, sources["StartActionByGet"])
- assert.True(t, sources["StartActionByGetAndWait"])
- }
- func TestStartActionDoesNotRaiseDeprecatedWarning(t *testing.T) {
- configissues.ClearRuntime()
- t.Cleanup(configissues.ClearRuntime)
- cfg := config.DefaultConfig()
- cfg.Actions = []*config.Action{{Title: "Ping", ID: "ping", Shell: "echo ping"}}
- testServer, client := getNewTestServerAndClient(cfg)
- defer testServer.Close()
- _, err := client.StartAction(context.Background(), connect.NewRequest(&apiv1.StartActionRequest{BindingId: "ping"}))
- require.NoError(t, err)
- assert.Empty(t, deprecatedAPICallSources(t, client))
- }
|