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__/custom-url-origin.test.ts
2020-07-05 22:30:21 -07:00

107 lines
2.7 KiB
TypeScript

import { createComponent, assertHasOrigin } from './test-utils';
import {
mockCreateDistribution,
mockUpdateDistribution,
mockCreateDistributionPromise,
mockGetDistributionConfigPromise,
mockUpdateDistributionPromise,
} from 'aws-sdk';
import CloudFrontComponent from '../serverless';
jest.mock('aws-sdk', () => require('../__mocks__/aws-sdk.mock'));
describe('Input origin as a custom url', () => {
let component: CloudFrontComponent;
beforeEach(async () => {
mockCreateDistributionPromise.mockResolvedValueOnce({
Distribution: {
Id: 'distribution123',
},
});
component = await createComponent();
});
it('creates distribution with custom url origin and sets defaults', async () => {
await component.default({
defaults: {
allowedHttpMethods: ['HEAD', 'DELETE', 'POST', 'GET', 'OPTIONS', 'PUT', 'PATCH'],
ttl: 10,
'lambda@edge': {
'origin-request': 'arn:aws:lambda:us-east-1:123:function:originRequestFunction',
},
},
origins: ['https://mycustomorigin.com'],
});
assertHasOrigin(mockCreateDistribution, {
Id: 'mycustomorigin.com',
DomainName: 'mycustomorigin.com',
CustomOriginConfig: {
HTTPPort: 80,
HTTPSPort: 443,
OriginProtocolPolicy: 'https-only',
OriginSslProtocols: {
Quantity: 1,
Items: ['TLSv1.2'],
},
OriginReadTimeout: 30,
OriginKeepaliveTimeout: 5,
},
CustomHeaders: {
Quantity: 0,
Items: [],
},
OriginPath: '',
});
expect(mockCreateDistribution.mock.calls[0][0]).toMatchSnapshot();
});
it('updates distribution', async () => {
mockGetDistributionConfigPromise.mockResolvedValueOnce({
ETag: 'etag',
DistributionConfig: {
Origins: {
Items: [],
},
},
});
mockUpdateDistributionPromise.mockResolvedValueOnce({
Distribution: {
Id: 'xyz',
},
});
await component.default({
origins: ['https://mycustomorigin.com'],
});
await component.default({
origins: ['https://mycustomoriginupdated.com'],
});
assertHasOrigin(mockUpdateDistribution, {
Id: 'mycustomoriginupdated.com',
DomainName: 'mycustomoriginupdated.com',
CustomOriginConfig: {
HTTPPort: 80,
HTTPSPort: 443,
OriginProtocolPolicy: 'https-only',
OriginSslProtocols: {
Quantity: 1,
Items: ['TLSv1.2'],
},
OriginReadTimeout: 30,
OriginKeepaliveTimeout: 5,
},
CustomHeaders: {
Quantity: 0,
Items: [],
},
OriginPath: '',
});
expect(mockUpdateDistribution.mock.calls[0][0]).toMatchSnapshot();
});
});