dify/cli/src/commands/env/list/run-list.test.ts
Yunlu Wen c0ee821d45
refactor: use absolute path for inter dir importing (#36822)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-01 01:32:16 +00:00

61 lines
2.4 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { runEnvList } from './run-list'
const stub = (overrides: Record<string, string> = {}) => (name: string) => overrides[name]
describe('runEnvList', () => {
it('text: header is NAME VALUE DESCRIPTION', () => {
const out = runEnvList({ lookup: stub() })
expect(out.split('\n')[0]).toMatch(/^NAME\s+VALUE\s+DESCRIPTION$/)
})
it('text: <unset> for unset non-sensitive var', () => {
const out = runEnvList({ lookup: stub() })
const hostLine = out.split('\n').find(l => l.startsWith('DIFY_HOST'))!
expect(hostLine).toContain('<unset>')
})
it('text: prints actual value for set non-sensitive var', () => {
const out = runEnvList({ lookup: stub({ DIFY_HOST: 'https://acme' }) })
const hostLine = out.split('\n').find(l => l.startsWith('DIFY_HOST'))!
expect(hostLine).toContain('https://acme')
})
it('text: <set> for set sensitive var (token never echoed)', () => {
const out = runEnvList({ lookup: stub({ DIFY_TOKEN: 'dfoa_secret' }) })
const tokLine = out.split('\n').find(l => l.startsWith('DIFY_TOKEN'))!
expect(tokLine).toContain('<set>')
expect(tokLine).not.toContain('dfoa_secret')
})
it('text: <unset> for unset sensitive var', () => {
const out = runEnvList({ lookup: stub() })
const tokLine = out.split('\n').find(l => l.startsWith('DIFY_TOKEN'))!
expect(tokLine).toContain('<unset>')
})
it('text: rows are sorted alphabetically by name', () => {
const out = runEnvList({ lookup: stub() })
const lines = out.trim().split('\n').slice(1).map(l => l.split(/\s+/)[0])
const sorted = [...lines].sort()
expect(lines).toEqual(sorted)
})
it('json: emits array with name/description/sensitive/value fields', () => {
const out = runEnvList({ json: true, lookup: stub({ DIFY_HOST: 'https://acme', DIFY_TOKEN: 'dfoa_x' }) })
const parsed = JSON.parse(out) as Array<{ name: string, sensitive: boolean, value: string }>
expect(parsed.length).toBeGreaterThan(0)
const host = parsed.find(r => r.name === 'DIFY_HOST')!
expect(host.sensitive).toBe(false)
expect(host.value).toBe('https://acme')
const tok = parsed.find(r => r.name === 'DIFY_TOKEN')!
expect(tok.sensitive).toBe(true)
expect(tok.value).toBe('<set>')
})
it('json: trailing newline matches Go encoder.Encode', () => {
const out = runEnvList({ json: true, lookup: stub() })
expect(out.endsWith('\n')).toBe(true)
})
})