CH-J Toolsserverio valdymas per SSH
Meniu
Paskelbtas šaltinis

CH-J Tools

Naršyti aplankus ir failus konkrečiai programai išleisti.

Atsisiųsti šaltinį ZIP
CH-J / Server Manager 406 failai
core-20261024T135205Z-7c487d719de2 Pridėta: · Pastatytas:
updateService.test.js Pridėta: Data neregistruota 3,9 KB · 101 eilutės
Kodas Atsiųsti failą
1"use strict";
3const test = require("node:test");
4const assert = require("node:assert/strict");
5const { UpdateService } = require("../src/main/updates/updateService");
7function release(id, publishedAt) {
8 return {
9 id,
10 version: "0.0.1",
11 publishedAt,
12 filename: `${id}.dmg`,
13 size: 10,
14 sha512: "a".repeat(128)
15 };
18test("service exposes and selects distinct builds with the installed version", async () => {
19 const older = release("build-older", "2026-08-07T15:00:00Z");
20 const newer = release("build-newer", "2026-08-07T16:00:00Z");
21 const provider = {
22 async listReleases() { return { releases: [newer, older], sourceBaseUrl: "https://192.168.10.154/" }; },
23 async downloadAndVerify(selected) {
24 return {
25 path: `/tmp/${selected.filename}`,
26 signaturePath: `/tmp/${selected.filename}.asc`,
27 filename: selected.filename,
28 size: selected.size,
29 sha512: selected.sha512,
30 reused: false,
31 signatureVerified: true,
32 primaryFingerprint: "0".repeat(40),
33 signingFingerprints: ["1".repeat(40)]
34 };
35 }
36 };
37 const service = new UpdateService({
38 appVersion: "0.0.1",
39 platform: "darwin",
40 arch: "arm64",
41 configStore: { get: () => ({ updates: { channel: "alpha", lastLaunchedRelease: null } }) },
42 providerFactory: () => provider
43 });
45 assert.equal(service.getState().checked, false);
46 const checked = await service.check();
47 assert.equal(checked.status, "idle", "the result is reported after the check finished");
48 assert.equal(checked.checked, true);
49 assert.equal(checked.releases.length, 2);
50 assert.equal(checked.selectedReleaseId, "build-newer");
51 assert.equal(checked.releaseRelation, "sameVersionNewerRelease");
53 const selected = service.select("build-older");
54 assert.equal(selected.selectedReleaseId, "build-older");
55 assert.equal(selected.releaseRelation, "sameVersionOlderRelease");
56 const downloaded = await service.download();
57 assert.equal(downloaded.status, "idle");
58 assert.equal(downloaded.downloaded.releaseId, "build-older");
59 assert.throws(() => service.select("missing"), /not available/);
60});
62test("service compares same-version releases with the last launched installer by publication time", async () => {
63 const current = release("build-current", "2026-08-07T15:00:00Z");
64 const newer = release("build-newer", "2026-08-07T16:00:00Z");
65 const older = release("build-older", "2026-08-07T14:00:00Z");
66 newer.sha512 = "b".repeat(128);
67 older.sha512 = "c".repeat(128);
68 const config = { updates: { channel: "alpha", lastLaunchedRelease: current } };
69 const service = new UpdateService({
70 appVersion: "0.0.1",
71 platform: "darwin",
72 arch: "arm64",
73 configStore: { get: () => config },
74 providerFactory: () => ({
75 async listReleases() { return { releases: [newer, current, older], sourceBaseUrl: "https://192.168.10.154/" }; }
76 })
77 });
79 assert.equal((await service.check()).releaseRelation, "sameVersionNewerRelease");
80 assert.equal(service.select("build-current").releaseRelation, "sameVersionCurrentRelease");
81 assert.equal(service.select("build-older").releaseRelation, "sameVersionOlderRelease");
82});
84test("embedded build identity marks the exact repository release as current", async () => {
85 const current = { ...release("repository-release", "2026-08-08T15:35:00Z"), buildId: "core-20260808T153400Z-a1b2c3d4e5f6" };
86 const service = new UpdateService({
87 appVersion: "0.0.1",
88 buildId: current.buildId,
89 platform: "darwin",
90 arch: "arm64",
91 configStore: { get: () => ({ updates: { channel: "alpha", lastLaunchedRelease: null } }) },
92 providerFactory: () => ({
93 async listReleases() { return { releases: [current], sourceBaseUrl: "https://192.168.10.154/" }; }
94 })
95 });
97 const state = await service.check();
98 assert.equal(state.releaseRelation, "sameVersionCurrentRelease");
99 assert.equal(state.updateAvailable, false);
100 assert.equal(state.currentBuildId, current.buildId);
101});
SHA-256580600f772c7c7e0c2893a9c57302549d6851bf2bbde45cb17b29754f781d6e8

CH-J Proprietary Software License 1.14 · Šaltinis pateiktas pagal CH-J Proprietary Software License 1.14. Jo prieinamumas nekeičia licencijos sąlygų ir nesuteikia papildomų teisių.

Archyvas SHA-256476ed8aef0f1e96a5acdf223127b6692acdf4492eeaf5d0816b6e2a634fbbda6
Failai