mirror of
https://github.com/actions/setup-java.git
synced 2026-08-25 19:42:57 +00:00
Set default signature verification for supported distributions (#1246)
* Default signature verification for supported distributions * Delegate signature defaults to installers
This commit is contained in:
@@ -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
|
||||
);
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user