W / test /auth-warning.test.js
Ac66's picture
Upload folder using huggingface_hub
2b64d42 verified
import { afterEach, describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { config } from '../src/config.js';
import {
addAccountByKey,
configureBindHost,
getAccountList,
removeAccount,
shouldEmitNoAuthWarning,
validateApiKey,
} from '../src/auth.js';
const originalApiKey = config.apiKey;
const createdAccountIds = [];
afterEach(() => {
config.apiKey = originalApiKey;
configureBindHost('0.0.0.0');
while (createdAccountIds.length) removeAccount(createdAccountIds.pop());
});
describe('shouldEmitNoAuthWarning', () => {
it('warns when unauthenticated service binds all interfaces', () => {
assert.equal(shouldEmitNoAuthWarning('0.0.0.0', false), true);
assert.equal(shouldEmitNoAuthWarning('::', false), true);
});
it('does not warn for localhost or configured auth', () => {
assert.equal(shouldEmitNoAuthWarning('127.0.0.1', false), false);
assert.equal(shouldEmitNoAuthWarning('0.0.0.0', true), false);
});
it('allows missing API_KEY only on local binds', () => {
config.apiKey = '';
configureBindHost('127.0.0.1');
assert.equal(validateApiKey(''), true);
configureBindHost('::1');
assert.equal(validateApiKey(''), true);
configureBindHost('[::1]');
assert.equal(validateApiKey(''), true);
configureBindHost('::ffff:127.0.0.1');
assert.equal(validateApiKey(''), true);
// Empty bindHost is "didn't configure / Node defaults to all interfaces"
// which is non-local. Must fail closed.
configureBindHost('');
assert.equal(validateApiKey(''), false);
configureBindHost('0.0.0.0');
assert.equal(validateApiKey(''), false);
configureBindHost('192.168.1.10');
assert.equal(validateApiKey('anything'), false);
});
it('compares configured API_KEY without default-allowing missing or wrong keys', () => {
config.apiKey = 'server-secret';
configureBindHost('0.0.0.0');
assert.equal(validateApiKey('server-secret'), true);
assert.equal(validateApiKey('wrong'), false);
assert.equal(validateApiKey(''), false);
});
it('returns masked account keys without the raw upstream apiKey', () => {
const key = `abcd1234efgh5678-${Date.now()}`;
const account = addAccountByKey(key, 'masked-list');
createdAccountIds.push(account.id);
const listed = getAccountList().find(a => a.id === account.id);
assert.equal(listed.apiKey, undefined);
assert.equal(listed.apiKey_masked, `${key.slice(0, 8)}...${key.slice(-4)}`);
assert.equal(listed.keyPrefix, 'abcd1234...');
});
});