Ctrl K
ComunidadGuías…

src/adapters/storage/object-storage.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import test from 'node:test';
import assert from 'node:assert/strict';
import { mkdtempSync, rmSync, readFileSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { localObjectFile, localStorageBucket, objectKey, putObject, storageBucketForRuntime } from './object-storage';

test('local media storage: 写入 data/uploads 并返回公开 URL', async () => {
  const root = mkdtempSync(join(tmpdir(), 'bailing-local-upload-'));
  try {
    const bucket = localStorageBucket('https://hub.example.com');
    const key = objectKey(bucket, 'pub_demo', 'image/png');
    const url = await putObject(bucket, key, Buffer.from('png-bytes'), 'image/png', { root });
    assert.equal(url, `https://hub.example.com/uploads/${key}`);

    const target = localObjectFile(root, key);
    assert.ok(target);
    assert.equal(target.contentType, 'image/png');
    assert.equal(readFileSync(target.file, 'utf8'), 'png-bytes');
    assert.equal(localObjectFile(root, '../secret.txt'), null);
  } finally {
    rmSync(root, { recursive: true, force: true });
  }
});

test('local media storage: 显式 local 配置在运行期补齐公开 /uploads 地址', async () => {
  const bucket = storageBucketForRuntime({
    ...localStorageBucket(''),
    name: 'local-media',
    public_base_url: '',
    path_prefix: 'media',
  }, 'https://hub.example.com/');

  assert.equal(bucket.name, 'local-media');
  assert.equal(bucket.kind, 'local');
  assert.equal(bucket.public_base_url, 'https://hub.example.com/uploads');
  assert.equal(bucket.path_prefix, 'media');
});