44 lines
1.4 KiB
JavaScript
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');
|
|
});
|