-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Expand file tree
/
Copy pathapi-key.spec.ts
More file actions
128 lines (97 loc) · 3.72 KB
/
api-key.spec.ts
File metadata and controls
128 lines (97 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { describe, expect, it, beforeEach, afterEach } from 'vitest';
import { env } from 'node:process';
import { getAPIKey, getMiniMaxAPIKey, getLLMProvider, getProviderAPIKey } from './api-key';
describe('api-key', () => {
const savedAnthropicKey = env.ANTHROPIC_API_KEY;
const savedMiniMaxKey = env.MINIMAX_API_KEY;
const savedProvider = env.DEFAULT_LLM_PROVIDER;
beforeEach(() => {
delete env.ANTHROPIC_API_KEY;
delete env.MINIMAX_API_KEY;
delete env.DEFAULT_LLM_PROVIDER;
});
afterEach(() => {
// Restore original values
if (savedAnthropicKey !== undefined) {
env.ANTHROPIC_API_KEY = savedAnthropicKey;
} else {
delete env.ANTHROPIC_API_KEY;
}
if (savedMiniMaxKey !== undefined) {
env.MINIMAX_API_KEY = savedMiniMaxKey;
} else {
delete env.MINIMAX_API_KEY;
}
if (savedProvider !== undefined) {
env.DEFAULT_LLM_PROVIDER = savedProvider;
} else {
delete env.DEFAULT_LLM_PROVIDER;
}
});
const createMockEnv = (overrides: Partial<Env> = {}): Env => ({
ANTHROPIC_API_KEY: '',
...overrides,
});
describe('getAPIKey', () => {
it('returns Anthropic API key from process.env', () => {
env.ANTHROPIC_API_KEY = 'env-anthropic-key';
expect(getAPIKey(createMockEnv())).toBe('env-anthropic-key');
});
it('falls back to cloudflare env', () => {
expect(getAPIKey(createMockEnv({ ANTHROPIC_API_KEY: 'cf-key' }))).toBe('cf-key');
});
it('prefers process.env over cloudflare env', () => {
env.ANTHROPIC_API_KEY = 'env-key';
expect(getAPIKey(createMockEnv({ ANTHROPIC_API_KEY: 'cf-key' }))).toBe('env-key');
});
});
describe('getMiniMaxAPIKey', () => {
it('returns MiniMax API key from process.env', () => {
env.MINIMAX_API_KEY = 'env-minimax-key';
expect(getMiniMaxAPIKey(createMockEnv())).toBe('env-minimax-key');
});
it('falls back to cloudflare env', () => {
const cfEnv = createMockEnv() as Env & { MINIMAX_API_KEY: string };
cfEnv.MINIMAX_API_KEY = 'cf-minimax-key';
expect(getMiniMaxAPIKey(cfEnv)).toBe('cf-minimax-key');
});
it('returns empty string when not configured', () => {
expect(getMiniMaxAPIKey(createMockEnv())).toBe('');
});
});
describe('getLLMProvider', () => {
it('defaults to anthropic', () => {
expect(getLLMProvider(createMockEnv())).toBe('anthropic');
});
it('returns minimax when configured via process.env', () => {
env.DEFAULT_LLM_PROVIDER = 'minimax';
expect(getLLMProvider(createMockEnv())).toBe('minimax');
});
it('is case-insensitive', () => {
env.DEFAULT_LLM_PROVIDER = 'MiniMax';
expect(getLLMProvider(createMockEnv())).toBe('minimax');
});
it('falls back to cloudflare env', () => {
const cfEnv = createMockEnv() as Env & { DEFAULT_LLM_PROVIDER: string };
cfEnv.DEFAULT_LLM_PROVIDER = 'minimax';
expect(getLLMProvider(cfEnv)).toBe('minimax');
});
it('returns anthropic for unknown providers', () => {
env.DEFAULT_LLM_PROVIDER = 'unknown-provider';
expect(getLLMProvider(createMockEnv())).toBe('anthropic');
});
});
describe('getProviderAPIKey', () => {
it('returns anthropic provider and key by default', () => {
env.ANTHROPIC_API_KEY = 'anthropic-key';
const result = getProviderAPIKey(createMockEnv());
expect(result).toEqual({ provider: 'anthropic', apiKey: 'anthropic-key' });
});
it('returns minimax provider and key when configured', () => {
env.DEFAULT_LLM_PROVIDER = 'minimax';
env.MINIMAX_API_KEY = 'minimax-key';
const result = getProviderAPIKey(createMockEnv());
expect(result).toEqual({ provider: 'minimax', apiKey: 'minimax-key' });
});
});
});