منبع منتشرشده
دانلود ZIP منبع
CH-J Tools
پوشهها و فایلهای یک نسخهٔ مشخص از برنامه را مرور کنید.
CH-J / Server Manager
406 فایل
core-20261024T135205Z-7c487d719de2
افزودهشده: · ساختهشده:
1
"use strict";3
const test = require("node:test");4
const assert = require("node:assert/strict");5
const { UpdateService } = require("../src/main/updates/updateService");7
function 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
};16
}18
test("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: () => provider43
});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
});62
test("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
});84
test("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-256
580600f772c7c7e0c2893a9c57302549d6851bf2bbde45cb17b29754f781d6e8CH-J Proprietary Software License 1.14 · کد منبع تحت CH-J Proprietary Software License 1.14 ارائه میشود. در دسترس بودن آن شرایط مجوز را تغییر نمیدهد و حق اضافهای اعطا نمیکند.
SHA-256 بایگانی
476ed8aef0f1e96a5acdf223127b6692acdf4492eeaf5d0816b6e2a634fbbda6