@@ -158,6 +158,37 @@ func TestExtractGrafanaInfoFromHeaders(t *testing.T) {
158158 assert .Equal (t , "my-test-api-key" , config .APIKey )
159159 })
160160
161+ t .Run ("with service account token header" , func (t * testing.T ) {
162+ t .Setenv ("GRAFANA_URL" , "" )
163+ t .Setenv ("GRAFANA_API_KEY" , "" )
164+ t .Setenv ("GRAFANA_SERVICE_ACCOUNT_TOKEN" , "" )
165+
166+ req , err := http .NewRequest ("GET" , "http://example.com" , nil )
167+ require .NoError (t , err )
168+ req .Header .Set (grafanaURLHeader , "http://my-test-url.grafana.com" )
169+ req .Header .Set (grafanaServiceAccountTokenHeader , "my-service-account-token" )
170+ ctx := ExtractGrafanaInfoFromHeaders (context .Background (), req )
171+ config := GrafanaConfigFromContext (ctx )
172+ assert .Equal (t , "http://my-test-url.grafana.com" , config .URL )
173+ assert .Equal (t , "my-service-account-token" , config .APIKey )
174+ })
175+
176+ t .Run ("service account token header takes precedence over api key header" , func (t * testing.T ) {
177+ t .Setenv ("GRAFANA_URL" , "" )
178+ t .Setenv ("GRAFANA_API_KEY" , "" )
179+ t .Setenv ("GRAFANA_SERVICE_ACCOUNT_TOKEN" , "" )
180+
181+ req , err := http .NewRequest ("GET" , "http://example.com" , nil )
182+ require .NoError (t , err )
183+ req .Header .Set (grafanaURLHeader , "http://my-test-url.grafana.com" )
184+ req .Header .Set (grafanaServiceAccountTokenHeader , "my-service-account-token" )
185+ req .Header .Set (grafanaAPIKeyHeader , "my-deprecated-api-key" )
186+ ctx := ExtractGrafanaInfoFromHeaders (context .Background (), req )
187+ config := GrafanaConfigFromContext (ctx )
188+ assert .Equal (t , "http://my-test-url.grafana.com" , config .URL )
189+ assert .Equal (t , "my-service-account-token" , config .APIKey )
190+ })
191+
161192 t .Run ("no headers, with env" , func (t * testing.T ) {
162193 t .Setenv ("GRAFANA_USERNAME" , "foo" )
163194 t .Setenv ("GRAFANA_PASSWORD" , "bar" )
0 commit comments