OpenCode Go now reads quota usage with a bearer API key from OpenCode auth.json Removes the old workspace ID and browser cookie credential flow Deletes legacy OpenCode Go credential files during upgrade
35 lines
1.7 KiB
JavaScript
35 lines
1.7 KiB
JavaScript
import { afterAll, describe, expect, it } from 'bun:test';
|
|
import fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import { deleteLegacyOpenCodeGoCredential, deleteQuotaCredential, readQuotaCredential, writeQuotaCredential } from './store.js';
|
|
|
|
const previousDataDir = process.env.OPENCHAMBER_DATA_DIR;
|
|
const temporaryDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'openchamber-quota-store-'));
|
|
process.env.OPENCHAMBER_DATA_DIR = temporaryDirectory;
|
|
|
|
describe('quota credential store', () => {
|
|
it('uses owner-only permissions and rejects arbitrary provider paths', () => {
|
|
writeQuotaCredential('ollama-cloud', { cookie: 'secret' });
|
|
expect(fs.statSync(path.join(temporaryDirectory, 'quota')).mode & 0o777).toBe(0o700);
|
|
expect(fs.statSync(path.join(temporaryDirectory, 'quota', 'ollama-cloud.json')).mode & 0o777).toBe(0o600);
|
|
expect(readQuotaCredential('ollama-cloud', (value) => value)).toEqual({ cookie: 'secret' });
|
|
expect(() => writeQuotaCredential('../escape', {})).toThrow('Unsupported credential provider');
|
|
deleteQuotaCredential('ollama-cloud');
|
|
});
|
|
|
|
it('removes the obsolete OpenCode Go credential without parsing it', () => {
|
|
const legacyPath = path.join(temporaryDirectory, 'quota', 'opencode-go.json');
|
|
fs.mkdirSync(path.dirname(legacyPath), { recursive: true });
|
|
fs.writeFileSync(legacyPath, '{not valid json', { mode: 0o600 });
|
|
deleteLegacyOpenCodeGoCredential();
|
|
expect(fs.existsSync(legacyPath)).toBe(false);
|
|
});
|
|
});
|
|
|
|
afterAll(() => {
|
|
if (previousDataDir === undefined) delete process.env.OPENCHAMBER_DATA_DIR;
|
|
else process.env.OPENCHAMBER_DATA_DIR = previousDataDir;
|
|
fs.rmSync(temporaryDirectory, { recursive: true, force: true });
|
|
});
|