fix model del & rename
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
const assert = require("node:assert/strict");
|
||||
const fs = require("node:fs");
|
||||
const os = require("node:os");
|
||||
const path = require("node:path");
|
||||
const test = require("node:test");
|
||||
const { createModelHandlers } = require("../model-handlers");
|
||||
const { callServer } = require("../server-client");
|
||||
const { createApp } = require("../../server/src/app");
|
||||
const { JsonStore } = require("../../server/src/store");
|
||||
|
||||
test("panel model kernel renames, overwrites, lists both names, and deletes on the server", async (context) => {
|
||||
const dataDirectory = await fs.promises.mkdtemp(path.join(os.tmpdir(), "reinloop-panel-server-"));
|
||||
const store = new JsonStore(dataDirectory);
|
||||
await store.initialize();
|
||||
const app = createApp({ store, adminToken: "test-token" });
|
||||
const server = await new Promise((resolve) => {
|
||||
const listeningServer = app.listen(0, "127.0.0.1", () => resolve(listeningServer));
|
||||
});
|
||||
context.after(async () => {
|
||||
await new Promise((resolve, reject) => server.close((error) => error ? reject(error) : resolve()));
|
||||
await fs.promises.rm(dataDirectory, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
const credentials = {
|
||||
apiUrl: `http://127.0.0.1:${server.address().port}/api`,
|
||||
adminToken: "test-token"
|
||||
};
|
||||
const handlers = createModelHandlers({ callServer });
|
||||
const sourcePath = path.join(dataDirectory, "controller-original.bin");
|
||||
const request = {
|
||||
deviceId: "company-a/line-1",
|
||||
sourcePath,
|
||||
fileName: "controller-original.bin",
|
||||
modelName: "pressure-controller.bin",
|
||||
credentials
|
||||
};
|
||||
|
||||
await fs.promises.writeFile(sourcePath, "first-version");
|
||||
const uploaded = await handlers.upload(request);
|
||||
assert.equal(uploaded.fileName, "pressure-controller.bin");
|
||||
assert.equal(uploaded.originalFileName, "controller-original.bin");
|
||||
|
||||
await fs.promises.writeFile(sourcePath, "second-version");
|
||||
const overwritten = await handlers.upload({ ...request, overwrite: true });
|
||||
assert.equal(overwritten.fileID, uploaded.fileID);
|
||||
|
||||
const listed = await handlers.list({ deviceId: request.deviceId, credentials });
|
||||
assert.equal(listed.fileList.length, 1);
|
||||
assert.equal(listed.fileList[0].fileName, "pressure-controller.bin");
|
||||
assert.equal(listed.fileList[0].originalFileName, "controller-original.bin");
|
||||
|
||||
const deleted = await handlers.delete({ fileID: overwritten.fileID, credentials });
|
||||
assert.equal(deleted.deletedCount, 1);
|
||||
const afterDelete = await handlers.list({ deviceId: request.deviceId, credentials });
|
||||
assert.deepEqual(afterDelete.fileList, []);
|
||||
await assert.rejects(fs.promises.access(
|
||||
path.join(dataDirectory, "models", "company-a", "line-1", "pressure-controller.bin")
|
||||
), { code: "ENOENT" });
|
||||
});
|
||||
Reference in New Issue
Block a user