mirror of https://github.com/grafana/grafana
* updated postgres health check error messages * addressed review comments / added testspull/96878/head^2
parent
6e36dfb74e
commit
16c78f6a98
@ -0,0 +1,60 @@ |
||||
package sqleng |
||||
|
||||
import ( |
||||
"errors" |
||||
"net" |
||||
"testing" |
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend" |
||||
"github.com/lib/pq" |
||||
"github.com/stretchr/testify/assert" |
||||
"github.com/stretchr/testify/require" |
||||
) |
||||
|
||||
func TestErrToHealthCheckResult(t *testing.T) { |
||||
tests := []struct { |
||||
name string |
||||
err error |
||||
want *backend.CheckHealthResult |
||||
}{ |
||||
{ |
||||
name: "without error", |
||||
want: &backend.CheckHealthResult{Status: backend.HealthStatusError, Message: "Internal Server Error"}, |
||||
}, |
||||
{ |
||||
name: "network error", |
||||
err: errors.Join(errors.New("foo"), &net.OpError{Op: "read", Net: "tcp", Err: errors.New("some op")}), |
||||
want: &backend.CheckHealthResult{ |
||||
Status: backend.HealthStatusError, |
||||
Message: "Network error: Failed to connect to the server. Error message: some op", |
||||
JSONDetails: []byte(`{"errorDetailsLink":"https://grafana.com/docs/grafana/latest/datasources/postgres","verboseMessage":"foo\nread tcp: some op"}`), |
||||
}, |
||||
}, |
||||
{ |
||||
name: "db error", |
||||
err: errors.Join(errors.New("foo"), &pq.Error{Message: pq.ErrCouldNotDetectUsername.Error(), Code: pq.ErrorCode("28P01")}), |
||||
want: &backend.CheckHealthResult{ |
||||
Status: backend.HealthStatusError, |
||||
Message: "foo\npq: pq: Could not detect default username. Please provide one explicitly. Postgres error code: invalid_password", |
||||
JSONDetails: []byte(`{"errorDetailsLink":"https://grafana.com/docs/grafana/latest/datasources/postgres","verboseMessage":"pq: Could not detect default username. Please provide one explicitly"}`), |
||||
}, |
||||
}, |
||||
{ |
||||
name: "regular error", |
||||
err: errors.New("internal server error"), |
||||
want: &backend.CheckHealthResult{ |
||||
Status: backend.HealthStatusError, |
||||
Message: "internal server error", |
||||
JSONDetails: []byte(`{"errorDetailsLink":"https://grafana.com/docs/grafana/latest/datasources/postgres","verboseMessage":"internal server error"}`), |
||||
}, |
||||
}, |
||||
} |
||||
for _, tt := range tests { |
||||
t.Run(tt.name, func(t *testing.T) { |
||||
got, err := ErrToHealthCheckResult(tt.err) |
||||
require.Nil(t, err) |
||||
assert.Equal(t, string(tt.want.JSONDetails), string(got.JSONDetails)) |
||||
require.Equal(t, tt.want, got) |
||||
}) |
||||
} |
||||
} |
||||
Loading…
Reference in new issue