Chore: Code cleaning with unit tests in promlib (#99542)
* update request tests * remove unused functions * add unit tests * remove commented code * fix unit tests
This commit is contained in:
@@ -83,15 +83,6 @@ func (r *Resource) Execute(ctx context.Context, req *backend.CallResourceRequest
|
||||
return callResponse, err
|
||||
}
|
||||
|
||||
func (r *Resource) DetectVersion(ctx context.Context, req *backend.CallResourceRequest) (*backend.CallResourceResponse, error) {
|
||||
newReq := &backend.CallResourceRequest{
|
||||
PluginContext: req.PluginContext,
|
||||
Path: "/api/v1/status/buildinfo",
|
||||
}
|
||||
|
||||
return r.Execute(ctx, newReq)
|
||||
}
|
||||
|
||||
func getSelectors(expr string) ([]string, error) {
|
||||
parsed, err := parser.ParseExpr(expr)
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
package resource_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/promlib/resource"
|
||||
)
|
||||
|
||||
type mockRoundTripper struct {
|
||||
Response *http.Response
|
||||
Err error
|
||||
}
|
||||
|
||||
func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
return m.Response, m.Err
|
||||
}
|
||||
|
||||
func setup() (*http.Client, backend.DataSourceInstanceSettings, log.Logger) {
|
||||
// Mock HTTP Response
|
||||
mockResponse := &http.Response{
|
||||
StatusCode: 200,
|
||||
Body: io.NopCloser(bytes.NewReader([]byte(`{"message": "success"}`))),
|
||||
Header: make(http.Header),
|
||||
}
|
||||
|
||||
// Create a mock RoundTripper
|
||||
mockTransport := &mockRoundTripper{
|
||||
Response: mockResponse,
|
||||
}
|
||||
|
||||
// Create a mock HTTP client using the mock RoundTripper
|
||||
mockClient := &http.Client{
|
||||
Transport: mockTransport,
|
||||
}
|
||||
|
||||
settings := backend.DataSourceInstanceSettings{
|
||||
ID: 1,
|
||||
URL: "http://mock-server",
|
||||
JSONData: []byte(`{}`),
|
||||
}
|
||||
|
||||
logger := log.DefaultLogger
|
||||
|
||||
return mockClient, settings, logger
|
||||
}
|
||||
|
||||
func TestNewResource(t *testing.T) {
|
||||
mockClient, settings, logger := setup()
|
||||
res, err := resource.New(mockClient, settings, logger)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, res)
|
||||
}
|
||||
|
||||
func TestResource_Execute(t *testing.T) {
|
||||
mockClient, settings, logger := setup()
|
||||
res, err := resource.New(mockClient, settings, logger)
|
||||
require.NoError(t, err)
|
||||
|
||||
req := &backend.CallResourceRequest{
|
||||
URL: "/test",
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
resp, err := res.Execute(ctx, req)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, resp)
|
||||
}
|
||||
|
||||
func TestResource_GetSuggestions(t *testing.T) {
|
||||
mockClient, _, logger := setup()
|
||||
settings := backend.DataSourceInstanceSettings{
|
||||
ID: 1,
|
||||
URL: "http://localhost:9090",
|
||||
JSONData: []byte(`{"httpMethod": "GET"}`),
|
||||
}
|
||||
|
||||
res, err := resource.New(mockClient, settings, logger)
|
||||
require.NoError(t, err)
|
||||
|
||||
suggestionReq := resource.SuggestionRequest{
|
||||
LabelName: "instance",
|
||||
Queries: []string{"up"},
|
||||
Start: "1609459200",
|
||||
End: "1609462800",
|
||||
Limit: 10,
|
||||
}
|
||||
|
||||
body, err := json.Marshal(suggestionReq)
|
||||
require.NoError(t, err)
|
||||
|
||||
req := &backend.CallResourceRequest{
|
||||
Body: body,
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
resp, err := res.GetSuggestions(ctx, req)
|
||||
require.NoError(t, err)
|
||||
assert.NotNil(t, resp)
|
||||
}
|
||||
Reference in New Issue
Block a user