cangku/backend/test/objectStorage.test.js

44 lines
1.4 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const {
buildPublicUrl,
normalizeEndpoint,
normalizeProtocol,
normalizePublicDomain,
normalizeStorageClass,
} = require('../src/services/objectStorage');
test('object storage normalizes endpoint and protocol', () => {
assert.equal(
normalizeEndpoint('s3.cn-east-1.qiniucs.com/', 'https'),
'https://s3.cn-east-1.qiniucs.com'
);
assert.equal(normalizeEndpoint('http://example.com/', 'https'), 'https://example.com');
assert.equal(normalizeProtocol('', 'http://example.com'), 'http');
assert.equal(normalizeProtocol('HTTPS'), 'https');
});
test('object storage public URL prefers the configured public domain', () => {
assert.equal(
buildPublicUrl({
protocol: 'https',
customDomain: 'scqny.jiansun.vip/',
endpoint: 'https://s3.cn-east-1.qiniucs.com',
bucket: 'gongxiangpan-sc',
}, 'images/中文 文件.png'),
'https://scqny.jiansun.vip/images/%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6.png'
);
assert.equal(
normalizePublicDomain('scqny.jiansun.vip/', 'https'),
'https://scqny.jiansun.vip'
);
});
test('object storage class falls back to STANDARD', () => {
assert.equal(normalizeStorageClass('standard'), 'STANDARD');
assert.equal(normalizeStorageClass('LINE'), 'LINE');
assert.equal(normalizeStorageClass('unsupported'), 'STANDARD');
});