This repository has been archived on 2026-04-30. You can view files and clone it, but cannot push or open issues or pull requests.
next-deploy/packages/aws-cloudfront/__tests__/cache-invalidation.test.ts

61 lines
1.6 KiB
TypeScript

import { CloudFront, mockCreateInvalidation } from 'aws-sdk';
import createInvalidation, { ALL_FILES_PATH } from '../src/lib/createInvalidation';
jest.mock('aws-sdk', () => require('./aws-sdk.mock'));
const invalidate = (options = {}): Promise<CloudFront.CreateInvalidationResult> => {
return createInvalidation({
...options,
distributionId: 'fake-distribution-id',
credentials: {
accessKeyId: 'fake-access-key',
secretAccessKey: 'fake-secret-key',
sessionToken: 'fake-session-token',
},
});
};
describe('Cache invalidation tests', () => {
it('passes credentials to CloudFront client', async () => {
await invalidate();
expect(CloudFront).toBeCalledWith({
credentials: {
accessKeyId: 'fake-access-key',
secretAccessKey: 'fake-secret-key',
sessionToken: 'fake-session-token',
},
});
});
it('invalidates CloudFront distribution', async () => {
await invalidate();
expect(mockCreateInvalidation).toBeCalledWith({
DistributionId: 'fake-distribution-id',
InvalidationBatch: {
CallerReference: expect.stringMatching(/^\d+$/),
Paths: {
Quantity: 1,
Items: [ALL_FILES_PATH],
},
},
});
});
it('invalidates specified paths', async () => {
const paths = ['/static/page1', '/static/page2'];
await invalidate({ paths });
expect(mockCreateInvalidation).toBeCalledWith({
DistributionId: 'fake-distribution-id',
InvalidationBatch: {
CallerReference: expect.stringMatching(/^\d+$/),
Paths: {
Quantity: 2,
Items: paths,
},
},
});
});
});