aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
28 lines • 3.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const evaluate_cloudformation_template_1 = require("../../lib/api/evaluate-cloudformation-template");
const mock_sdk_1 = require("../util/mock-sdk");
describe('Lazy ListStackResources', () => {
test('correctly caches calls to the CloudFormation API', async () => {
// GIVEN
const listStackResMock = jest.fn();
const mockSdk = new mock_sdk_1.MockSdk();
mockSdk.stubCloudFormation({
listStackResources: listStackResMock,
});
listStackResMock.mockReturnValue({
StackResourceSummaries: [],
NextToken: undefined,
});
const res = new evaluate_cloudformation_template_1.LazyListStackResources(mockSdk, 'StackName');
// WHEN
void res.listStackResources();
void res.listStackResources();
void res.listStackResources();
const result = await res.listStackResources();
// THEN
expect(result.length).toBe(0);
expect(listStackResMock).toHaveBeenCalledTimes(1);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1saXN0LXN0YWNrLXJlc291cmNlcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGF6eS1saXN0LXN0YWNrLXJlc291cmNlcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEscUdBQXdGO0FBQ3hGLCtDQUEyQztBQUUzQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLElBQUksQ0FBQyxrREFBa0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNsRSxRQUFRO1FBQ1IsTUFBTSxnQkFBZ0IsR0FBeUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pJLE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUN6QixrQkFBa0IsRUFBRSxnQkFBZ0I7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1lBQy9CLHNCQUFzQixFQUFFLEVBQUU7WUFDMUIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSx5REFBc0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0QsT0FBTztRQUNQLEtBQUssR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsS0FBSyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixLQUFLLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFOUMsT0FBTztRQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvb3JkZXIgKi9cbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IExhenlMaXN0U3RhY2tSZXNvdXJjZXMgfSBmcm9tICcuLi8uLi9saWIvYXBpL2V2YWx1YXRlLWNsb3VkZm9ybWF0aW9uLXRlbXBsYXRlJztcbmltcG9ydCB7IE1vY2tTZGsgfSBmcm9tICcuLi91dGlsL21vY2stc2RrJztcblxuZGVzY3JpYmUoJ0xhenkgTGlzdFN0YWNrUmVzb3VyY2VzJywgKCkgPT4ge1xuICB0ZXN0KCdjb3JyZWN0bHkgY2FjaGVzIGNhbGxzIHRvIHRoZSBDbG91ZEZvcm1hdGlvbiBBUEknLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBsaXN0U3RhY2tSZXNNb2NrOiBqZXN0Lk1vY2s8QVdTLkNsb3VkRm9ybWF0aW9uLkxpc3RTdGFja1Jlc291cmNlc091dHB1dCwgQVdTLkNsb3VkRm9ybWF0aW9uLkxpc3RTdGFja1Jlc291cmNlc0lucHV0W10+ID0gamVzdC5mbigpO1xuICAgIGNvbnN0IG1vY2tTZGsgPSBuZXcgTW9ja1NkaygpO1xuICAgIG1vY2tTZGsuc3R1YkNsb3VkRm9ybWF0aW9uKHtcbiAgICAgIGxpc3RTdGFja1Jlc291cmNlczogbGlzdFN0YWNrUmVzTW9jayxcbiAgICB9KTtcbiAgICBsaXN0U3RhY2tSZXNNb2NrLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBbXSxcbiAgICAgIE5leHRUb2tlbjogdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlcyA9IG5ldyBMYXp5TGlzdFN0YWNrUmVzb3VyY2VzKG1vY2tTZGssICdTdGFja05hbWUnKTtcblxuICAgIC8vIFdIRU5cbiAgICB2b2lkIHJlcy5saXN0U3RhY2tSZXNvdXJjZXMoKTtcbiAgICB2b2lkIHJlcy5saXN0U3RhY2tSZXNvdXJjZXMoKTtcbiAgICB2b2lkIHJlcy5saXN0U3RhY2tSZXNvdXJjZXMoKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXMubGlzdFN0YWNrUmVzb3VyY2VzKCk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHJlc3VsdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgZXhwZWN0KGxpc3RTdGFja1Jlc01vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG59KTtcbiJdfQ==