Cloudwatch: Accept empty string for logstimeout and mark errors downstream (#96947)
This commit is contained in:
@@ -2,12 +2,14 @@ package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana-aws-sdk/pkg/awsds"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/proxy"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@@ -114,6 +116,24 @@ func Test_Settings_LoadCloudWatchSettings(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, time.Minute*30, s.LogsTimeout.Duration)
|
||||
})
|
||||
t.Run("Should set logsTimeout to default duration if it is empty string", func(t *testing.T) {
|
||||
settings := backend.DataSourceInstanceSettings{
|
||||
ID: 33,
|
||||
JSONData: []byte(`{
|
||||
"authType": "arn",
|
||||
"assumeRoleArn": "arn:aws:iam::123456789012:role/grafana",
|
||||
"logsTimeout": ""
|
||||
}`),
|
||||
DecryptedSecureJSONData: map[string]string{
|
||||
"accessKey": "AKIAIOSFODNN7EXAMPLE",
|
||||
"secretKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
|
||||
},
|
||||
}
|
||||
|
||||
s, err := LoadCloudWatchSettings(settingCtx, settings)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, time.Minute*30, s.LogsTimeout.Duration)
|
||||
})
|
||||
t.Run("Should correctly parse logsTimeout duration string", func(t *testing.T) {
|
||||
settings := backend.DataSourceInstanceSettings{
|
||||
ID: 33,
|
||||
@@ -184,6 +204,10 @@ func Test_Settings_LoadCloudWatchSettings(t *testing.T) {
|
||||
|
||||
_, err := LoadCloudWatchSettings(context.Background(), settings)
|
||||
require.Error(t, err)
|
||||
var sourceErr errorsource.Error
|
||||
ok := errors.As(err, &sourceErr)
|
||||
require.True(t, ok)
|
||||
require.Equal(t, sourceErr.ErrorSource().String(), "downstream")
|
||||
})
|
||||
t.Run("Should throw error if logsTimeout is an invalid type", func(t *testing.T) {
|
||||
settings := backend.DataSourceInstanceSettings{
|
||||
|
||||
Reference in New Issue
Block a user