mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 16:02:26 +00:00
- Added `tests/state/cache.test.mjs` to test profile persistence and URL health caching. - Added `tests/nostr/sessionActor.test.mjs` to test session key encryption/decryption and storage. - Added `tests/services/r2Service.test.mjs` to test R2 settings management and bucket configuration. - Exposed `__testExports` in `js/nostr/sessionActor.js` to allow testing of private helper functions. - Used `tests/test-helpers/setup-localstorage.mjs` to mock browser environments in all new tests.
107 lines
3.5 KiB
JavaScript
107 lines
3.5 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert";
|
|
import r2Service from "../../js/services/r2Service.js";
|
|
|
|
// Ensure localStorage is mocked
|
|
import "../../tests/test-helpers/setup-localstorage.mjs";
|
|
|
|
test("js/services/r2Service.js", async (t) => {
|
|
t.beforeEach(async () => {
|
|
localStorage.clear();
|
|
await r2Service.clearSettings();
|
|
});
|
|
|
|
await t.test("Default Settings", () => {
|
|
const settings = r2Service.getSettings();
|
|
// The actual default settings might contain more fields than we checked.
|
|
// Let's verify the core fields match.
|
|
assert.strictEqual(settings.accountId, "");
|
|
assert.strictEqual(settings.accessKeyId, "");
|
|
assert.strictEqual(settings.secretAccessKey, "");
|
|
assert.strictEqual(settings.baseDomain, "");
|
|
assert.deepStrictEqual(settings.buckets, {});
|
|
});
|
|
|
|
await t.test("handleCloudflareSettingsSubmit - Valid Input", async () => {
|
|
const input = {
|
|
accountId: "acc123",
|
|
accessKeyId: "key123",
|
|
secretAccessKey: "secret123",
|
|
baseDomain: "https://pub-xxx.r2.dev",
|
|
};
|
|
|
|
const result = await r2Service.handleCloudflareSettingsSubmit(input);
|
|
assert.strictEqual(result, true);
|
|
|
|
const saved = r2Service.getSettings();
|
|
assert.strictEqual(saved.accountId, input.accountId);
|
|
assert.strictEqual(saved.accessKeyId, input.accessKeyId);
|
|
assert.strictEqual(saved.secretAccessKey, input.secretAccessKey);
|
|
assert.strictEqual(saved.baseDomain, input.baseDomain);
|
|
});
|
|
|
|
await t.test("handleCloudflareSettingsSubmit - Invalid S3 URL", async () => {
|
|
const input = {
|
|
accountId: "acc123",
|
|
accessKeyId: "key123",
|
|
secretAccessKey: "secret123",
|
|
baseDomain: "https://something.r2.cloudflarestorage.com",
|
|
};
|
|
|
|
let status = "";
|
|
const cleanup = r2Service.on("settingsStatus", (s) => (status = s.message));
|
|
|
|
const result = await r2Service.handleCloudflareSettingsSubmit(input);
|
|
assert.strictEqual(result, false);
|
|
assert.match(status, /entered the S3 API URL/);
|
|
|
|
cleanup();
|
|
});
|
|
|
|
await t.test("handleCloudflareSettingsSubmit - Missing Fields", async () => {
|
|
const input = {
|
|
accountId: "acc123",
|
|
// missing accessKeyId
|
|
secretAccessKey: "secret123",
|
|
baseDomain: "https://pub-xxx.r2.dev",
|
|
};
|
|
|
|
const result = await r2Service.handleCloudflareSettingsSubmit(input);
|
|
assert.strictEqual(result, false);
|
|
});
|
|
|
|
await t.test("ensureBucketConfigForNpub - Uses Explicit Credentials", async () => {
|
|
const npub = "npub1test";
|
|
const credentials = {
|
|
accountId: "acc123",
|
|
accessKeyId: "key123",
|
|
secretAccessKey: "secret123",
|
|
baseDomain: "https://pub-xxx.r2.dev",
|
|
bucket: "custom-bucket",
|
|
isLegacy: true,
|
|
};
|
|
|
|
const result = await r2Service.ensureBucketConfigForNpub(npub, { credentials });
|
|
assert.strictEqual(result.entry.bucket, "custom-bucket");
|
|
assert.strictEqual(result.entry.publicBaseUrl, "https://pub-xxx.r2.dev");
|
|
assert.strictEqual(result.customDomainStatus, "manual");
|
|
});
|
|
|
|
await t.test("resolveConnection - Returns Legacy Settings if no StorageService", async () => {
|
|
const input = {
|
|
accountId: "legacyAcc",
|
|
accessKeyId: "legacyKey",
|
|
secretAccessKey: "legacySecret",
|
|
baseDomain: "https://legacy.com",
|
|
};
|
|
await r2Service.handleCloudflareSettingsSubmit(input);
|
|
|
|
const npub = "npub1any";
|
|
const resolved = await r2Service.resolveConnection(npub);
|
|
|
|
assert.ok(resolved);
|
|
assert.strictEqual(resolved.accountId, "legacyAcc");
|
|
assert.strictEqual(resolved.isLegacy, true);
|
|
});
|
|
});
|