Set default signature verification for supported distributions (#1246)

* Default signature verification for supported distributions

* Delegate signature defaults to installers
This commit is contained in:
John
2026-08-24 15:08:03 +01:00
committed by GitHub
parent 1dbac3c9e1
commit b96213d9d2
9 changed files with 82 additions and 19 deletions
@@ -398,13 +398,12 @@ describe('downloadTool', () => {
jest.restoreAllMocks();
});
it('verifies signature when enabled', async () => {
it('verifies signatures by default', async () => {
const signedDistribution = new MicrosoftDistributions({
version: '17',
architecture: 'x64',
packageType: 'jdk',
checkLatest: false,
verifySignature: true
checkLatest: false
});
await signedDistribution['downloadTool']({
@@ -457,14 +457,13 @@ describe('downloadTool', () => {
jest.restoreAllMocks();
});
it('verifies signature when enabled', async () => {
it('verifies signatures by default', async () => {
const distribution = new TemurinDistribution(
{
version: '17',
architecture: 'x64',
packageType: 'jdk',
checkLatest: false,
verifySignature: true
checkLatest: false
},
TemurinImplementation.Hotspot
);
@@ -482,6 +481,27 @@ describe('downloadTool', () => {
);
});
it('does not verify signatures when explicitly disabled', async () => {
const distribution = new TemurinDistribution(
{
version: '17',
architecture: 'x64',
packageType: 'jdk',
checkLatest: false,
verifySignature: false
},
TemurinImplementation.Hotspot
);
await distribution['downloadTool']({
version: '17.0.14+7',
url: 'https://example.com/jdk.tar.gz',
signatureUrl: 'https://example.com/jdk.tar.gz.sig'
});
expect(spyVerifySignature).not.toHaveBeenCalled();
});
it('downloads and adds matching JMODs to the JDK', async () => {
spyDownloadTool
.mockResolvedValueOnce('/tmp/jdk.tar.gz')
@@ -499,7 +519,8 @@ describe('downloadTool', () => {
version: '25',
architecture: 'x64',
packageType: 'jdk+jmods',
checkLatest: false
checkLatest: false,
verifySignature: false
},
TemurinImplementation.Hotspot
);
+32 -2
View File
@@ -161,6 +161,37 @@ describe('setup action orchestration', () => {
expect(factory.getJavaDistribution).not.toHaveBeenCalled();
});
it.each([
['temurin', undefined, undefined],
['zulu', undefined, undefined],
['temurin', false, false],
['zulu', true, true]
])(
'passes signature verification input for %s with explicit value %s as %s',
async (distribution, explicitValue, expectedValue) => {
inputs.set('distribution', distribution);
multilineInputs.set('java-version', ['21']);
if (explicitValue !== undefined) {
inputs.set('verify-signature', String(explicitValue));
booleanInputs.set('verify-signature', explicitValue);
}
(factory.getJavaDistribution as jest.Mock).mockReturnValue({
setupJava: jest.fn(async () => ({
version: '21.0.4+7',
path: '/opt/java/21'
}))
});
await run();
expect(factory.getJavaDistribution).toHaveBeenCalledWith(
distribution,
expect.objectContaining({verifySignature: expectedValue}),
''
);
}
);
it('requires distribution when it cannot be inferred from the version file', async () => {
inputs.set('java-version-file', '.java-version');
(fs.readFileSync as jest.Mock).mockReturnValue(Buffer.from('21'));
@@ -200,7 +231,6 @@ describe('setup action orchestration', () => {
booleanInputs.set('check-latest', true);
booleanInputs.set('force-download', true);
booleanInputs.set('set-default', false);
booleanInputs.set('verify-signature', true);
inputs.set('verify-signature-public-key', 'public-key');
(fs.readFileSync as jest.Mock).mockReturnValue(
Buffer.from('java=21.0.5-tem')
@@ -232,7 +262,7 @@ describe('setup action orchestration', () => {
forceDownload: true,
cacheJdk: false,
setDefault: false,
verifySignature: true,
verifySignature: undefined,
verifySignaturePublicKey: 'public-key'
},
'/tmp/java.tar.gz'