@streetjs/storage 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drivers/local.d.ts +8 -0
- package/dist/drivers/local.d.ts.map +1 -1
- package/dist/drivers/local.js +18 -3
- package/dist/drivers/local.js.map +1 -1
- package/package.json +12 -6
- package/dist/tests/access.test.d.ts +0 -2
- package/dist/tests/access.test.d.ts.map +0 -1
- package/dist/tests/access.test.js +0 -270
- package/dist/tests/access.test.js.map +0 -1
- package/dist/tests/azure-driver.test.d.ts +0 -2
- package/dist/tests/azure-driver.test.d.ts.map +0 -1
- package/dist/tests/azure-driver.test.js +0 -183
- package/dist/tests/azure-driver.test.js.map +0 -1
- package/dist/tests/backblaze-driver.test.d.ts +0 -2
- package/dist/tests/backblaze-driver.test.d.ts.map +0 -1
- package/dist/tests/backblaze-driver.test.js +0 -185
- package/dist/tests/backblaze-driver.test.js.map +0 -1
- package/dist/tests/bridge-degradation.test.d.ts +0 -2
- package/dist/tests/bridge-degradation.test.d.ts.map +0 -1
- package/dist/tests/bridge-degradation.test.js +0 -138
- package/dist/tests/bridge-degradation.test.js.map +0 -1
- package/dist/tests/cli.test.d.ts +0 -2
- package/dist/tests/cli.test.d.ts.map +0 -1
- package/dist/tests/cli.test.js +0 -127
- package/dist/tests/cli.test.js.map +0 -1
- package/dist/tests/contract.d.ts +0 -131
- package/dist/tests/contract.d.ts.map +0 -1
- package/dist/tests/contract.js +0 -222
- package/dist/tests/contract.js.map +0 -1
- package/dist/tests/contract.test.d.ts +0 -2
- package/dist/tests/contract.test.d.ts.map +0 -1
- package/dist/tests/contract.test.js +0 -110
- package/dist/tests/contract.test.js.map +0 -1
- package/dist/tests/directory.test.d.ts +0 -2
- package/dist/tests/directory.test.d.ts.map +0 -1
- package/dist/tests/directory.test.js +0 -125
- package/dist/tests/directory.test.js.map +0 -1
- package/dist/tests/errors.test.d.ts +0 -2
- package/dist/tests/errors.test.d.ts.map +0 -1
- package/dist/tests/errors.test.js +0 -93
- package/dist/tests/errors.test.js.map +0 -1
- package/dist/tests/events-bridge.test.d.ts +0 -2
- package/dist/tests/events-bridge.test.d.ts.map +0 -1
- package/dist/tests/events-bridge.test.js +0 -228
- package/dist/tests/events-bridge.test.js.map +0 -1
- package/dist/tests/example-smoke.test.d.ts +0 -2
- package/dist/tests/example-smoke.test.d.ts.map +0 -1
- package/dist/tests/example-smoke.test.js +0 -34
- package/dist/tests/example-smoke.test.js.map +0 -1
- package/dist/tests/gcs-driver.test.d.ts +0 -2
- package/dist/tests/gcs-driver.test.d.ts.map +0 -1
- package/dist/tests/gcs-driver.test.js +0 -197
- package/dist/tests/gcs-driver.test.js.map +0 -1
- package/dist/tests/image.test.d.ts +0 -2
- package/dist/tests/image.test.d.ts.map +0 -1
- package/dist/tests/image.test.js +0 -102
- package/dist/tests/image.test.js.map +0 -1
- package/dist/tests/lifecycle.test.d.ts +0 -2
- package/dist/tests/lifecycle.test.d.ts.map +0 -1
- package/dist/tests/lifecycle.test.js +0 -171
- package/dist/tests/lifecycle.test.js.map +0 -1
- package/dist/tests/local-driver.test.d.ts +0 -2
- package/dist/tests/local-driver.test.d.ts.map +0 -1
- package/dist/tests/local-driver.test.js +0 -153
- package/dist/tests/local-driver.test.js.map +0 -1
- package/dist/tests/local-streaming.test.d.ts +0 -2
- package/dist/tests/local-streaming.test.d.ts.map +0 -1
- package/dist/tests/local-streaming.test.js +0 -121
- package/dist/tests/local-streaming.test.js.map +0 -1
- package/dist/tests/memory-driver.test.d.ts +0 -2
- package/dist/tests/memory-driver.test.d.ts.map +0 -1
- package/dist/tests/memory-driver.test.js +0 -180
- package/dist/tests/memory-driver.test.js.map +0 -1
- package/dist/tests/memory-streaming.test.d.ts +0 -2
- package/dist/tests/memory-streaming.test.d.ts.map +0 -1
- package/dist/tests/memory-streaming.test.js +0 -92
- package/dist/tests/memory-streaming.test.js.map +0 -1
- package/dist/tests/minio-driver.test.d.ts +0 -2
- package/dist/tests/minio-driver.test.d.ts.map +0 -1
- package/dist/tests/minio-driver.test.js +0 -146
- package/dist/tests/minio-driver.test.js.map +0 -1
- package/dist/tests/non-s3-integration.test.d.ts +0 -2
- package/dist/tests/non-s3-integration.test.d.ts.map +0 -1
- package/dist/tests/non-s3-integration.test.js +0 -201
- package/dist/tests/non-s3-integration.test.js.map +0 -1
- package/dist/tests/observability.registration.test.d.ts +0 -2
- package/dist/tests/observability.registration.test.d.ts.map +0 -1
- package/dist/tests/observability.registration.test.js +0 -103
- package/dist/tests/observability.registration.test.js.map +0 -1
- package/dist/tests/observability.test.d.ts +0 -2
- package/dist/tests/observability.test.d.ts.map +0 -1
- package/dist/tests/observability.test.js +0 -240
- package/dist/tests/observability.test.js.map +0 -1
- package/dist/tests/plugin.test.d.ts +0 -2
- package/dist/tests/plugin.test.d.ts.map +0 -1
- package/dist/tests/plugin.test.js +0 -112
- package/dist/tests/plugin.test.js.map +0 -1
- package/dist/tests/prop-concurrent.test.d.ts +0 -2
- package/dist/tests/prop-concurrent.test.d.ts.map +0 -1
- package/dist/tests/prop-concurrent.test.js +0 -59
- package/dist/tests/prop-concurrent.test.js.map +0 -1
- package/dist/tests/prop-copy.test.d.ts +0 -2
- package/dist/tests/prop-copy.test.d.ts.map +0 -1
- package/dist/tests/prop-copy.test.js +0 -63
- package/dist/tests/prop-copy.test.js.map +0 -1
- package/dist/tests/prop-delete.test.d.ts +0 -2
- package/dist/tests/prop-delete.test.d.ts.map +0 -1
- package/dist/tests/prop-delete.test.js +0 -35
- package/dist/tests/prop-delete.test.js.map +0 -1
- package/dist/tests/prop-directory.test.d.ts +0 -2
- package/dist/tests/prop-directory.test.d.ts.map +0 -1
- package/dist/tests/prop-directory.test.js +0 -118
- package/dist/tests/prop-directory.test.js.map +0 -1
- package/dist/tests/prop-driver-conformance.test.d.ts +0 -2
- package/dist/tests/prop-driver-conformance.test.d.ts.map +0 -1
- package/dist/tests/prop-driver-conformance.test.js +0 -110
- package/dist/tests/prop-driver-conformance.test.js.map +0 -1
- package/dist/tests/prop-driver-equivalence.test.d.ts +0 -2
- package/dist/tests/prop-driver-equivalence.test.d.ts.map +0 -1
- package/dist/tests/prop-driver-equivalence.test.js +0 -163
- package/dist/tests/prop-driver-equivalence.test.js.map +0 -1
- package/dist/tests/prop-lifecycle.test.d.ts +0 -2
- package/dist/tests/prop-lifecycle.test.d.ts.map +0 -1
- package/dist/tests/prop-lifecycle.test.js +0 -83
- package/dist/tests/prop-lifecycle.test.js.map +0 -1
- package/dist/tests/prop-list.test.d.ts +0 -2
- package/dist/tests/prop-list.test.d.ts.map +0 -1
- package/dist/tests/prop-list.test.js +0 -53
- package/dist/tests/prop-list.test.js.map +0 -1
- package/dist/tests/prop-metadata.test.d.ts +0 -2
- package/dist/tests/prop-metadata.test.d.ts.map +0 -1
- package/dist/tests/prop-metadata.test.js +0 -87
- package/dist/tests/prop-metadata.test.js.map +0 -1
- package/dist/tests/prop-move.test.d.ts +0 -2
- package/dist/tests/prop-move.test.d.ts.map +0 -1
- package/dist/tests/prop-move.test.js +0 -67
- package/dist/tests/prop-move.test.js.map +0 -1
- package/dist/tests/prop-multipart-abort.test.d.ts +0 -2
- package/dist/tests/prop-multipart-abort.test.d.ts.map +0 -1
- package/dist/tests/prop-multipart-abort.test.js +0 -48
- package/dist/tests/prop-multipart-abort.test.js.map +0 -1
- package/dist/tests/prop-multipart.test.d.ts +0 -2
- package/dist/tests/prop-multipart.test.d.ts.map +0 -1
- package/dist/tests/prop-multipart.test.js +0 -65
- package/dist/tests/prop-multipart.test.js.map +0 -1
- package/dist/tests/prop-resumable.test.d.ts +0 -2
- package/dist/tests/prop-resumable.test.d.ts.map +0 -1
- package/dist/tests/prop-resumable.test.js +0 -78
- package/dist/tests/prop-resumable.test.js.map +0 -1
- package/dist/tests/prop-search.test.d.ts +0 -2
- package/dist/tests/prop-search.test.d.ts.map +0 -1
- package/dist/tests/prop-search.test.js +0 -120
- package/dist/tests/prop-search.test.js.map +0 -1
- package/dist/tests/prop-signed-url.test.d.ts +0 -2
- package/dist/tests/prop-signed-url.test.d.ts.map +0 -1
- package/dist/tests/prop-signed-url.test.js +0 -74
- package/dist/tests/prop-signed-url.test.js.map +0 -1
- package/dist/tests/prop-streaming.test.d.ts +0 -2
- package/dist/tests/prop-streaming.test.d.ts.map +0 -1
- package/dist/tests/prop-streaming.test.js +0 -34
- package/dist/tests/prop-streaming.test.js.map +0 -1
- package/dist/tests/prop-upload-download.test.d.ts +0 -2
- package/dist/tests/prop-upload-download.test.d.ts.map +0 -1
- package/dist/tests/prop-upload-download.test.js +0 -30
- package/dist/tests/prop-upload-download.test.js.map +0 -1
- package/dist/tests/prop-validation.test.d.ts +0 -2
- package/dist/tests/prop-validation.test.d.ts.map +0 -1
- package/dist/tests/prop-validation.test.js +0 -50
- package/dist/tests/prop-validation.test.js.map +0 -1
- package/dist/tests/prop-versioning.test.d.ts +0 -2
- package/dist/tests/prop-versioning.test.d.ts.map +0 -1
- package/dist/tests/prop-versioning.test.js +0 -74
- package/dist/tests/prop-versioning.test.js.map +0 -1
- package/dist/tests/queue-bridge.test.d.ts +0 -2
- package/dist/tests/queue-bridge.test.d.ts.map +0 -1
- package/dist/tests/queue-bridge.test.js +0 -111
- package/dist/tests/queue-bridge.test.js.map +0 -1
- package/dist/tests/r2-driver.test.d.ts +0 -2
- package/dist/tests/r2-driver.test.d.ts.map +0 -1
- package/dist/tests/r2-driver.test.js +0 -143
- package/dist/tests/r2-driver.test.js.map +0 -1
- package/dist/tests/realtime-bridge.test.d.ts +0 -2
- package/dist/tests/realtime-bridge.test.d.ts.map +0 -1
- package/dist/tests/realtime-bridge.test.js +0 -106
- package/dist/tests/realtime-bridge.test.js.map +0 -1
- package/dist/tests/resumable.test.d.ts +0 -2
- package/dist/tests/resumable.test.d.ts.map +0 -1
- package/dist/tests/resumable.test.js +0 -104
- package/dist/tests/resumable.test.js.map +0 -1
- package/dist/tests/s3-base.test.d.ts +0 -2
- package/dist/tests/s3-base.test.d.ts.map +0 -1
- package/dist/tests/s3-base.test.js +0 -289
- package/dist/tests/s3-base.test.js.map +0 -1
- package/dist/tests/s3-integration.test.d.ts +0 -2
- package/dist/tests/s3-integration.test.d.ts.map +0 -1
- package/dist/tests/s3-integration.test.js +0 -270
- package/dist/tests/s3-integration.test.js.map +0 -1
- package/dist/tests/s3.test.d.ts +0 -2
- package/dist/tests/s3.test.d.ts.map +0 -1
- package/dist/tests/s3.test.js +0 -203
- package/dist/tests/s3.test.js.map +0 -1
- package/dist/tests/scaffold.test.d.ts +0 -2
- package/dist/tests/scaffold.test.d.ts.map +0 -1
- package/dist/tests/scaffold.test.js +0 -13
- package/dist/tests/scaffold.test.js.map +0 -1
- package/dist/tests/search.test.d.ts +0 -2
- package/dist/tests/search.test.d.ts.map +0 -1
- package/dist/tests/search.test.js +0 -106
- package/dist/tests/search.test.js.map +0 -1
- package/dist/tests/supabase-driver.test.d.ts +0 -2
- package/dist/tests/supabase-driver.test.d.ts.map +0 -1
- package/dist/tests/supabase-driver.test.js +0 -196
- package/dist/tests/supabase-driver.test.js.map +0 -1
- package/dist/tests/testing-utilities.test.d.ts +0 -2
- package/dist/tests/testing-utilities.test.d.ts.map +0 -1
- package/dist/tests/testing-utilities.test.js +0 -138
- package/dist/tests/testing-utilities.test.js.map +0 -1
- package/dist/tests/validation.test.d.ts +0 -2
- package/dist/tests/validation.test.d.ts.map +0 -1
- package/dist/tests/validation.test.js +0 -135
- package/dist/tests/validation.test.js.map +0 -1
- package/dist/tests/versioning.test.d.ts +0 -2
- package/dist/tests/versioning.test.d.ts.map +0 -1
- package/dist/tests/versioning.test.js +0 -128
- package/dist/tests/versioning.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minio-driver.test.d.ts","sourceRoot":"","sources":["../../src/tests/minio-driver.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
// Unit tests for the MinIO driver submodule (task 28.4). MinIO speaks the S3 API
|
|
2
|
-
// against a self-hosted endpoint, so the driver is a thin specialization of the
|
|
3
|
-
// shared S3-style base. These tests exercise the injected-client path with an
|
|
4
|
-
// in-memory S3ClientLike double (no `minio` SDK, no external service), the
|
|
5
|
-
// StorageConfigError guard when no client is injected, and the shared driver
|
|
6
|
-
// contract-conformance suite.
|
|
7
|
-
//
|
|
8
|
-
// The SDK-building path (connectMinIODriver) uses a lazy dynamic import of the
|
|
9
|
-
// optional `minio` peer dependency; with the SDK absent it must throw
|
|
10
|
-
// StorageConfigError rather than a raw module-resolution error.
|
|
11
|
-
//
|
|
12
|
-
// Requirements: 2.1, 2.3, 3.3
|
|
13
|
-
import test from "node:test";
|
|
14
|
-
import assert from "node:assert/strict";
|
|
15
|
-
import { createMinIODriver, connectMinIODriver } from "../drivers/minio.js";
|
|
16
|
-
import { StorageConfigError } from "../errors.js";
|
|
17
|
-
import { registerStorageDriverContractTests } from "./contract.js";
|
|
18
|
-
const FIXED_NOW = 1_700_000_000_000;
|
|
19
|
-
const fixedClock = () => FIXED_NOW;
|
|
20
|
-
function bytes(str) {
|
|
21
|
-
return new TextEncoder().encode(str);
|
|
22
|
-
}
|
|
23
|
-
/** A minimal in-memory S3ClientLike double, mirroring the s3-base test fake. */
|
|
24
|
-
function makeFakeClient() {
|
|
25
|
-
const objects = new Map(); // key -> { body, contentType, metadata }
|
|
26
|
-
return {
|
|
27
|
-
async putObject({ key, body, contentType, metadata }) {
|
|
28
|
-
objects.set(key, {
|
|
29
|
-
body: body.slice(),
|
|
30
|
-
contentType,
|
|
31
|
-
metadata: metadata ? { ...metadata } : undefined,
|
|
32
|
-
});
|
|
33
|
-
return { etag: `"${key}-etag"` };
|
|
34
|
-
},
|
|
35
|
-
async getObject({ key }) {
|
|
36
|
-
const obj = objects.get(key);
|
|
37
|
-
if (obj === undefined)
|
|
38
|
-
return null;
|
|
39
|
-
return {
|
|
40
|
-
body: obj.body.slice(),
|
|
41
|
-
contentType: obj.contentType,
|
|
42
|
-
etag: `"${key}-etag"`,
|
|
43
|
-
size: obj.body.byteLength,
|
|
44
|
-
lastModified: FIXED_NOW,
|
|
45
|
-
metadata: obj.metadata,
|
|
46
|
-
};
|
|
47
|
-
},
|
|
48
|
-
async headObject({ key }) {
|
|
49
|
-
const obj = objects.get(key);
|
|
50
|
-
if (obj === undefined)
|
|
51
|
-
return null;
|
|
52
|
-
return {
|
|
53
|
-
contentType: obj.contentType,
|
|
54
|
-
etag: `"${key}-etag"`,
|
|
55
|
-
size: obj.body.byteLength,
|
|
56
|
-
lastModified: FIXED_NOW,
|
|
57
|
-
metadata: obj.metadata,
|
|
58
|
-
};
|
|
59
|
-
},
|
|
60
|
-
async deleteObject({ key }) {
|
|
61
|
-
objects.delete(key);
|
|
62
|
-
},
|
|
63
|
-
async listObjects({ prefix }) {
|
|
64
|
-
return [...objects.entries()]
|
|
65
|
-
.filter(([key]) => key.startsWith(prefix))
|
|
66
|
-
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
67
|
-
.map(([key, obj]) => ({ key, size: obj.body.byteLength, updatedAt: FIXED_NOW }));
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function makeDriver() {
|
|
72
|
-
return createMinIODriver(makeFakeClient(), { clock: fixedClock });
|
|
73
|
-
}
|
|
74
|
-
// ── name / specialization ───────────────────────────────────────────────────
|
|
75
|
-
test("driver name is fixed to minio", () => {
|
|
76
|
-
assert.equal(makeDriver().name, "minio");
|
|
77
|
-
});
|
|
78
|
-
test("name is not overridable through options", () => {
|
|
79
|
-
// MinIODriverOptions omits `name`; even a stray value must not change it.
|
|
80
|
-
const strayOptions = { clock: fixedClock, name: "s3" };
|
|
81
|
-
const driver = createMinIODriver(makeFakeClient(), strayOptions);
|
|
82
|
-
assert.equal(driver.name, "minio");
|
|
83
|
-
});
|
|
84
|
-
// ── injected-client primitives round-trip via the base ───────────────────────
|
|
85
|
-
test("put/get round-trips bytes and typed metadata over the injected client", async () => {
|
|
86
|
-
const driver = makeDriver();
|
|
87
|
-
const content = bytes("minio object payload");
|
|
88
|
-
await driver.put("bucketed/key.txt", content, {
|
|
89
|
-
contentType: "text/plain",
|
|
90
|
-
owner: "user-9",
|
|
91
|
-
tenant: "tenant-z",
|
|
92
|
-
accessLevel: "public",
|
|
93
|
-
custom: { label: "report" },
|
|
94
|
-
});
|
|
95
|
-
const result = await driver.get("bucketed/key.txt");
|
|
96
|
-
assert.equal(result.found, true);
|
|
97
|
-
assert.deepEqual(result.bytes, content);
|
|
98
|
-
assert.equal(result.metadata.contentType, "text/plain");
|
|
99
|
-
assert.equal(result.metadata.owner, "user-9");
|
|
100
|
-
assert.equal(result.metadata.tenant, "tenant-z");
|
|
101
|
-
assert.equal(result.metadata.accessLevel, "public");
|
|
102
|
-
assert.deepEqual(result.metadata.custom, { label: "report" });
|
|
103
|
-
});
|
|
104
|
-
test("exists/delete/stat/list behave consistently", async () => {
|
|
105
|
-
const driver = makeDriver();
|
|
106
|
-
await driver.put("d/a.txt", bytes("a"), {});
|
|
107
|
-
await driver.put("d/b.txt", bytes("bb"), {});
|
|
108
|
-
assert.equal(await driver.exists("d/a.txt"), true);
|
|
109
|
-
assert.equal(await driver.exists("d/missing.txt"), false);
|
|
110
|
-
const stat = await driver.stat("d/b.txt");
|
|
111
|
-
assert.ok(stat);
|
|
112
|
-
assert.equal(stat.size, 2);
|
|
113
|
-
assert.equal(await driver.stat("d/missing.txt"), null);
|
|
114
|
-
const items = await driver.list("d/");
|
|
115
|
-
assert.deepEqual(items.map((i) => i.key), ["d/a.txt", "d/b.txt"]);
|
|
116
|
-
await driver.delete("d/a.txt");
|
|
117
|
-
assert.equal(await driver.exists("d/a.txt"), false);
|
|
118
|
-
});
|
|
119
|
-
test("get on a missing key reports found:false", async () => {
|
|
120
|
-
const driver = makeDriver();
|
|
121
|
-
const result = await driver.get("nope");
|
|
122
|
-
assert.equal(result.found, false);
|
|
123
|
-
});
|
|
124
|
-
// ── configuration guards ──────────────────────────────────────────────────────
|
|
125
|
-
test("createMinIODriver throws StorageConfigError when no client is injected", () => {
|
|
126
|
-
assert.throws(() => createMinIODriver(undefined), (err) => {
|
|
127
|
-
assert.ok(err instanceof StorageConfigError);
|
|
128
|
-
assert.equal(err.provider, "minio");
|
|
129
|
-
return true;
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
test("connectMinIODriver throws StorageConfigError when the minio SDK is absent", async () => {
|
|
133
|
-
await assert.rejects(() => connectMinIODriver({
|
|
134
|
-
bucket: "b",
|
|
135
|
-
endPoint: "127.0.0.1",
|
|
136
|
-
accessKey: "ak",
|
|
137
|
-
secretKey: "sk",
|
|
138
|
-
}), (err) => {
|
|
139
|
-
assert.ok(err instanceof StorageConfigError);
|
|
140
|
-
assert.equal(err.provider, "minio");
|
|
141
|
-
return true;
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
// ── shared contract-conformance suite ─────────────────────────────────────────
|
|
145
|
-
registerStorageDriverContractTests("minio", () => createMinIODriver(makeFakeClient(), { clock: fixedClock }), test);
|
|
146
|
-
//# sourceMappingURL=minio-driver.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minio-driver.test.js","sourceRoot":"","sources":["../../src/tests/minio-driver.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"non-s3-integration.test.d.ts","sourceRoot":"","sources":["../../src/tests/non-s3-integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
// Integration tests for the non-S3 cloud drivers — Supabase, Google Cloud
|
|
2
|
-
// Storage, and Azure Blob — with **honest credential-based skipping**
|
|
3
|
-
// (task 29.4). These mirror the honest-skip policy of the S3-compatible
|
|
4
|
-
// integration tests (task 28.6): a live provider is only exercised when that
|
|
5
|
-
// provider's credentials are present in the environment, and the suite never
|
|
6
|
-
// fabricates provider success.
|
|
7
|
-
//
|
|
8
|
-
// ## Honest-skip policy (Requirement 27.2–27.5)
|
|
9
|
-
//
|
|
10
|
-
// Per provider, credential presence is detected from environment variables and
|
|
11
|
-
// classified into one of three states, each mapped to an honest node:test
|
|
12
|
-
// outcome:
|
|
13
|
-
//
|
|
14
|
-
// • absent (no provider env vars set) — the test is declared with node:test's
|
|
15
|
-
// `test(name, { skip: reason }, ...)` option, so its body never runs and it
|
|
16
|
-
// is reported as **skipped, never as passed** (Requirement 27.3). This is the
|
|
17
|
-
// default state in CI/local runs with no cloud credentials, so the file loads
|
|
18
|
-
// and `node --test dist/tests/*.test.js` stays green.
|
|
19
|
-
//
|
|
20
|
-
// • present (all provider env vars set) — the test runs against the live
|
|
21
|
-
// provider (Requirement 27.2). If the driver cannot be constructed for
|
|
22
|
-
// another reason — most commonly the optional provider SDK is not installed —
|
|
23
|
-
// the driver's connector throws a StorageConfigError; that is caught and the
|
|
24
|
-
// test returns normally after emitting a clear diagnostic, i.e. it is
|
|
25
|
-
// **reported as passed with a skip message** (Requirement 27.4). Any other
|
|
26
|
-
// unexpected construction error, or a failed assertion during the live
|
|
27
|
-
// round-trip, propagates and **fails the build** (Requirement 27.5).
|
|
28
|
-
//
|
|
29
|
-
// • misconfigured (some but not all of a provider's env vars set) — the test
|
|
30
|
-
// runner is misconfigured; the test **fails the build** with a message naming
|
|
31
|
-
// the present and missing variables (Requirement 27.5).
|
|
32
|
-
//
|
|
33
|
-
// ## No provider SDKs at import time (guard/lazy)
|
|
34
|
-
//
|
|
35
|
-
// This file imports only the drivers' connector functions. Each connector
|
|
36
|
-
// (`connectSupabaseStorageDriver`, `connectGoogleCloudStorageDriver`,
|
|
37
|
-
// `connectAzureBlobDriver`) resolves its optional provider SDK through a lazy
|
|
38
|
-
// dynamic `import()` performed inside the function — never at module top level —
|
|
39
|
-
// so loading this test file requires no `@supabase/supabase-js`,
|
|
40
|
-
// `@google-cloud/storage`, or `@azure/storage-blob` install. With no credentials
|
|
41
|
-
// present the whole file simply registers skipped tests and stays green.
|
|
42
|
-
//
|
|
43
|
-
// Requirements: 27.2, 27.3, 27.4, 27.5
|
|
44
|
-
import test from "node:test";
|
|
45
|
-
import assert from "node:assert/strict";
|
|
46
|
-
import { Buffer } from "node:buffer";
|
|
47
|
-
import { connectSupabaseStorageDriver } from "../drivers/supabase.js";
|
|
48
|
-
import { connectGoogleCloudStorageDriver } from "../drivers/gcs.js";
|
|
49
|
-
import { connectAzureBlobDriver } from "../drivers/azure.js";
|
|
50
|
-
import { StorageConfigError } from "../errors.js";
|
|
51
|
-
// ── Credential detection ──────────────────────────────────────────────────────
|
|
52
|
-
/**
|
|
53
|
-
* Classify the presence of a provider's credential environment variables.
|
|
54
|
-
*
|
|
55
|
-
* @param {readonly string[]} vars The env var names the provider requires.
|
|
56
|
-
* @returns {{ state: "absent" | "present" | "misconfigured", present: string[], missing: string[] }}
|
|
57
|
-
*/
|
|
58
|
-
function classifyCredentials(vars) {
|
|
59
|
-
const present = vars.filter((name) => {
|
|
60
|
-
const value = process.env[name];
|
|
61
|
-
return typeof value === "string" && value.trim() !== "";
|
|
62
|
-
});
|
|
63
|
-
const missing = vars.filter((name) => !present.includes(name));
|
|
64
|
-
if (present.length === 0) {
|
|
65
|
-
return { state: "absent", present, missing };
|
|
66
|
-
}
|
|
67
|
-
if (missing.length === 0) {
|
|
68
|
-
return { state: "present", present, missing };
|
|
69
|
-
}
|
|
70
|
-
return { state: "misconfigured", present, missing };
|
|
71
|
-
}
|
|
72
|
-
// ── Shared live round-trip exercise ────────────────────────────────────────────
|
|
73
|
-
/**
|
|
74
|
-
* Exercise the mandatory StorageDriver primitives against a live provider
|
|
75
|
-
* driver: put → exists → get (byte + metadata fidelity) → stat → list → delete.
|
|
76
|
-
* Uses a unique, namespaced key and always attempts cleanup. Assertion failures
|
|
77
|
-
* here propagate to fail the build (Requirement 27.5) — a live provider with
|
|
78
|
-
* valid credentials and an installed SDK is expected to succeed (Requirement
|
|
79
|
-
* 27.2).
|
|
80
|
-
*
|
|
81
|
-
* @param {string} provider The provider name (for key namespacing / messages).
|
|
82
|
-
* @param {import("../driver.js").StorageDriver} driver The connected driver.
|
|
83
|
-
*/
|
|
84
|
-
async function exerciseLiveRoundTrip(provider, driver) {
|
|
85
|
-
const unique = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
86
|
-
const prefix = `streetjs-integration/${provider}/`;
|
|
87
|
-
const key = `${prefix}${unique}.bin`;
|
|
88
|
-
const content = Buffer.from(`streetjs ${provider} integration payload ${unique}`);
|
|
89
|
-
try {
|
|
90
|
-
const written = await driver.put(key, new Uint8Array(content), {
|
|
91
|
-
contentType: "text/plain",
|
|
92
|
-
owner: "integration-suite",
|
|
93
|
-
custom: { suite: "29.4", provider },
|
|
94
|
-
});
|
|
95
|
-
assert.equal(written.key, key, "put should return metadata for the written key");
|
|
96
|
-
assert.equal(written.size, content.byteLength, "put should report the written byte length");
|
|
97
|
-
assert.equal(await driver.exists(key), true, "written object should exist");
|
|
98
|
-
const got = await driver.get(key);
|
|
99
|
-
assert.equal(got.found, true, "get should find the written object");
|
|
100
|
-
assert.deepEqual(Buffer.from(got.bytes), content, "get should return the exact written bytes");
|
|
101
|
-
assert.equal(got.metadata.contentType, "text/plain", "content type should round-trip");
|
|
102
|
-
const stat = await driver.stat(key);
|
|
103
|
-
assert.ok(stat !== null, "stat should return metadata for an existing object");
|
|
104
|
-
assert.equal(stat.size, content.byteLength, "stat size should match the written bytes");
|
|
105
|
-
const listed = await driver.list(prefix);
|
|
106
|
-
assert.ok(listed.some((item) => item.key === key), "list should include the written key under its prefix");
|
|
107
|
-
}
|
|
108
|
-
finally {
|
|
109
|
-
// Best-effort cleanup so repeated runs do not accumulate objects.
|
|
110
|
-
await driver.delete(key).catch(() => { });
|
|
111
|
-
}
|
|
112
|
-
assert.equal(await driver.exists(key), false, "deleted object should no longer exist");
|
|
113
|
-
}
|
|
114
|
-
// ── Per-provider honest-skip registration ──────────────────────────────────────
|
|
115
|
-
/**
|
|
116
|
-
* Register a single honest-skip integration test for a cloud provider.
|
|
117
|
-
*
|
|
118
|
-
* @param {object} spec
|
|
119
|
-
* @param {string} spec.provider Provider name used in the test title / messages.
|
|
120
|
-
* @param {readonly string[]} spec.envVars The env vars this provider requires.
|
|
121
|
-
* @param {() => Promise<import("../driver.js").StorageDriver>} spec.connect
|
|
122
|
-
* Builds the live driver from the environment (resolves its SDK lazily).
|
|
123
|
-
*/
|
|
124
|
-
function registerCloudIntegration({ provider, envVars, connect }) {
|
|
125
|
-
const title = `[integration] ${provider} driver live round-trip`;
|
|
126
|
-
const cred = classifyCredentials(envVars);
|
|
127
|
-
if (cred.state === "absent") {
|
|
128
|
-
// Requirement 27.3: no credentials → skip with a clear message, never passed.
|
|
129
|
-
test(title, {
|
|
130
|
-
skip: `No ${provider} credentials present (expected env: ${envVars.join(", ")}). ` +
|
|
131
|
-
`Skipping live integration — this is reported as skipped, not passed.`,
|
|
132
|
-
}, () => { });
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (cred.state === "misconfigured") {
|
|
136
|
-
// Requirement 27.5: partial credentials means the runner is misconfigured →
|
|
137
|
-
// fail the build rather than silently half-running.
|
|
138
|
-
test(title, () => {
|
|
139
|
-
assert.fail(`${provider} integration is misconfigured: set ALL of [${envVars.join(", ")}] ` +
|
|
140
|
-
`or NONE. Present: [${cred.present.join(", ")}]; missing: [${cred.missing.join(", ")}].`);
|
|
141
|
-
});
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
// Requirement 27.2 / 27.4: credentials present → attempt the live round-trip.
|
|
145
|
-
test(title, async (t) => {
|
|
146
|
-
let driver;
|
|
147
|
-
try {
|
|
148
|
-
driver = await connect();
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
if (error instanceof StorageConfigError) {
|
|
152
|
-
// Requirement 27.4: credentials present but the test cannot run for
|
|
153
|
-
// another reason (typically the optional provider SDK is not installed).
|
|
154
|
-
// Report as passed with a clear skip message.
|
|
155
|
-
t.diagnostic(`${provider} credentials are present but the live integration cannot run: ` +
|
|
156
|
-
`${error.message} Reporting as passed-with-skip (Requirement 27.4).`);
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
// Requirement 27.5: any other construction failure is a real error and
|
|
160
|
-
// must fail the build.
|
|
161
|
-
throw error;
|
|
162
|
-
}
|
|
163
|
-
await exerciseLiveRoundTrip(provider, driver);
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
// ── Sanity: connectors import without any provider SDK ──────────────────────────
|
|
167
|
-
test("[integration] non-S3 cloud connectors import without provider SDKs", () => {
|
|
168
|
-
// Proves the file loads cleanly (no top-level SDK import) so the suite stays
|
|
169
|
-
// green when no cloud credentials are configured.
|
|
170
|
-
assert.equal(typeof connectSupabaseStorageDriver, "function");
|
|
171
|
-
assert.equal(typeof connectGoogleCloudStorageDriver, "function");
|
|
172
|
-
assert.equal(typeof connectAzureBlobDriver, "function");
|
|
173
|
-
});
|
|
174
|
-
// ── Provider registrations ──────────────────────────────────────────────────────
|
|
175
|
-
registerCloudIntegration({
|
|
176
|
-
provider: "supabase",
|
|
177
|
-
envVars: ["SUPABASE_URL", "SUPABASE_KEY", "SUPABASE_BUCKET"],
|
|
178
|
-
connect: () => connectSupabaseStorageDriver({
|
|
179
|
-
url: process.env.SUPABASE_URL,
|
|
180
|
-
key: process.env.SUPABASE_KEY,
|
|
181
|
-
bucket: process.env.SUPABASE_BUCKET,
|
|
182
|
-
}),
|
|
183
|
-
});
|
|
184
|
-
registerCloudIntegration({
|
|
185
|
-
provider: "gcs",
|
|
186
|
-
envVars: ["GCS_BUCKET", "GCS_PROJECT_ID", "GOOGLE_APPLICATION_CREDENTIALS"],
|
|
187
|
-
connect: () => connectGoogleCloudStorageDriver({
|
|
188
|
-
bucket: process.env.GCS_BUCKET,
|
|
189
|
-
projectId: process.env.GCS_PROJECT_ID,
|
|
190
|
-
keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,
|
|
191
|
-
}),
|
|
192
|
-
});
|
|
193
|
-
registerCloudIntegration({
|
|
194
|
-
provider: "azure",
|
|
195
|
-
envVars: ["AZURE_STORAGE_CONNECTION_STRING", "AZURE_STORAGE_CONTAINER"],
|
|
196
|
-
connect: () => connectAzureBlobDriver({
|
|
197
|
-
container: process.env.AZURE_STORAGE_CONTAINER,
|
|
198
|
-
connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
|
|
199
|
-
}),
|
|
200
|
-
});
|
|
201
|
-
//# sourceMappingURL=non-s3-integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"non-s3-integration.test.js","sourceRoot":"","sources":["../../src/tests/non-s3-integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observability.registration.test.d.ts","sourceRoot":"","sources":["../../src/tests/observability.registration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
// Focused unit tests for storage metrics/health *registration* (task 22.2).
|
|
2
|
-
//
|
|
3
|
-
// Complements observability.test.js (task 22.1) — which covers live stat
|
|
4
|
-
// tracking, metric kinds, and health up/down — by asserting the registration
|
|
5
|
-
// contract explicitly:
|
|
6
|
-
//
|
|
7
|
-
// 1. Idempotent registration: calling registerStorageObservability twice
|
|
8
|
-
// against the SAME MetricsRegistry does not throw and REUSES the existing
|
|
9
|
-
// metrics rather than registering duplicates (Req 23.1).
|
|
10
|
-
// 2. Every one of the ten required metrics is registered: uploads, downloads,
|
|
11
|
-
// bytes uploaded, bytes downloaded, active uploads, failed uploads,
|
|
12
|
-
// storage usage, latency, multipart uploads, resumable sessions (Req 23.2).
|
|
13
|
-
// 3. The provider health check is registered against the existing
|
|
14
|
-
// HealthCheckRegistry as the single `storage` check sourced from probe(),
|
|
15
|
-
// surfacing connectivity / writability / readability / quota (Req 23.3).
|
|
16
|
-
//
|
|
17
|
-
// Uses the Node.js built-in test runner (node:test); executed via
|
|
18
|
-
// `node --test dist/tests/*.test.js`.
|
|
19
|
-
//
|
|
20
|
-
// Requirements: 23.1, 23.2, 23.3
|
|
21
|
-
import test from "node:test";
|
|
22
|
-
import assert from "node:assert/strict";
|
|
23
|
-
import { HealthCheckRegistry, MetricsRegistry } from "streetjs";
|
|
24
|
-
import { createStorage, registerStorageObservability, STORAGE_HEALTH_CHECK_NAME, STORAGE_UPLOADS_METRIC, STORAGE_DOWNLOADS_METRIC, STORAGE_BYTES_UPLOADED_METRIC, STORAGE_BYTES_DOWNLOADED_METRIC, STORAGE_ACTIVE_UPLOADS_METRIC, STORAGE_FAILED_UPLOADS_METRIC, STORAGE_USAGE_METRIC, STORAGE_LATENCY_METRIC, STORAGE_MULTIPART_METRIC, STORAGE_RESUMABLE_METRIC, } from "../index.js";
|
|
25
|
-
// The ten metrics Requirement 23.2 mandates, keyed by their exported name
|
|
26
|
-
// constant so a missing/renamed constant fails the test at import time.
|
|
27
|
-
const REQUIRED_METRICS = [
|
|
28
|
-
STORAGE_UPLOADS_METRIC,
|
|
29
|
-
STORAGE_DOWNLOADS_METRIC,
|
|
30
|
-
STORAGE_BYTES_UPLOADED_METRIC,
|
|
31
|
-
STORAGE_BYTES_DOWNLOADED_METRIC,
|
|
32
|
-
STORAGE_ACTIVE_UPLOADS_METRIC,
|
|
33
|
-
STORAGE_FAILED_UPLOADS_METRIC,
|
|
34
|
-
STORAGE_USAGE_METRIC,
|
|
35
|
-
STORAGE_LATENCY_METRIC,
|
|
36
|
-
STORAGE_MULTIPART_METRIC,
|
|
37
|
-
STORAGE_RESUMABLE_METRIC,
|
|
38
|
-
];
|
|
39
|
-
test("every one of the ten required metrics is registered by name (Req 23.2)", () => {
|
|
40
|
-
const metrics = new MetricsRegistry();
|
|
41
|
-
registerStorageObservability({ metrics });
|
|
42
|
-
// Each mandated metric is present individually...
|
|
43
|
-
for (const name of REQUIRED_METRICS) {
|
|
44
|
-
assert.ok(metrics.has(name), `expected metric '${name}' to be registered`);
|
|
45
|
-
}
|
|
46
|
-
// ...and the ten names are exactly what a fresh registry now holds (no
|
|
47
|
-
// required metric is silently missing).
|
|
48
|
-
const registered = new Set(metrics.names());
|
|
49
|
-
for (const name of REQUIRED_METRICS) {
|
|
50
|
-
assert.ok(registered.has(name), `names() is missing '${name}'`);
|
|
51
|
-
}
|
|
52
|
-
assert.equal(REQUIRED_METRICS.length, 10);
|
|
53
|
-
});
|
|
54
|
-
test("repeat registration against the same registry does not throw and adds no duplicates (Req 23.1)", () => {
|
|
55
|
-
const metrics = new MetricsRegistry();
|
|
56
|
-
registerStorageObservability({ metrics });
|
|
57
|
-
const afterFirst = metrics.names().slice().sort();
|
|
58
|
-
// A second registration against the SAME registry must not throw...
|
|
59
|
-
assert.doesNotThrow(() => registerStorageObservability({ metrics }));
|
|
60
|
-
// ...and must not register duplicate metrics — the registry's name set is
|
|
61
|
-
// unchanged after the second call.
|
|
62
|
-
const afterSecond = metrics.names().slice().sort();
|
|
63
|
-
assert.deepEqual(afterSecond, afterFirst);
|
|
64
|
-
assert.equal(afterSecond.length, REQUIRED_METRICS.length);
|
|
65
|
-
});
|
|
66
|
-
test("repeat registration reuses the existing metric instances (Req 23.1)", () => {
|
|
67
|
-
const metrics = new MetricsRegistry();
|
|
68
|
-
registerStorageObservability({ metrics });
|
|
69
|
-
const firstInstances = REQUIRED_METRICS.map((name) => metrics.get(name));
|
|
70
|
-
registerStorageObservability({ metrics });
|
|
71
|
-
const secondInstances = REQUIRED_METRICS.map((name) => metrics.get(name));
|
|
72
|
-
// Same object identity per name — the second registration reused rather than
|
|
73
|
-
// replaced each metric.
|
|
74
|
-
for (let i = 0; i < REQUIRED_METRICS.length; i++) {
|
|
75
|
-
assert.strictEqual(secondInstances[i], firstInstances[i], `metric '${REQUIRED_METRICS[i]}' was replaced instead of reused`);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
test("attach registers the single 'storage' health check sourced from probe() covering all four dimensions (Req 23.3)", async () => {
|
|
79
|
-
const health = new HealthCheckRegistry();
|
|
80
|
-
const handle = registerStorageObservability({ health });
|
|
81
|
-
// Before attach, no storage check exists.
|
|
82
|
-
let live = await health.runLiveness();
|
|
83
|
-
assert.ok(!(STORAGE_HEALTH_CHECK_NAME in live.checks));
|
|
84
|
-
const storage = createStorage({ provider: "memory" });
|
|
85
|
-
handle.attach(storage);
|
|
86
|
-
live = await health.runLiveness();
|
|
87
|
-
assert.ok(STORAGE_HEALTH_CHECK_NAME in live.checks, "expected the 'storage' health check to be registered");
|
|
88
|
-
const check = live.checks[STORAGE_HEALTH_CHECK_NAME];
|
|
89
|
-
// The single check surfaces every probe dimension Req 23.3 requires.
|
|
90
|
-
assert.ok("connectivity" in check.details);
|
|
91
|
-
assert.ok("writable" in check.details);
|
|
92
|
-
assert.ok("readable" in check.details);
|
|
93
|
-
assert.ok("quotaAvailable" in check.details);
|
|
94
|
-
handle.close();
|
|
95
|
-
await storage.close();
|
|
96
|
-
});
|
|
97
|
-
test("with no metrics registry, registration registers nothing and never throws (Req 23.1)", () => {
|
|
98
|
-
const metrics = new MetricsRegistry();
|
|
99
|
-
// A handle created without a metrics registry must not touch the registry.
|
|
100
|
-
assert.doesNotThrow(() => registerStorageObservability({}));
|
|
101
|
-
assert.equal(metrics.names().length, 0);
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=observability.registration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observability.registration.test.js","sourceRoot":"","sources":["../../src/tests/observability.registration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observability.test.d.ts","sourceRoot":"","sources":["../../src/tests/observability.test.ts"],"names":[],"mappings":""}
|