@@ -104,4 +104,224 @@ describe('socket config get', async () => {
104104 expect ( code , 'dry-run should exit with code 0 if input ok' ) . toBe ( 0 )
105105 }
106106 )
107+
108+ describe ( 'env vars' , ( ) => {
109+ describe ( 'token' , ( ) => {
110+ cmdit (
111+ [ 'config' , 'get' , 'apiToken' , '--config' , '{"apiToken":null}' ] ,
112+ 'should return undefined when token not set in config' ,
113+ async cmd => {
114+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , { } )
115+ expect ( stdout ) . toMatchInlineSnapshot (
116+ `
117+ "apiToken: null
118+
119+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
120+ `
121+ )
122+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
123+ "
124+ _____ _ _ /---------------
125+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
126+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
127+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
128+ ` )
129+
130+ expect ( stdout . includes ( 'apiToken: null' ) ) . toBe ( true )
131+ }
132+ )
133+
134+ cmdit (
135+ [ 'config' , 'get' , 'apiToken' , '--config' , '{"apiToken":null}' ] ,
136+ 'should return the env var token when set' ,
137+ async cmd => {
138+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , {
139+ SOCKET_SECURITY_API_TOKEN : 'abc'
140+ } )
141+ expect ( stdout ) . toMatchInlineSnapshot (
142+ `
143+ "apiToken: abc
144+
145+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
146+ `
147+ )
148+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
149+ "
150+ _____ _ _ /---------------
151+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
152+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
153+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
154+ ` )
155+
156+ expect ( stdout . includes ( 'apiToken: abc' ) ) . toBe ( true )
157+ }
158+ )
159+
160+ // Migrate this away...?
161+ cmdit (
162+ [ 'config' , 'get' , 'apiToken' , '--config' , '{"apiToken":null}' ] ,
163+ 'should backwards compat support api key as well env var' ,
164+ async cmd => {
165+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , {
166+ SOCKET_SECURITY_API_KEY : 'abc'
167+ } )
168+ expect ( stdout ) . toMatchInlineSnapshot (
169+ `
170+ "apiToken: abc
171+
172+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
173+ `
174+ )
175+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
176+ "
177+ _____ _ _ /---------------
178+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
179+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
180+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
181+ ` )
182+
183+ expect ( stdout . includes ( 'apiToken: abc' ) ) . toBe ( true )
184+ }
185+ )
186+
187+ cmdit (
188+ [ 'config' , 'get' , 'apiToken' , '--config' , '{"apiToken":null}' ] ,
189+ 'should be nice and support cli prefixed env var for token as well' ,
190+ async cmd => {
191+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , {
192+ SOCKET_CLI_API_TOKEN : 'abc'
193+ } )
194+ expect ( stdout ) . toMatchInlineSnapshot (
195+ `
196+ "apiToken: abc
197+
198+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
199+ `
200+ )
201+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
202+ "
203+ _____ _ _ /---------------
204+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
205+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
206+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
207+ ` )
208+
209+ expect ( stdout . includes ( 'apiToken: abc' ) ) . toBe ( true )
210+ }
211+ )
212+
213+ // Migrate this away...?
214+ cmdit (
215+ [ 'config' , 'get' , 'apiToken' , '--config' , '{"apiToken":null}' ] ,
216+ 'should be very nice and support cli prefixed env var for key as well since it is an easy mistake to make' ,
217+ async cmd => {
218+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , {
219+ SOCKET_CLI_API_KEY : 'abc'
220+ } )
221+ expect ( stdout ) . toMatchInlineSnapshot (
222+ `
223+ "apiToken: abc
224+
225+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
226+ `
227+ )
228+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
229+ "
230+ _____ _ _ /---------------
231+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
232+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
233+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
234+ ` )
235+
236+ expect ( stdout . includes ( 'apiToken: abc' ) ) . toBe ( true )
237+ }
238+ )
239+
240+ cmdit (
241+ [
242+ 'config' ,
243+ 'get' ,
244+ 'apiToken' ,
245+ '--config' ,
246+ '{"apiToken":"ignoremebecausetheenvvarshouldbemoreimportant"}'
247+ ] ,
248+ 'should use the env var token when the config override also has a token set' ,
249+ async cmd => {
250+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , {
251+ SOCKET_CLI_API_KEY : 'abc'
252+ } )
253+ expect ( stdout ) . toMatchInlineSnapshot (
254+ `
255+ "apiToken: abc
256+
257+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
258+ `
259+ )
260+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
261+ "
262+ _____ _ _ /---------------
263+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
264+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
265+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
266+ ` )
267+
268+ expect ( stdout . includes ( 'apiToken: abc' ) ) . toBe ( true )
269+ }
270+ )
271+
272+ cmdit (
273+ [
274+ 'config' ,
275+ 'get' ,
276+ 'apiToken' ,
277+ '--config' ,
278+ '{"apiToken":"pickmepickme"}'
279+ ] ,
280+ 'should use the config override when there is no env var' ,
281+ async cmd => {
282+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , { } )
283+ expect ( stdout ) . toMatchInlineSnapshot (
284+ `
285+ "apiToken: pickmepickme
286+
287+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
288+ `
289+ )
290+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
291+ "
292+ _____ _ _ /---------------
293+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
294+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
295+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
296+ ` )
297+
298+ expect ( stdout . includes ( 'apiToken: pickmepickme' ) ) . toBe ( true )
299+ }
300+ )
301+
302+ cmdit (
303+ [ 'config' , 'get' , 'apiToken' , '--config' , '{}' ] ,
304+ 'should yield no token when override has none' ,
305+ async cmd => {
306+ const { code, stderr, stdout } = await invokeNpm ( entryPath , cmd , { } )
307+ expect ( stdout ) . toMatchInlineSnapshot (
308+ `
309+ "apiToken: undefined
310+
311+ Note: the config is in read-only mode, meaning at least one key was temporarily overridden from an env var or command flag."
312+ `
313+ )
314+ expect ( `\n ${ stderr } ` ) . toMatchInlineSnapshot ( `
315+ "
316+ _____ _ _ /---------------
317+ | __|___ ___| |_ ___| |_ | Socket.dev CLI ver <redacted>
318+ |__ | . | _| '_| -_| _| | Node: <redacted>, API token set: <redacted>
319+ |_____|___|___|_,_|___|_|.dev | Command: \`socket config get\`, cwd: <redacted>"
320+ ` )
321+
322+ expect ( stdout . includes ( 'apiToken: undefined' ) ) . toBe ( true )
323+ }
324+ )
325+ } )
326+ } )
107327} )
0 commit comments