@@ -120,3 +120,94 @@ func TestGetPlatformBinaryName(t *testing.T) {
120120 t .Logf ("Platform binary: %s" , binaryName )
121121 t .Logf ("Download URL: %s" , downloadURL )
122122}
123+
124+ func TestGetGitHubToken (t * testing.T ) {
125+ // Save original environment variables
126+ origGithubToken := os .Getenv ("GITHUB_TOKEN" )
127+ origMiseToken := os .Getenv ("MISE_GITHUB_TOKEN" )
128+
129+ // Clean up after test
130+ defer func () {
131+ if origGithubToken != "" {
132+ os .Setenv ("GITHUB_TOKEN" , origGithubToken )
133+ } else {
134+ os .Unsetenv ("GITHUB_TOKEN" )
135+ }
136+ if origMiseToken != "" {
137+ os .Setenv ("MISE_GITHUB_TOKEN" , origMiseToken )
138+ } else {
139+ os .Unsetenv ("MISE_GITHUB_TOKEN" )
140+ }
141+ }()
142+
143+ t .Run ("GITHUB_TOKEN takes precedence" , func (t * testing.T ) {
144+ os .Setenv ("GITHUB_TOKEN" , "github_token" )
145+ os .Setenv ("MISE_GITHUB_TOKEN" , "mise_token" )
146+
147+ token := getGitHubToken ()
148+ if token != "github_token" {
149+ t .Errorf ("getGitHubToken() = %v, want %v" , token , "github_token" )
150+ }
151+ })
152+
153+ t .Run ("MISE_GITHUB_TOKEN used when GITHUB_TOKEN not set" , func (t * testing.T ) {
154+ os .Unsetenv ("GITHUB_TOKEN" )
155+ os .Setenv ("MISE_GITHUB_TOKEN" , "mise_token" )
156+
157+ token := getGitHubToken ()
158+ if token != "mise_token" {
159+ t .Errorf ("getGitHubToken() = %v, want %v" , token , "mise_token" )
160+ }
161+ })
162+
163+ t .Run ("returns empty string when no tokens available" , func (t * testing.T ) {
164+ os .Unsetenv ("GITHUB_TOKEN" )
165+ os .Unsetenv ("MISE_GITHUB_TOKEN" )
166+
167+ token := getGitHubToken ()
168+ // Token might be empty or come from gh CLI
169+ // We just verify the function doesn't crash
170+ t .Logf ("getGitHubToken() = %q" , token )
171+ })
172+ }
173+
174+ func TestCreateAuthenticatedRequest (t * testing.T ) {
175+ // Save original environment variable
176+ origGithubToken := os .Getenv ("GITHUB_TOKEN" )
177+ defer func () {
178+ if origGithubToken != "" {
179+ os .Setenv ("GITHUB_TOKEN" , origGithubToken )
180+ } else {
181+ os .Unsetenv ("GITHUB_TOKEN" )
182+ }
183+ }()
184+
185+ t .Run ("adds authorization header when token available" , func (t * testing.T ) {
186+ os .Setenv ("GITHUB_TOKEN" , "test_token_123" )
187+
188+ req , err := createAuthenticatedRequest ("GET" , "https://api.github.com/repos/test/test" )
189+ if err != nil {
190+ t .Fatalf ("createAuthenticatedRequest() error = %v" , err )
191+ }
192+
193+ authHeader := req .Header .Get ("Authorization" )
194+ expectedHeader := "Bearer test_token_123"
195+ if authHeader != expectedHeader {
196+ t .Errorf ("Authorization header = %v, want %v" , authHeader , expectedHeader )
197+ }
198+ })
199+
200+ t .Run ("creates request without authorization when token not available" , func (t * testing.T ) {
201+ os .Unsetenv ("GITHUB_TOKEN" )
202+ os .Unsetenv ("MISE_GITHUB_TOKEN" )
203+
204+ req , err := createAuthenticatedRequest ("GET" , "https://api.github.com/repos/test/test" )
205+ if err != nil {
206+ t .Fatalf ("createAuthenticatedRequest() error = %v" , err )
207+ }
208+
209+ authHeader := req .Header .Get ("Authorization" )
210+ // If gh CLI is available, there might be a token; otherwise it should be empty
211+ t .Logf ("Authorization header = %q" , authHeader )
212+ })
213+ }
0 commit comments