Files
attest/__tests__/integration/provenance.test.ts
T

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2026-02-18 08:52:30 -08:00
import type { Predicate } from '@actions/attest'
import { jest } from '@jest/globals'
2026-02-19 10:14:47 -08:00
import { TEST_PROVENANCE_PREDICATE } from '../fixtures/mocks'
2026-02-13 11:23:24 -08:00
2026-02-18 08:52:30 -08:00
// Mock function
const mockBuildSLSAProvenancePredicate = jest.fn<() => Promise<Predicate>>()
// Mock @actions/attest
jest.unstable_mockModule('@actions/attest', () => ({
buildSLSAProvenancePredicate: mockBuildSLSAProvenancePredicate
2026-02-13 11:23:24 -08:00
}))
2026-02-18 08:52:30 -08:00
// Dynamic import after mocking
2026-02-19 10:14:47 -08:00
const { generateProvenancePredicate } = await import('../../src/provenance')
2026-02-18 08:52:30 -08:00
2026-02-13 11:23:24 -08:00
describe('generateProvenancePredicate', () => {
beforeEach(() => {
jest.clearAllMocks()
2026-02-19 10:14:47 -08:00
mockBuildSLSAProvenancePredicate.mockResolvedValue(TEST_PROVENANCE_PREDICATE)
2026-02-13 11:23:24 -08:00
})
2026-02-19 10:14:47 -08:00
it('should delegate to buildSLSAProvenancePredicate', async () => {
2026-02-13 11:23:24 -08:00
const result = await generateProvenancePredicate()
2026-02-18 08:52:30 -08:00
expect(mockBuildSLSAProvenancePredicate).toHaveBeenCalledTimes(1)
2026-02-19 10:14:47 -08:00
expect(result).toEqual(TEST_PROVENANCE_PREDICATE)
2026-02-13 11:23:24 -08:00
})
2026-02-19 10:14:47 -08:00
it('should propagate errors from the underlying function', async () => {
const error = new Error('Failed to build provenance predicate')
2026-02-18 08:52:30 -08:00
mockBuildSLSAProvenancePredicate.mockRejectedValue(error)
2026-02-13 11:23:24 -08:00
await expect(generateProvenancePredicate()).rejects.toThrow(
2026-02-19 10:14:47 -08:00
'Failed to build provenance predicate'
2026-02-13 11:23:24 -08:00
)
})
})