aws-spa
Version:
A no-brainer script to deploy a single page app on AWS
58 lines (54 loc) • 2.5 kB
JavaScript
"use strict";
var _awsServices = require("../aws-services");
var _testHelper = require("../test-helper");
var _originAccess = require("./origin-access");
describe('upsertOriginAccessControl', () => {
const listOriginAccessControlsMock = jest.spyOn(_awsServices.cloudfront, 'listOriginAccessControls');
const getOriginAccessControlMock = jest.spyOn(_awsServices.cloudfront, 'getOriginAccessControl');
const createOriginAccessControlMock = jest.spyOn(_awsServices.cloudfront, 'createOriginAccessControl');
beforeEach(() => {
listOriginAccessControlsMock.mockReset();
getOriginAccessControlMock.mockReset();
createOriginAccessControlMock.mockReset();
});
it('does not create OAC if already existing', async () => {
const domainName = 'my-domain';
const distributionId = 'my-distribution-id';
const oacName = (0, _originAccess.getOriginAccessControlName)(domainName, distributionId);
listOriginAccessControlsMock.mockReturnValue((0, _testHelper.awsResolve)({
OriginAccessControlList: {
Items: [{
Id: 'dummy',
Name: oacName
}]
}
}));
getOriginAccessControlMock.mockReturnValue((0, _testHelper.awsResolve)({
OriginAccessControl: {},
ETag: 'my-etag'
}));
await (0, _originAccess.upsertOriginAccessControl)(domainName, distributionId);
expect(createOriginAccessControlMock).not.toHaveBeenCalled();
});
it('creates OAC if necessary and required (shouldBlockBucketPublicAccess is true)', async () => {
const domainName = 'my-domain';
const distributionId = 'my-distribution-id';
const oacName = (0, _originAccess.getOriginAccessControlName)(domainName, distributionId);
listOriginAccessControlsMock.mockReturnValue((0, _testHelper.awsResolve)({
OriginAccessControlList: {}
}));
createOriginAccessControlMock.mockReturnValue((0, _testHelper.awsResolve)({}));
await (0, _originAccess.upsertOriginAccessControl)(domainName, distributionId);
expect(listOriginAccessControlsMock).toHaveBeenCalled();
expect(createOriginAccessControlMock).toHaveBeenCalledTimes(1);
expect(createOriginAccessControlMock).toHaveBeenCalledWith(expect.objectContaining({
OriginAccessControlConfig: {
Name: oacName,
OriginAccessControlOriginType: 's3',
SigningBehavior: 'always',
SigningProtocol: 'sigv4',
Description: `OAC used by ${domainName} associated to distributionId: ${distributionId}`
}
}));
});
});