UNPKG

aws-spa

Version:

A no-brainer script to deploy a single page app on AWS

58 lines (54 loc) 2.5 kB
"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}` } })); }); });