(t *testing.T)
| 574 | } |
| 575 | |
| 576 | func TestExpandEnvOverrides(t *testing.T) { |
| 577 | const envVar = "TOKEN" |
| 578 | cfg := Config{ |
| 579 | Defaults: Overrides{ |
| 580 | MetricsGenerator: MetricsGeneratorOverrides{ |
| 581 | RemoteWriteHeaders: map[string]config.Secret{ |
| 582 | "Authorization": "Bearer token", |
| 583 | }, |
| 584 | }, |
| 585 | }, |
| 586 | ExpandEnv: true, |
| 587 | } |
| 588 | // Set the ORG_ID env var |
| 589 | require.NoError(t, os.Setenv(envVar, "super-secret-token")) |
| 590 | t.Cleanup(func() { |
| 591 | require.NoError(t, os.Unsetenv(envVar)) |
| 592 | }) |
| 593 | |
| 594 | perTenantOverrides := fmt.Sprintf(` |
| 595 | overrides: |
| 596 | user1: |
| 597 | metrics_generator: |
| 598 | remote_write_headers: |
| 599 | Authorization: Bearer ${%s} |
| 600 | `, envVar) |
| 601 | |
| 602 | overridesFile := filepath.Join(t.TempDir(), "Overrides.yaml") |
| 603 | |
| 604 | require.NoError(t, os.WriteFile(overridesFile, []byte(perTenantOverrides), 0o700)) |
| 605 | |
| 606 | cfg.PerTenantOverrideConfig = overridesFile |
| 607 | cfg.PerTenantOverridePeriod = model.Duration(time.Hour) |
| 608 | |
| 609 | overrides, err := newRuntimeConfigOverrides(cfg, &mockValidator{}, prometheus.NewRegistry()) |
| 610 | require.NoError(t, err) |
| 611 | require.NoError(t, services.StartAndAwaitRunning(context.TODO(), overrides)) |
| 612 | |
| 613 | expectedRemoteWriteHeaders := map[string]map[string]string{ |
| 614 | "user1": {"Authorization": "Bearer super-secret-token"}, |
| 615 | "user2": {"Authorization": "Bearer token"}, |
| 616 | } |
| 617 | for user, expected := range expectedRemoteWriteHeaders { |
| 618 | assert.Equal(t, expected, overrides.MetricsGeneratorRemoteWriteHeaders(user)) |
| 619 | } |
| 620 | |
| 621 | require.NoError(t, services.StopAndAwaitTerminated(context.Background(), overrides)) |
| 622 | } |
| 623 | |
| 624 | func TestNativeHistogramOverrides(t *testing.T) { |
| 625 | tests := []struct { |
nothing calls this directly
no test coverage detected