@@ -336,6 +336,9 @@ func TestAttachImportAuthHeader_DocsGitHub_NoToken(t *testing.T) {
336336func TestAttachImportAuthHeader_GHE_BareHostname (t * testing.T ) {
337337 t .Setenv ("GITHUB_TOKEN" , "ghe-token" )
338338 t .Setenv ("GH_TOKEN" , "" )
339+ t .Setenv ("GITHUB_SERVER_URL" , "" )
340+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
341+ t .Setenv ("GITHUB_HOST" , "" )
339342 t .Setenv ("GH_HOST" , "ghe.example.com" )
340343
341344 req , _ := http .NewRequest (http .MethodGet , "https://ghe.example.com/owner/repo/raw/main/wf.md" , nil )
@@ -347,6 +350,9 @@ func TestAttachImportAuthHeader_GHE_BareHostname(t *testing.T) {
347350func TestAttachImportAuthHeader_GHE_HTTPSScheme (t * testing.T ) {
348351 t .Setenv ("GITHUB_TOKEN" , "ghe-token" )
349352 t .Setenv ("GH_TOKEN" , "" )
353+ t .Setenv ("GITHUB_SERVER_URL" , "" )
354+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
355+ t .Setenv ("GITHUB_HOST" , "" )
350356 t .Setenv ("GH_HOST" , "https://ghe.example.com" )
351357
352358 req , _ := http .NewRequest (http .MethodGet , "https://ghe.example.com/owner/repo/raw/main/wf.md" , nil )
@@ -358,6 +364,9 @@ func TestAttachImportAuthHeader_GHE_HTTPSScheme(t *testing.T) {
358364func TestAttachImportAuthHeader_GHE_HTTPSchemePrefix (t * testing.T ) {
359365 t .Setenv ("GITHUB_TOKEN" , "ghe-token" )
360366 t .Setenv ("GH_TOKEN" , "" )
367+ t .Setenv ("GITHUB_SERVER_URL" , "" )
368+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
369+ t .Setenv ("GITHUB_HOST" , "" )
361370 t .Setenv ("GH_HOST" , "http://ghe.example.com" )
362371
363372 // HTTPS request → token sent.
@@ -375,6 +384,9 @@ func TestAttachImportAuthHeader_GHE_HTTPSchemePrefix(t *testing.T) {
375384func TestAttachImportAuthHeader_GHE_DifferentHost (t * testing.T ) {
376385 t .Setenv ("GITHUB_TOKEN" , "ghe-token" )
377386 t .Setenv ("GH_TOKEN" , "" )
387+ t .Setenv ("GITHUB_SERVER_URL" , "" )
388+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
389+ t .Setenv ("GITHUB_HOST" , "" )
378390 t .Setenv ("GH_HOST" , "ghe.example.com" )
379391
380392 req , _ := http .NewRequest (http .MethodGet , "https://other.example.com/workflow.md" , nil )
@@ -386,13 +398,58 @@ func TestAttachImportAuthHeader_GHE_DifferentHost(t *testing.T) {
386398func TestAttachImportAuthHeader_GitHubAlongsideGHE (t * testing.T ) {
387399 t .Setenv ("GITHUB_TOKEN" , "dual-token" )
388400 t .Setenv ("GH_TOKEN" , "" )
401+ t .Setenv ("GITHUB_SERVER_URL" , "" )
402+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
403+ t .Setenv ("GITHUB_HOST" , "" )
389404 t .Setenv ("GH_HOST" , "ghe.example.com" )
390405
391406 req , _ := http .NewRequest (http .MethodGet , "https://github.com/owner/repo/raw/main/wf.md" , nil )
392407 attachImportAuthHeader (req , "https://github.com/owner/repo/raw/main/wf.md" )
393408 assert .Equal (t , "Bearer dual-token" , req .Header .Get ("Authorization" ), "github.com must still be allowed when GH_HOST is also set" )
394409}
395410
411+ // GITHUB_ENTERPRISE_HOST resolves the auth host (unified resolution).
412+ func TestAttachImportAuthHeader_GHE_EnterpriseHostEnvVar (t * testing.T ) {
413+ t .Setenv ("GITHUB_TOKEN" , "ent-token" )
414+ t .Setenv ("GH_TOKEN" , "" )
415+ t .Setenv ("GITHUB_SERVER_URL" , "" )
416+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "ent.example.com" )
417+ t .Setenv ("GITHUB_HOST" , "other.example.com" )
418+ t .Setenv ("GH_HOST" , "gh.example.com" )
419+
420+ req , _ := http .NewRequest (http .MethodGet , "https://ent.example.com/owner/repo/raw/main/wf.md" , nil )
421+ attachImportAuthHeader (req , "https://ent.example.com/owner/repo/raw/main/wf.md" )
422+ assert .Equal (t , "Bearer ent-token" , req .Header .Get ("Authorization" ), "GITHUB_ENTERPRISE_HOST must resolve as the auth host" )
423+ }
424+
425+ // GITHUB_SERVER_URL resolves the auth host (highest priority).
426+ func TestAttachImportAuthHeader_GHE_ServerURLEnvVar (t * testing.T ) {
427+ t .Setenv ("GITHUB_TOKEN" , "srv-token" )
428+ t .Setenv ("GH_TOKEN" , "" )
429+ t .Setenv ("GITHUB_SERVER_URL" , "https://srv.example.com" )
430+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "ent.example.com" )
431+ t .Setenv ("GITHUB_HOST" , "" )
432+ t .Setenv ("GH_HOST" , "" )
433+
434+ req , _ := http .NewRequest (http .MethodGet , "https://srv.example.com/owner/repo/raw/main/wf.md" , nil )
435+ attachImportAuthHeader (req , "https://srv.example.com/owner/repo/raw/main/wf.md" )
436+ assert .Equal (t , "Bearer srv-token" , req .Header .Get ("Authorization" ), "GITHUB_SERVER_URL must resolve as the auth host" )
437+ }
438+
439+ // GITHUB_HOST resolves the auth host (third-highest priority, above GH_HOST).
440+ func TestAttachImportAuthHeader_GHE_GitHubHostEnvVar (t * testing.T ) {
441+ t .Setenv ("GITHUB_TOKEN" , "gh-host-token" )
442+ t .Setenv ("GH_TOKEN" , "" )
443+ t .Setenv ("GITHUB_SERVER_URL" , "" )
444+ t .Setenv ("GITHUB_ENTERPRISE_HOST" , "" )
445+ t .Setenv ("GITHUB_HOST" , "ghhost.example.com" )
446+ t .Setenv ("GH_HOST" , "lowpriority.example.com" )
447+
448+ req , _ := http .NewRequest (http .MethodGet , "https://ghhost.example.com/owner/repo/raw/main/wf.md" , nil )
449+ attachImportAuthHeader (req , "https://ghhost.example.com/owner/repo/raw/main/wf.md" )
450+ assert .Equal (t , "Bearer " + "gh-host-token" , req .Header .Get ("Authorization" ), "GITHUB_HOST must resolve as the auth host" )
451+ }
452+
396453// TestBuildRequestLogString_RedactsAuthorization verifies that the request formatter
397454// never exposes the raw token and shows the correct redacted form.
398455func TestBuildRequestLogString_RedactsAuthorization (t * testing.T ) {
0 commit comments