Rhodawk Bot
feat(openclaude): vendor OpenClaude as headless gRPC daemon, eliminate aider
39e315a
Raw
History Blame Contribute Delete
2.69 kB
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test'
import axios from 'axios'
const originalEnv = { ...process.env }
async function importFreshModule() {
mock.restore()
return import(`./utils.ts?ts=${Date.now()}-${Math.random()}`)
}
beforeEach(() => {
process.env = { ...originalEnv }
})
afterEach(() => {
process.env = { ...originalEnv }
mock.restore()
})
describe('checkDomainBlocklist', () => {
test('returns allowed without API call in OpenAI mode', async () => {
process.env.CLAUDE_CODE_USE_OPENAI = '1'
const actual = await import('../../utils/model/providers.js')
mock.module('../../utils/model/providers.js', () => ({
...actual,
getAPIProvider: () => 'openai',
isFirstPartyAnthropicBaseUrl: () => false,
}))
const getSpy = mock(() =>
Promise.resolve({ status: 200, data: { can_fetch: true } }),
)
axios.get = getSpy as typeof axios.get
const { checkDomainBlocklist } = await importFreshModule()
const result = await checkDomainBlocklist('example.com')
expect(result.status).toBe('allowed')
expect(getSpy).not.toHaveBeenCalled()
})
test('returns allowed without API call in Gemini mode', async () => {
process.env.CLAUDE_CODE_USE_GEMINI = '1'
const actual = await import('../../utils/model/providers.js')
mock.module('../../utils/model/providers.js', () => ({
...actual,
getAPIProvider: () => 'gemini',
isFirstPartyAnthropicBaseUrl: () => false,
}))
const getSpy = mock(() =>
Promise.resolve({ status: 200, data: { can_fetch: true } }),
)
axios.get = getSpy as typeof axios.get
const { checkDomainBlocklist } = await importFreshModule()
const result = await checkDomainBlocklist('example.com')
expect(result.status).toBe('allowed')
expect(getSpy).not.toHaveBeenCalled()
})
test('calls Anthropic domain check in first-party mode', async () => {
delete process.env.CLAUDE_CODE_USE_OPENAI
delete process.env.CLAUDE_CODE_USE_GEMINI
delete process.env.CLAUDE_CODE_USE_GITHUB
const actual = await import('../../utils/model/providers.js')
mock.module('../../utils/model/providers.js', () => ({
...actual,
getAPIProvider: () => 'firstParty',
isFirstPartyAnthropicBaseUrl: () => true,
}))
const getSpy = mock(() =>
Promise.resolve({ status: 200, data: { can_fetch: true } }),
)
axios.get = getSpy as typeof axios.get
const { checkDomainBlocklist } = await importFreshModule()
const result = await checkDomainBlocklist('example.com')
expect(result.status).toBe('allowed')
expect(getSpy).toHaveBeenCalledTimes(1)
})
})