dify/web/features/deployments/shared/components/__tests__/env-var-bindings-utils.spec.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

59 lines
2.0 KiB
TypeScript

import type { EnvVarSlot } from '@dify/contracts/enterprise/types.gen'
import { EnvVarValueType } from '@dify/contracts/enterprise/types.gen'
import { describe, expect, it } from 'vitest'
import { envVarBindingSlotFromContract, envVarBindingValueType } from '../env-var-bindings-utils'
function slot(overrides: Partial<EnvVarSlot>): EnvVarSlot {
return {
key: 'API_KEY',
valueType: EnvVarValueType.ENV_VAR_VALUE_TYPE_STRING,
description: '',
...overrides,
}
}
describe('env var binding value type normalization', () => {
it('should normalize generated and DSL value types', () => {
expect(envVarBindingValueType(EnvVarValueType.ENV_VAR_VALUE_TYPE_NUMBER)).toBe('number')
expect(envVarBindingValueType('number')).toBe('number')
expect(envVarBindingValueType(EnvVarValueType.ENV_VAR_VALUE_TYPE_SECRET)).toBe('secret')
expect(envVarBindingValueType('secret')).toBe('secret')
expect(envVarBindingValueType(EnvVarValueType.ENV_VAR_VALUE_TYPE_STRING)).toBe('string')
expect(envVarBindingValueType()).toBe('string')
})
})
describe('env var contract slot conversion', () => {
it('should trim keys and preserve default and last value availability', () => {
expect(
envVarBindingSlotFromContract(
slot({
key: ' API_TOKEN ',
valueType: EnvVarValueType.ENV_VAR_VALUE_TYPE_SECRET,
defaultValue: '',
lastValue: 'previous',
}),
),
).toMatchObject({
key: 'API_TOKEN',
valueType: 'secret',
hasDefaultValue: true,
hasLastValue: true,
})
})
it('should ignore blank keys and mark absent values as unavailable', () => {
expect(envVarBindingSlotFromContract(slot({ key: ' ' }))).toBeUndefined()
expect(
envVarBindingSlotFromContract(
slot({ key: 'PORT', valueType: EnvVarValueType.ENV_VAR_VALUE_TYPE_NUMBER }),
),
).toMatchObject({
key: 'PORT',
valueType: 'number',
hasDefaultValue: false,
hasLastValue: false,
})
})
})