mirror of
https://github.com/gradle/actions.git
synced 2025-04-28 13:49:18 +08:00
This test assumed that at least one 'snapshot' wrapper checksum was unique, and not contained in the set of wrapper checksums for released distributions. This is no longer the case, so the assumption has been modified.
73 lines
2.6 KiB
TypeScript
73 lines
2.6 KiB
TypeScript
import * as checksums from '../../../src/wrapper-validation/checksums'
|
|
import nock from 'nock'
|
|
import {afterEach, describe, expect, test, jest} from '@jest/globals'
|
|
|
|
jest.setTimeout(30000)
|
|
|
|
test('has loaded hardcoded wrapper jars checksums', async () => {
|
|
// Sanity check that generated checksums file is not empty and was properly imported
|
|
expect(checksums.KNOWN_CHECKSUMS.checksums.size).toBeGreaterThan(10)
|
|
// Verify that checksums of arbitrary versions are contained
|
|
expect(
|
|
checksums.KNOWN_CHECKSUMS.checksums.get(
|
|
'660ab018b8e319e9ae779fdb1b7ac47d0321bde953bf0eb4545f14952cfdcaa3'
|
|
)
|
|
).toEqual(new Set(['4.10.3']))
|
|
expect(
|
|
checksums.KNOWN_CHECKSUMS.checksums.get(
|
|
'28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e'
|
|
)
|
|
).toEqual(new Set(['6.0-rc-1', '6.0-rc-2', '6.0-rc-3', '6.0', '6.0.1']))
|
|
})
|
|
|
|
test('fetches wrapper jars checksums', async () => {
|
|
const validChecksums = await checksums.fetchUnknownChecksums(false, new checksums.WrapperChecksums)
|
|
expect(validChecksums.size).toBeGreaterThan(10)
|
|
// Verify that checksum of arbitrary version is contained
|
|
expect(
|
|
validChecksums.has(
|
|
// Checksum for version 6.0
|
|
'28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e'
|
|
)
|
|
).toBe(true)
|
|
})
|
|
|
|
test('fetches wrapper jar checksums for snapshots', async () => {
|
|
const nonSnapshotChecksums = await checksums.fetchUnknownChecksums(false, new checksums.WrapperChecksums)
|
|
const validChecksums = await checksums.fetchUnknownChecksums(true, new checksums.WrapperChecksums)
|
|
|
|
// Expect that at least one snapshot checksum is different from the non-snapshot checksums
|
|
expect(nonSnapshotChecksums.size).toBeGreaterThan(10)
|
|
expect(validChecksums.size).toBeGreaterThanOrEqual(nonSnapshotChecksums.size)
|
|
})
|
|
|
|
test('fetches all wrapper checksum URLS for snapshots', async () => {
|
|
const checksumUrls: string[] = []
|
|
await checksums.addDistributionSnapshotChecksums(checksumUrls)
|
|
|
|
expect(checksumUrls.length).toBeGreaterThan(100) // May only be a few unique checksums
|
|
console.log(checksumUrls)
|
|
})
|
|
|
|
describe('retry', () => {
|
|
afterEach(() => {
|
|
nock.cleanAll()
|
|
})
|
|
|
|
describe('for /versions/all API', () => {
|
|
test('retry three times', async () => {
|
|
nock('https://services.gradle.org', {allowUnmocked: true})
|
|
.get('/versions/all')
|
|
.times(3)
|
|
.replyWithError({
|
|
message: 'connect ECONNREFUSED 104.18.191.9:443',
|
|
code: 'ECONNREFUSED'
|
|
})
|
|
|
|
const validChecksums = await checksums.fetchUnknownChecksums(false, new checksums.WrapperChecksums)
|
|
expect(validChecksums.size).toBeGreaterThan(10)
|
|
nock.isDone()
|
|
})
|
|
})
|
|
})
|