|
1 | 1 | import { describe, expect, test, beforeEach, afterEach } from 'bun:test' |
2 | | -import { extractHits } from './custom.js' |
| 2 | +import { extractHits, customProvider } from './custom.js' |
3 | 3 |
|
4 | 4 | // --------------------------------------------------------------------------- |
5 | 5 | // extractHits — flexible response parsing |
@@ -117,7 +117,61 @@ describe('buildAuthHeadersForPreset auth header behavior', () => { |
117 | 117 | delete process.env.WEB_URL_TEMPLATE |
118 | 118 | delete process.env.WEB_SEARCH_API |
119 | 119 | delete process.env.WEB_PROVIDER |
120 | | - const { customProvider } = require('./custom.js') |
121 | 120 | expect(customProvider.isConfigured()).toBe(false) |
122 | 121 | }) |
123 | 122 | }) |
| 123 | + |
| 124 | +// --------------------------------------------------------------------------- |
| 125 | +// buildAuthHeadersForPreset — direct tests for WEB_AUTH_HEADER / WEB_AUTH_SCHEME |
| 126 | +// --------------------------------------------------------------------------- |
| 127 | + |
| 128 | +describe('buildAuthHeadersForPreset direct assertions', () => { |
| 129 | + const savedEnv: Record<string, string | undefined> = {} |
| 130 | + |
| 131 | + beforeEach(() => { |
| 132 | + for (const k of ['WEB_KEY', 'WEB_AUTH_HEADER', 'WEB_AUTH_SCHEME']) { |
| 133 | + savedEnv[k] = process.env[k] |
| 134 | + } |
| 135 | + }) |
| 136 | + |
| 137 | + afterEach(() => { |
| 138 | + for (const [k, v] of Object.entries(savedEnv)) { |
| 139 | + if (v === undefined) delete process.env[k] |
| 140 | + else process.env[k] = v |
| 141 | + } |
| 142 | + }) |
| 143 | + |
| 144 | + test('WEB_AUTH_HEADER="" is an explicit opt-out — returns empty headers even with WEB_KEY set', () => { |
| 145 | + process.env.WEB_KEY = 'sk-test-123' |
| 146 | + process.env.WEB_AUTH_HEADER = '' |
| 147 | + const { buildAuthHeadersForPreset } = require('./custom.js') |
| 148 | + expect(buildAuthHeadersForPreset({ urlTemplate: '', queryParam: 'q', authHeader: 'Authorization' })).toEqual({}) |
| 149 | + }) |
| 150 | + |
| 151 | + test('WEB_AUTH_SCHEME="" strips the scheme prefix (bare key only)', () => { |
| 152 | + process.env.WEB_KEY = 'sk-test-123' |
| 153 | + process.env.WEB_AUTH_SCHEME = '' |
| 154 | + delete process.env.WEB_AUTH_HEADER |
| 155 | + const { buildAuthHeadersForPreset } = require('./custom.js') |
| 156 | + const result = buildAuthHeadersForPreset({ urlTemplate: '', queryParam: 'q', authHeader: 'X-Api-Key' }) |
| 157 | + // scheme is '' so the header value should be just the key (trimmed) |
| 158 | + expect(result).toEqual({ 'X-Api-Key': 'sk-test-123' }) |
| 159 | + }) |
| 160 | + |
| 161 | + test('uses preset authHeader and authScheme when no env overrides', () => { |
| 162 | + process.env.WEB_KEY = 'tok-abc' |
| 163 | + delete process.env.WEB_AUTH_HEADER |
| 164 | + delete process.env.WEB_AUTH_SCHEME |
| 165 | + const { buildAuthHeadersForPreset } = require('./custom.js') |
| 166 | + const result = buildAuthHeadersForPreset({ urlTemplate: '', queryParam: 'q', authHeader: 'Authorization', authScheme: 'Bearer' }) |
| 167 | + expect(result).toEqual({ 'Authorization': 'Bearer tok-abc' }) |
| 168 | + }) |
| 169 | + |
| 170 | + test('returns empty when WEB_KEY is not set', () => { |
| 171 | + delete process.env.WEB_KEY |
| 172 | + delete process.env.WEB_AUTH_HEADER |
| 173 | + delete process.env.WEB_AUTH_SCHEME |
| 174 | + const { buildAuthHeadersForPreset } = require('./custom.js') |
| 175 | + expect(buildAuthHeadersForPreset({ urlTemplate: '', queryParam: 'q', authHeader: 'Authorization' })).toEqual({}) |
| 176 | + }) |
| 177 | +}) |
0 commit comments