teqo/tests/unit/cliEnvFlags.unit.spec.ts
Francisco Solla 228d5da9c8
Some checks failed
CI (PR) / scope (pull_request) Successful in 32s
CI (PR) / lint (pull_request) Successful in 46s
CI (PR) / docs-guards (pull_request) Successful in 9s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / format (pull_request) Successful in 47s
CI (PR) / typecheck (pull_request) Successful in 28s
CI (PR) / knip (pull_request) Successful in 32s
CI (PR) / cycles (pull_request) Successful in 34s
CI (PR) / unit (pull_request) Successful in 45s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / int (pull_request) Successful in 1m34s
CI (PR) / checks (pull_request) Successful in 1s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 19m21s
CI / checks (push) Blocked by required conditions
CI / deploy homeserver (teqo-1313) (push) Blocked by required conditions
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 13s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
Agent pool supervisor / tick (pull_request) Successful in 29s
CI / static (push) Successful in 2m15s
CI / int (push) Successful in 2m48s
CI / build (push) Successful in 2m37s
CI / e2e (2) (push) Successful in 5m56s
CI / e2e (1) (push) Failing after 17m21s
ops(OPS52-media-guard): reconcile do media:recover exige MEDIA_RECOVER_CONFIRM=1 (guard de intenção explícita)
2026-08-18 12:45:32 -03:00

44 lines
1.6 KiB
TypeScript

// @vitest-environment node
import { afterEach, describe, expect, it } from 'vitest'
import { ALLOW_REMOTE_DB_FLAG, isRemoteDbOverrideSet, isTruthyEnv } from '../../scripts/lib/cli.mjs'
describe('isTruthyEnv (OPS52-media-guard — one spelling of the true/1 intent-flag semantics)', () => {
it('accepts exactly true and 1', () => {
expect(isTruthyEnv('true')).toBe(true)
expect(isTruthyEnv('1')).toBe(true)
})
it('refuses every other value — including case variants and empty/absent', () => {
for (const value of ['TRUE', 'True', 'yes', 'on', '0', 'false', '', ' ', '2']) {
expect(isTruthyEnv(value), JSON.stringify(value)).toBe(false)
}
expect(isTruthyEnv(undefined)).toBe(false)
})
})
describe('isRemoteDbOverrideSet (behavior preserved through the delegation refactor)', () => {
const original = process.env[ALLOW_REMOTE_DB_FLAG]
afterEach(() => {
if (original === undefined) delete process.env[ALLOW_REMOTE_DB_FLAG]
else process.env[ALLOW_REMOTE_DB_FLAG] = original
})
it('still passes for true/1', () => {
process.env[ALLOW_REMOTE_DB_FLAG] = 'true'
expect(isRemoteDbOverrideSet()).toBe(true)
process.env[ALLOW_REMOTE_DB_FLAG] = '1'
expect(isRemoteDbOverrideSet()).toBe(true)
})
it('still refuses TRUE/yes/empty/absent', () => {
for (const value of ['TRUE', 'yes', '', '0', 'false']) {
process.env[ALLOW_REMOTE_DB_FLAG] = value
expect(isRemoteDbOverrideSet(), JSON.stringify(value)).toBe(false)
}
delete process.env[ALLOW_REMOTE_DB_FLAG]
expect(isRemoteDbOverrideSet()).toBe(false)
})
})