mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-14 15:24:52 +09:00
fix: prevent restart downgrades (#951)
Co-authored-by: Loi Nguyen <1948922+lntutor@users.noreply.github.com>
This commit is contained in:
1 parent
9ff090c30b
commit
08651b5917
7 files changed
+189
-1
No files matched your search
@@ -0,0 +1,42 @@
|
||||
"use strict";
|
||||
const assert = require("assert").strict;
|
||||
const { ControlConnection } = require("@clusterio/controller");
|
||||
|
||||
describe("controller/src/ControlConnection", function() {
|
||||
describe(".handleControllerRestartRequest()", function() {
|
||||
let mockController;
|
||||
|
||||
beforeEach(function() {
|
||||
mockController = {
|
||||
canRestart: true,
|
||||
shouldRestart: false,
|
||||
stopped: false,
|
||||
async checkRestartDowngrade() { return null; },
|
||||
stop() { this.stopped = true; },
|
||||
};
|
||||
});
|
||||
|
||||
async function restart() {
|
||||
await ControlConnection.prototype.handleControllerRestartRequest.call({
|
||||
_controller: mockController,
|
||||
});
|
||||
}
|
||||
|
||||
it("restarts when the installed version is not older", async function() {
|
||||
await restart();
|
||||
assert.equal(mockController.shouldRestart, true);
|
||||
assert.equal(mockController.stopped, true);
|
||||
});
|
||||
|
||||
it("rejects a downgrade without stopping the controller", async function() {
|
||||
mockController.checkRestartDowngrade = async () => ({
|
||||
installedVersion: "1.0.0",
|
||||
runningVersion: "2.0.0",
|
||||
});
|
||||
|
||||
await assert.rejects(restart, /Stop the controller before starting the older version manually/);
|
||||
assert.equal(mockController.shouldRestart, false);
|
||||
assert.equal(mockController.stopped, false);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user