|
| 1 | +import * as globalConfig from '../../../global-config'; |
| 2 | +import * as resolve from '../../../telemetry/resolve'; |
| 3 | +import { handleTelemetryDisable, handleTelemetryEnable, handleTelemetryStatus } from '../actions'; |
| 4 | +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; |
| 5 | + |
| 6 | +vi.mock('../../../global-config'); |
| 7 | +vi.mock('../../../telemetry/resolve'); |
| 8 | + |
| 9 | +const mockUpdateGlobalConfig = vi.mocked(globalConfig.updateGlobalConfig); |
| 10 | +const mockResolveTelemetryPreference = vi.mocked(resolve.resolveTelemetryPreference); |
| 11 | + |
| 12 | +describe('telemetry actions', () => { |
| 13 | + let consoleSpy: ReturnType<typeof vi.spyOn>; |
| 14 | + |
| 15 | + beforeEach(() => { |
| 16 | + vi.clearAllMocks(); |
| 17 | + // eslint-disable-next-line @typescript-eslint/no-empty-function |
| 18 | + consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {}); |
| 19 | + mockUpdateGlobalConfig.mockResolvedValue(undefined); |
| 20 | + }); |
| 21 | + |
| 22 | + afterEach(() => { |
| 23 | + consoleSpy.mockRestore(); |
| 24 | + }); |
| 25 | + |
| 26 | + describe('handleTelemetryDisable', () => { |
| 27 | + it('writes disabled config and prints confirmation', async () => { |
| 28 | + await handleTelemetryDisable(); |
| 29 | + |
| 30 | + expect(mockUpdateGlobalConfig).toHaveBeenCalledWith({ telemetry: { enabled: false } }); |
| 31 | + expect(consoleSpy).toHaveBeenCalledWith('Telemetry has been disabled.'); |
| 32 | + }); |
| 33 | + }); |
| 34 | + |
| 35 | + describe('handleTelemetryEnable', () => { |
| 36 | + it('writes enabled config and prints confirmation', async () => { |
| 37 | + await handleTelemetryEnable(); |
| 38 | + |
| 39 | + expect(mockUpdateGlobalConfig).toHaveBeenCalledWith({ telemetry: { enabled: true } }); |
| 40 | + expect(consoleSpy).toHaveBeenCalledWith('Telemetry has been enabled.'); |
| 41 | + }); |
| 42 | + }); |
| 43 | + |
| 44 | + describe('handleTelemetryStatus', () => { |
| 45 | + it('shows enabled status with default source', async () => { |
| 46 | + mockResolveTelemetryPreference.mockResolvedValue({ enabled: true, source: 'default' }); |
| 47 | + |
| 48 | + await handleTelemetryStatus(); |
| 49 | + |
| 50 | + expect(consoleSpy).toHaveBeenCalledWith('Telemetry: Enabled'); |
| 51 | + expect(consoleSpy).toHaveBeenCalledWith('Source: default'); |
| 52 | + }); |
| 53 | + |
| 54 | + it('shows disabled status with global-config source', async () => { |
| 55 | + mockResolveTelemetryPreference.mockResolvedValue({ enabled: false, source: 'global-config' }); |
| 56 | + |
| 57 | + await handleTelemetryStatus(); |
| 58 | + |
| 59 | + expect(consoleSpy).toHaveBeenCalledWith('Telemetry: Disabled'); |
| 60 | + expect(consoleSpy).toHaveBeenCalledWith('Source: global config (~/.agentcore/config.json)'); |
| 61 | + }); |
| 62 | + |
| 63 | + it('shows env var note when source is environment (AGENTCORE_TELEMETRY_DISABLED)', async () => { |
| 64 | + const originalEnv = process.env; |
| 65 | + process.env = { ...originalEnv, AGENTCORE_TELEMETRY_DISABLED: 'true' }; |
| 66 | + |
| 67 | + mockResolveTelemetryPreference.mockResolvedValue({ enabled: false, source: 'environment' }); |
| 68 | + |
| 69 | + await handleTelemetryStatus(); |
| 70 | + |
| 71 | + expect(consoleSpy).toHaveBeenCalledWith('Telemetry: Disabled'); |
| 72 | + expect(consoleSpy).toHaveBeenCalledWith('Source: environment variable'); |
| 73 | + expect(consoleSpy).toHaveBeenCalledWith('\nNote: AGENTCORE_TELEMETRY_DISABLED=true is set in your environment.'); |
| 74 | + |
| 75 | + process.env = originalEnv; |
| 76 | + }); |
| 77 | + |
| 78 | + it('shows env var note when source is environment (DO_NOT_TRACK)', async () => { |
| 79 | + const originalEnv = process.env; |
| 80 | + process.env = { ...originalEnv, DO_NOT_TRACK: '1' }; |
| 81 | + delete process.env.AGENTCORE_TELEMETRY_DISABLED; |
| 82 | + |
| 83 | + mockResolveTelemetryPreference.mockResolvedValue({ enabled: false, source: 'environment' }); |
| 84 | + |
| 85 | + await handleTelemetryStatus(); |
| 86 | + |
| 87 | + expect(consoleSpy).toHaveBeenCalledWith('\nNote: DO_NOT_TRACK=1 is set in your environment.'); |
| 88 | + |
| 89 | + process.env = originalEnv; |
| 90 | + }); |
| 91 | + }); |
| 92 | +}); |
0 commit comments