Enable isolated Capsule Local automatic update testing

This commit is contained in:
2026-09-12 22:18:16 -04:00
parent edefc74c1a
commit a767ee4514
12 changed files with 85 additions and 17 deletions

View File

@ -37,6 +37,28 @@ test('local installer has separate identity, no feed, and cannot wipe app data',
assert.equal(config.nsis.deleteAppDataOnUninstall, false)
})
test('unsigned updates require explicit isolated test mode and retain the Local install identity', () => {
const testEnv = { CAPSULE_TEST_UPDATE_URL: 'https://ttp.joeykimsey.com/capsule/testfeed/' }
assert.throws(() => createBuildConfig({ testUpdates: true, env: {} }), /HTTPS/)
assert.throws(() => createBuildConfig({ release: true, testUpdates: true, env: testEnv }), /combined/)
assert.throws(() => createBuildConfig({ bootstrap: true }), /Bootstrap/)
assert.throws(() => createBuildConfig({ testUpdates: true, env: { CAPSULE_TEST_UPDATE_URL: feed } }), /separate/)
const local = createBuildConfig({ env: {} })
const testBuild = createBuildConfig({ testUpdates: true, env: testEnv })
assert.equal(testBuild.appId, local.appId)
assert.equal(testBuild.extraMetadata.name, local.extraMetadata.name)
assert.equal(testBuild.extraMetadata.capsuleUpdates.enabled, true)
assert.equal(testBuild.extraMetadata.capsuleUpdates.testing, true)
assert.equal(testBuild.win.verifyUpdateCodeSignature, false)
assert.equal(testBuild.forceCodeSigning, false)
assert.equal(testBuild.publish[0].url, testEnv.CAPSULE_TEST_UPDATE_URL)
assert.equal(testBuild.nsis.deleteAppDataOnUninstall, false)
const bootstrap = createBuildConfig({ testUpdates: true, bootstrap: true, env: testEnv })
assert.equal(bootstrap.extraMetadata.version, '0.1.0')
assert.notEqual(bootstrap.directories.output, testBuild.directories.output)
assert.equal(createBuildConfig({ release: true, env }).win.verifyUpdateCodeSignature, true)
})
test('release verification detects tampering and publishes metadata last', async (t) => {
const directory = await mkdtemp(join(tmpdir(), 'capsule-release-test-'))
t.after(() => rm(directory, { recursive: true, force: true }))