@@ -82,6 +82,17 @@ func TestLoad(t *testing.T) {
8282 wantSite : "datadoghq.com" ,
8383 wantApprove : false ,
8484 },
85+ {
86+ name : "on-call domain via DD_SITE" ,
87+ envVars : map [string ]string {
88+ "DD_API_KEY" : "key" ,
89+ "DD_APP_KEY" : "app" ,
90+ "DD_SITE" : "navy.oncall.datadoghq.com" ,
91+ },
92+ wantAPIKey : "key" ,
93+ wantAppKey : "app" ,
94+ wantSite : "navy.oncall.datadoghq.com" ,
95+ },
8596 }
8697
8798 for _ , tt := range tests {
@@ -176,6 +187,36 @@ func TestConfig_Validate(t *testing.T) {
176187 }
177188}
178189
190+ func TestIsOnCallSite (t * testing.T ) {
191+ t .Parallel ()
192+ tests := []struct {
193+ name string
194+ site string
195+ want bool
196+ }{
197+ // Standard sites — not on-call
198+ {name : "US1" , site : "datadoghq.com" , want : false },
199+ {name : "EU" , site : "datadoghq.eu" , want : false },
200+ {name : "US3" , site : "us3.datadoghq.com" , want : false },
201+ {name : "Gov" , site : "ddog-gov.com" , want : false },
202+
203+ // On-call domains
204+ {name : "on-call navy" , site : "navy.oncall.datadoghq.com" , want : true },
205+ {name : "on-call army" , site : "army.oncall.datadoghq.com" , want : true },
206+ {name : "on-call staging" , site : "test.oncall.datad0g.com" , want : true },
207+ }
208+
209+ for _ , tt := range tests {
210+ t .Run (tt .name , func (t * testing.T ) {
211+ t .Parallel ()
212+ got := IsOnCallSite (tt .site )
213+ if got != tt .want {
214+ t .Errorf ("IsOnCallSite(%q) = %v, want %v" , tt .site , got , tt .want )
215+ }
216+ })
217+ }
218+ }
219+
179220func TestConfig_GetAPIURL (t * testing.T ) {
180221 t .Parallel ()
181222 tests := []struct {
@@ -218,6 +259,11 @@ func TestConfig_GetAPIURL(t *testing.T) {
218259 site : "datad0g.com" ,
219260 want : "https://api.datad0g.com" ,
220261 },
262+ {
263+ name : "on-call domain used as-is" ,
264+ site : "navy.oncall.datadoghq.com" ,
265+ want : "https://navy.oncall.datadoghq.com" ,
266+ },
221267 }
222268
223269 for _ , tt := range tests {
@@ -232,6 +278,32 @@ func TestConfig_GetAPIURL(t *testing.T) {
232278 }
233279}
234280
281+ func TestConfig_GetAPIHost (t * testing.T ) {
282+ t .Parallel ()
283+ tests := []struct {
284+ name string
285+ site string
286+ want string
287+ }{
288+ {name : "US1" , site : "datadoghq.com" , want : "api.datadoghq.com" },
289+ {name : "EU" , site : "datadoghq.eu" , want : "api.datadoghq.eu" },
290+ {name : "US3" , site : "us3.datadoghq.com" , want : "api.us3.datadoghq.com" },
291+ {name : "Gov" , site : "ddog-gov.com" , want : "api.ddog-gov.com" },
292+ {name : "on-call" , site : "navy.oncall.datadoghq.com" , want : "navy.oncall.datadoghq.com" },
293+ }
294+
295+ for _ , tt := range tests {
296+ t .Run (tt .name , func (t * testing.T ) {
297+ t .Parallel ()
298+ cfg := & Config {Site : tt .site }
299+ got := cfg .GetAPIHost ()
300+ if got != tt .want {
301+ t .Errorf ("GetAPIHost() = %q, want %q" , got , tt .want )
302+ }
303+ })
304+ }
305+ }
306+
235307func TestGetEnvWithDefault (t * testing.T ) {
236308 t .Parallel ()
237309 // Save original
0 commit comments