moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
import { afterEach, describe, expect, it } from 'vitest';
import { VaultStore } from '@waggle/core';
import {
applyProviderKeyToEnv,
hydrateProviderEnvFromVault,
migrateLegacyProviderKeysToVault,
} from '../../src/local/provider-env.js';
const originalEnv = new Map<string, string | undefined>();
function rememberEnv(name: string): void {
if (!originalEnv.has(name)) originalEnv.set(name, process.env[name]);
}
afterEach(() => {
for (const [name, value] of originalEnv) {
if (value === undefined) delete process.env[name];
else process.env[name] = value;
}
originalEnv.clear();
});
describe('provider environment hydration', () => {
it('maps provider keys to every environment name required by the router', () => {
rememberEnv('GEMINI_API_KEY');
rememberEnv('GOOGLE_API_KEY');
delete process.env.GEMINI_API_KEY;
delete process.env.GOOGLE_API_KEY;
expect(applyProviderKeyToEnv('google', 'google-secret')).toBe(2);
expect(process.env.GEMINI_API_KEY).toBe('google-secret');
expect(process.env.GOOGLE_API_KEY).toBe('google-secret');
});
it('hydrates vault keys without replacing an explicit process override', () => {
const dataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'waggle-provider-env-'));
rememberEnv('OPENAI_API_KEY');
process.env.OPENAI_API_KEY = 'explicit-key';
try {
const vault = new VaultStore(dataDir);
vault.set('openai', 'vault-key');
expect(hydrateProviderEnvFromVault(vault)).toBe(0);
expect(process.env.OPENAI_API_KEY).toBe('explicit-key');
} finally {
fs.rmSync(dataDir, { recursive: true, force: true });
}
});
it('migrates and scrubs legacy keys before startup catalog discovery', () => {
const dataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'waggle-provider-migrate-'));
const configPath = path.join(dataDir, 'config.json');
fs.writeFileSync(configPath, JSON.stringify({
providers: {
openai: { apiKey: 'legacy-secret', models: ['old-static-entry'] },
},
}));
try {
const vault = new VaultStore(dataDir);
expect(migrateLegacyProviderKeysToVault(dataDir, vault)).toBe(1);
expect(vault.get('openai')?.value).toBe('legacy-secret');
expect(JSON.parse(fs.readFileSync(configPath, 'utf8')).providers.openai).toEqual({
apiKey: '',
models: ['old-static-entry'],
});
} finally {
fs.rmSync(dataDir, { recursive: true, force: true });
}
});
});