A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/grafana/mcp-grafana/commit/2dbb53edf098759635c3d3570464ccb0d9a32eb5 below:

fall back to Grafana URL/API key from env vars in SSE mode (#94) · grafana/mcp-grafana@2dbb53e · GitHub

9 9

"testing"

10 10 11 11

"github.com/go-openapi/runtime/client"

12 +

grafana_client "github.com/grafana/grafana-openapi-client-go/client"

12 13

"github.com/stretchr/testify/assert"

13 14

"github.com/stretchr/testify/require"

14 15

)

@@ -22,6 +23,52 @@ func TestExtractIncidentClientFromEnv(t *testing.T) {

22 23

assert.Equal(t, "http://my-test-url.grafana.com/api/plugins/grafana-irm-app/resources/api/v1/", client.RemoteHost)

23 24

}

24 25 26 +

func TestExtractIncidentClientFromHeaders(t *testing.T) {

27 +

t.Run("no headers, no env", func(t *testing.T) {

28 +

req, err := http.NewRequest("GET", "http://example.com", nil)

29 +

require.NoError(t, err)

30 +

ctx := ExtractIncidentClientFromHeaders(context.Background(), req)

31 + 32 +

client := IncidentClientFromContext(ctx)

33 +

require.NotNil(t, client)

34 +

assert.Equal(t, "http://localhost:3000/api/plugins/grafana-irm-app/resources/api/v1/", client.RemoteHost)

35 +

})

36 + 37 +

t.Run("no headers, with env", func(t *testing.T) {

38 +

t.Setenv("GRAFANA_URL", "http://my-test-url.grafana.com/")

39 +

req, err := http.NewRequest("GET", "http://example.com", nil)

40 +

require.NoError(t, err)

41 +

ctx := ExtractIncidentClientFromHeaders(context.Background(), req)

42 + 43 +

client := IncidentClientFromContext(ctx)

44 +

require.NotNil(t, client)

45 +

assert.Equal(t, "http://my-test-url.grafana.com/api/plugins/grafana-irm-app/resources/api/v1/", client.RemoteHost)

46 +

})

47 + 48 +

t.Run("with headers, no env", func(t *testing.T) {

49 +

req, err := http.NewRequest("GET", "http://example.com", nil)

50 +

req.Header.Set(grafanaURLHeader, "http://my-test-url.grafana.com")

51 +

require.NoError(t, err)

52 +

ctx := ExtractIncidentClientFromHeaders(context.Background(), req)

53 + 54 +

client := IncidentClientFromContext(ctx)

55 +

require.NotNil(t, client)

56 +

assert.Equal(t, "http://my-test-url.grafana.com/api/plugins/grafana-irm-app/resources/api/v1/", client.RemoteHost)

57 +

})

58 + 59 +

t.Run("with headers, with env", func(t *testing.T) {

60 +

t.Setenv("GRAFANA_URL", "will-not-be-used")

61 +

req, err := http.NewRequest("GET", "http://example.com", nil)

62 +

req.Header.Set(grafanaURLHeader, "http://my-test-url.grafana.com")

63 +

require.NoError(t, err)

64 +

ctx := ExtractIncidentClientFromHeaders(context.Background(), req)

65 + 66 +

client := IncidentClientFromContext(ctx)

67 +

require.NotNil(t, client)

68 +

assert.Equal(t, "http://my-test-url.grafana.com/api/plugins/grafana-irm-app/resources/api/v1/", client.RemoteHost)

69 +

})

70 +

}

71 + 25 72

func TestExtractGrafanaInfoFromHeaders(t *testing.T) {

26 73

t.Run("no headers, no env", func(t *testing.T) {

27 74

req, err := http.NewRequest("GET", "http://example.com", nil)

@@ -106,3 +153,64 @@ func TestExtractGrafanaClientPath(t *testing.T) {

106 153

assert.Equal(t, "/grafana/api", rt.BasePath)

107 154

})

108 155

}

156 + 157 +

// minURL is a helper struct representing what we can extract from a constructed

158 +

// Grafana client.

159 +

type minURL struct {

160 +

host, basePath string

161 +

}

162 + 163 +

// minURLFromClient extracts some minimal amount of URL info from a Grafana client.

164 +

func minURLFromClient(c *grafana_client.GrafanaHTTPAPI) minURL {

165 +

rt := c.Transport.(*client.Runtime)

166 +

return minURL{rt.Host, rt.BasePath}

167 +

}

168 + 169 +

func TestExtractGrafanaClientFromHeaders(t *testing.T) {

170 +

t.Run("no headers, no env", func(t *testing.T) {

171 +

req, err := http.NewRequest("GET", "http://example.com", nil)

172 +

require.NoError(t, err)

173 +

ctx := ExtractGrafanaClientFromHeaders(context.Background(), req)

174 +

c := GrafanaClientFromContext(ctx)

175 +

url := minURLFromClient(c)

176 +

assert.Equal(t, "localhost", url.host)

177 +

assert.Equal(t, "/api", url.basePath)

178 +

})

179 + 180 +

t.Run("no headers, with env", func(t *testing.T) {

181 +

t.Setenv("GRAFANA_URL", "http://my-test-url.grafana.com")

182 + 183 +

req, err := http.NewRequest("GET", "http://example.com", nil)

184 +

require.NoError(t, err)

185 +

ctx := ExtractGrafanaClientFromHeaders(context.Background(), req)

186 +

c := GrafanaClientFromContext(ctx)

187 +

url := minURLFromClient(c)

188 +

assert.Equal(t, "my-test-url.grafana.com", url.host)

189 +

assert.Equal(t, "/api", url.basePath)

190 +

})

191 + 192 +

t.Run("with headers, no env", func(t *testing.T) {

193 +

req, err := http.NewRequest("GET", "http://example.com", nil)

194 +

require.NoError(t, err)

195 +

req.Header.Set(grafanaURLHeader, "http://my-test-url.grafana.com")

196 +

ctx := ExtractGrafanaClientFromHeaders(context.Background(), req)

197 +

c := GrafanaClientFromContext(ctx)

198 +

url := minURLFromClient(c)

199 +

assert.Equal(t, "my-test-url.grafana.com", url.host)

200 +

assert.Equal(t, "/api", url.basePath)

201 +

})

202 + 203 +

t.Run("with headers, with env", func(t *testing.T) {

204 +

// Env vars should be ignored if headers are present.

205 +

t.Setenv("GRAFANA_URL", "will-not-be-used")

206 + 207 +

req, err := http.NewRequest("GET", "http://example.com", nil)

208 +

require.NoError(t, err)

209 +

req.Header.Set(grafanaURLHeader, "http://my-test-url.grafana.com")

210 +

ctx := ExtractGrafanaClientFromHeaders(context.Background(), req)

211 +

c := GrafanaClientFromContext(ctx)

212 +

url := minURLFromClient(c)

213 +

assert.Equal(t, "my-test-url.grafana.com", url.host)

214 +

assert.Equal(t, "/api", url.basePath)

215 +

})

216 +

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4