Skip to content

Commit e19eb50

Browse files
committed
test(coverage): cover invalidateDefaultApiToken + getExtraCaCerts paths
Adds tests for the previously-untested SDK helpers: invalidateDefaultApiToken: clears the cached default token so the next getDefaultApiToken() call falls through to the underlying source (which now returns undefined). getExtraCaCerts: vi.resetModules() to bypass the module-level cache (_extraCaCertsResolved) populated by earlier tests, then exercises: - NODE_EXTRA_CA_CERTS-set early return (line 107-108) - Neither-env-var early return (line 110-112) - Second-call cache hit (line 102-103) sdk.mts: 79.41% → 83.82% statements. Remaining gap is c8-ignored SSL_CERT_FILE-loader, interactive password prompt, and SOCKET_CLI_DEBUG branches.
1 parent 4cf741f commit e19eb50

1 file changed

Lines changed: 66 additions & 1 deletion

File tree

packages/cli/test/unit/utils/socket/sdk.test.mts

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* - utils/socket/sdk.mts (implementation)
2020
*/
2121

22-
import { beforeEach, describe, expect, it, vi } from 'vitest'
22+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2323

2424
// Mock the config utility.
2525
const mockGetConfigValueOrUndef = vi.hoisted(() => vi.fn())
@@ -87,9 +87,11 @@ import {
8787
getDefaultApiBaseUrl,
8888
getDefaultApiToken,
8989
getDefaultProxyUrl,
90+
getExtraCaCerts,
9091
getPublicApiToken,
9192
getVisibleTokenPrefix,
9293
hasDefaultApiToken,
94+
invalidateDefaultApiToken,
9395
setupSdk,
9496
} from '../../../../src/utils/socket/sdk.mts'
9597

@@ -211,6 +213,69 @@ describe('SDK Utilities', () => {
211213
})
212214
})
213215

216+
describe('invalidateDefaultApiToken', () => {
217+
it('clears the cached default token', () => {
218+
mockGetSocketCliApiToken.mockReturnValue('cached-token')
219+
// Populate the cache.
220+
expect(getDefaultApiToken()).toBe('cached-token')
221+
// Now invalidate — and have the underlying source return undefined.
222+
invalidateDefaultApiToken()
223+
mockGetSocketCliApiToken.mockReturnValue(undefined)
224+
mockGetConfigValueOrUndef.mockReturnValue(undefined)
225+
expect(getDefaultApiToken()).toBeUndefined()
226+
})
227+
})
228+
229+
describe('getExtraCaCerts', () => {
230+
const realNodeExtraCaCerts = process.env['NODE_EXTRA_CA_CERTS']
231+
const realSslCertFile = process.env['SSL_CERT_FILE']
232+
233+
afterEach(() => {
234+
// Restore original env vars after each test.
235+
if (realNodeExtraCaCerts === undefined) {
236+
delete process.env['NODE_EXTRA_CA_CERTS']
237+
} else {
238+
process.env['NODE_EXTRA_CA_CERTS'] = realNodeExtraCaCerts
239+
}
240+
if (realSslCertFile === undefined) {
241+
delete process.env['SSL_CERT_FILE']
242+
} else {
243+
process.env['SSL_CERT_FILE'] = realSslCertFile
244+
}
245+
})
246+
247+
it('returns undefined when NODE_EXTRA_CA_CERTS is set (Node already loaded)', async () => {
248+
// Use a fresh module import to bypass the module-level cache
249+
// (`_extraCaCertsResolved`) that the rest of the test suite has
250+
// already populated.
251+
vi.resetModules()
252+
process.env['NODE_EXTRA_CA_CERTS'] = '/some/path/ca.pem'
253+
delete process.env['SSL_CERT_FILE']
254+
const fresh = await import('../../../../src/utils/socket/sdk.mts')
255+
const result = fresh.getExtraCaCerts()
256+
expect(result).toBeUndefined()
257+
})
258+
259+
it('returns undefined when neither env var is set', async () => {
260+
vi.resetModules()
261+
delete process.env['NODE_EXTRA_CA_CERTS']
262+
delete process.env['SSL_CERT_FILE']
263+
const fresh = await import('../../../../src/utils/socket/sdk.mts')
264+
const result = fresh.getExtraCaCerts()
265+
expect(result).toBeUndefined()
266+
})
267+
268+
it('caches the resolved value across calls', async () => {
269+
vi.resetModules()
270+
delete process.env['NODE_EXTRA_CA_CERTS']
271+
delete process.env['SSL_CERT_FILE']
272+
const fresh = await import('../../../../src/utils/socket/sdk.mts')
273+
// Two calls — second hits the cache early-return.
274+
expect(fresh.getExtraCaCerts()).toBeUndefined()
275+
expect(fresh.getExtraCaCerts()).toBeUndefined()
276+
})
277+
})
278+
214279
describe('setupSdk', () => {
215280
it('returns error when no token and not interactive', () => {
216281
mockIsInteractive.mockReturnValue(false)

0 commit comments

Comments
 (0)