@@ -13,46 +13,49 @@ import {
1313 getGitHubTokenFromGitConfig ,
1414 getGitHubTokenWithFallback ,
1515} from '@socketsecurity/lib/github'
16- import { beforeEach , describe , expect , it } from 'vitest'
16+ import { resetEnv , setEnv } from '@socketsecurity/lib/env/rewire'
17+ import { afterEach , beforeEach , describe , expect , it } from 'vitest'
1718
18- describe ( 'github' , ( ) => {
19+ describe . sequential ( 'github' , ( ) => {
1920 beforeEach ( ( ) => {
2021 // Clear environment variables
21- delete process . env . GITHUB_TOKEN
22- delete process . env . GH_TOKEN
23- delete process . env . SOCKET_CLI_GITHUB_TOKEN
22+ resetEnv ( )
2423 clearRefCache ( )
2524 } )
2625
26+ afterEach ( ( ) => {
27+ resetEnv ( )
28+ } )
29+
2730 describe ( 'getGitHubToken' , ( ) => {
2831 it ( 'should return GITHUB_TOKEN from environment' , ( ) => {
29- process . env . GITHUB_TOKEN = 'test-token'
32+ setEnv ( ' GITHUB_TOKEN' , 'test-token' )
3033 const token = getGitHubToken ( )
3134 expect ( token ) . toBe ( 'test-token' )
3235 } )
3336
3437 it ( 'should return GH_TOKEN from environment' , ( ) => {
35- process . env . GH_TOKEN = 'gh-test-token'
38+ setEnv ( ' GH_TOKEN' , 'gh-test-token' )
3639 const token = getGitHubToken ( )
3740 expect ( token ) . toBe ( 'gh-test-token' )
3841 } )
3942
4043 it ( 'should return SOCKET_CLI_GITHUB_TOKEN from environment' , ( ) => {
41- process . env . SOCKET_CLI_GITHUB_TOKEN = 'cli-token'
44+ setEnv ( ' SOCKET_CLI_GITHUB_TOKEN' , 'cli-token' )
4245 const token = getGitHubToken ( )
4346 expect ( token ) . toBe ( 'cli-token' )
4447 } )
4548
4649 it ( 'should prefer GITHUB_TOKEN over GH_TOKEN' , ( ) => {
47- process . env . GITHUB_TOKEN = 'github-token'
48- process . env . GH_TOKEN = 'gh-token'
50+ setEnv ( ' GITHUB_TOKEN' , 'github-token' )
51+ setEnv ( ' GH_TOKEN' , 'gh-token' )
4952 const token = getGitHubToken ( )
5053 expect ( token ) . toBe ( 'github-token' )
5154 } )
5255
5356 it ( 'should prefer GITHUB_TOKEN over SOCKET_CLI_GITHUB_TOKEN' , ( ) => {
54- process . env . GITHUB_TOKEN = 'github-token'
55- process . env . SOCKET_CLI_GITHUB_TOKEN = 'cli-token'
57+ setEnv ( ' GITHUB_TOKEN' , 'github-token' )
58+ setEnv ( ' SOCKET_CLI_GITHUB_TOKEN' , 'cli-token' )
5659 const token = getGitHubToken ( )
5760 expect ( token ) . toBe ( 'github-token' )
5861 } )
@@ -97,13 +100,13 @@ describe('github', () => {
97100
98101 describe ( 'getGitHubTokenWithFallback' , ( ) => {
99102 it ( 'should return token from GITHUB_TOKEN environment first' , async ( ) => {
100- process . env . GITHUB_TOKEN = 'env-token'
103+ setEnv ( ' GITHUB_TOKEN' , 'env-token' )
101104 const token = await getGitHubTokenWithFallback ( )
102105 expect ( token ) . toBe ( 'env-token' )
103106 } )
104107
105108 it ( 'should return token from GH_TOKEN when GITHUB_TOKEN is not set' , async ( ) => {
106- process . env . GH_TOKEN = 'gh-token'
109+ setEnv ( ' GH_TOKEN' , 'gh-token' )
107110 const token = await getGitHubTokenWithFallback ( )
108111 expect ( token ) . toBe ( 'gh-token' )
109112 } )
@@ -173,42 +176,39 @@ describe('github', () => {
173176
174177 describe ( 'token priority and fallback' , ( ) => {
175178 it ( 'should prioritize GITHUB_TOKEN over other env vars' , ( ) => {
176- process . env . GITHUB_TOKEN = 'token1'
177- process . env . GH_TOKEN = 'token2'
178- process . env . SOCKET_CLI_GITHUB_TOKEN = 'token3'
179+ setEnv ( ' GITHUB_TOKEN' , 'token1' )
180+ setEnv ( ' GH_TOKEN' , 'token2' )
181+ setEnv ( ' SOCKET_CLI_GITHUB_TOKEN' , 'token3' )
179182
180183 const token = getGitHubToken ( )
181184 expect ( token ) . toBe ( 'token1' )
182185 } )
183186
184187 it ( 'should use GH_TOKEN when GITHUB_TOKEN is not set' , ( ) => {
185- delete process . env . GITHUB_TOKEN
186- process . env . GH_TOKEN = 'token2'
187- process . env . SOCKET_CLI_GITHUB_TOKEN = 'token3'
188+ setEnv ( 'GH_TOKEN' , 'token2' )
189+ setEnv ( 'SOCKET_CLI_GITHUB_TOKEN' , 'token3' )
188190
189191 const token = getGitHubToken ( )
190192 expect ( token ) . toBe ( 'token2' )
191193 } )
192194
193195 it ( 'should use SOCKET_CLI_GITHUB_TOKEN as last resort' , ( ) => {
194- delete process . env . GITHUB_TOKEN
195- delete process . env . GH_TOKEN
196- process . env . SOCKET_CLI_GITHUB_TOKEN = 'token3'
196+ setEnv ( 'SOCKET_CLI_GITHUB_TOKEN' , 'token3' )
197197
198198 const token = getGitHubToken ( )
199199 expect ( token ) . toBe ( 'token3' )
200200 } )
201201
202202 it ( 'should handle empty string tokens' , ( ) => {
203- process . env . GITHUB_TOKEN = ''
204- process . env . GH_TOKEN = 'token2'
203+ setEnv ( ' GITHUB_TOKEN' , '' )
204+ setEnv ( ' GH_TOKEN' , 'token2' )
205205
206206 const token = getGitHubToken ( )
207207 expect ( token ) . toBe ( 'token2' )
208208 } )
209209
210210 it ( 'should handle whitespace tokens' , ( ) => {
211- process . env . GITHUB_TOKEN = ' '
211+ setEnv ( ' GITHUB_TOKEN' , ' ' )
212212 const token = getGitHubToken ( )
213213 expect ( token ) . toBeTruthy ( )
214214 } )
@@ -245,16 +245,12 @@ describe('github', () => {
245245
246246 describe ( 'getGitHubTokenWithFallback' , ( ) => {
247247 it ( 'should prefer environment over git config' , async ( ) => {
248- process . env . GITHUB_TOKEN = 'env-token'
248+ setEnv ( ' GITHUB_TOKEN' , 'env-token' )
249249 const token = await getGitHubTokenWithFallback ( )
250250 expect ( token ) . toBe ( 'env-token' )
251251 } )
252252
253253 it ( 'should handle when both sources are unavailable' , async ( ) => {
254- delete process . env . GITHUB_TOKEN
255- delete process . env . GH_TOKEN
256- delete process . env . SOCKET_CLI_GITHUB_TOKEN
257-
258254 const token = await getGitHubTokenWithFallback ( )
259255 expect ( typeof token === 'string' || token === undefined ) . toBe ( true )
260256 } )
@@ -271,25 +267,25 @@ describe('github', () => {
271267
272268 describe ( 'edge cases and error handling' , ( ) => {
273269 it ( 'should handle rapid token changes' , ( ) => {
274- process . env . GITHUB_TOKEN = 'token1'
270+ setEnv ( ' GITHUB_TOKEN' , 'token1' )
275271 expect ( getGitHubToken ( ) ) . toBe ( 'token1' )
276272
277- process . env . GITHUB_TOKEN = 'token2'
273+ setEnv ( ' GITHUB_TOKEN' , 'token2' )
278274 expect ( getGitHubToken ( ) ) . toBe ( 'token2' )
279275
280- delete process . env . GITHUB_TOKEN
276+ setEnv ( ' GITHUB_TOKEN' , undefined )
281277 expect ( getGitHubToken ( ) ) . toBeUndefined ( )
282278 } )
283279
284280 it ( 'should handle token with special characters' , ( ) => {
285- process . env . GITHUB_TOKEN = 'ghp_abc123!@#$%^&*()'
281+ setEnv ( ' GITHUB_TOKEN' , 'ghp_abc123!@#$%^&*()' )
286282 const token = getGitHubToken ( )
287283 expect ( token ) . toContain ( 'ghp_abc123' )
288284 } )
289285
290286 it ( 'should handle very long tokens' , ( ) => {
291287 const longToken = `ghp_${ 'x' . repeat ( 1000 ) } `
292- process . env . GITHUB_TOKEN = longToken
288+ setEnv ( ' GITHUB_TOKEN' , longToken )
293289 const token = getGitHubToken ( )
294290 expect ( token ) . toBe ( longToken )
295291 } )
@@ -307,7 +303,7 @@ describe('github', () => {
307303
308304 describe ( 'concurrent operations' , ( ) => {
309305 it ( 'should handle concurrent token reads' , ( ) => {
310- process . env . GITHUB_TOKEN = 'token'
306+ setEnv ( ' GITHUB_TOKEN' , 'token' )
311307 const results = Array . from ( { length : 10 } , ( ) => getGitHubToken ( ) )
312308 expect ( results ) . toEqual ( Array ( 10 ) . fill ( 'token' ) )
313309 } )
0 commit comments