This repository has been archived by the owner on May 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5ca7c35
commit 3490dc8
Showing
1 changed file
with
118 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
import { MiraServiceStack, MiraStack } from './stack' | ||
import { MiraApp } from './app' | ||
import { MiraConfig } from '../config/mira-config' | ||
import { Stack, CfnOutput, Tag } from '@aws-cdk/core' | ||
|
||
jest.mock('@aws-cdk/core', () => ({ | ||
...jest.requireActual('@aws-cdk/core'), | ||
CfnOutput: jest.fn() | ||
})) | ||
|
||
MiraConfig.getEnvironment = jest.fn().mockReturnValue({ | ||
env: { | ||
account: '101259067028', | ||
region: 'eu-west-1' | ||
}, | ||
profile: 'mira-dev', | ||
name: 'default' | ||
}) | ||
|
||
describe('MiraServiceStack', () => { | ||
const app = new MiraApp() | ||
|
||
it('applyPolicies calls applyAspect', () => { | ||
const miraServiceStackInstance = new MiraServiceStack(app, 'env') | ||
miraServiceStackInstance.node.applyAspect = jest.fn() | ||
expect(miraServiceStackInstance.applyPolicies([])).toEqual(undefined) | ||
expect(miraServiceStackInstance.node.applyAspect).toBeCalledTimes(1) | ||
}) | ||
|
||
it('has app initialized', async () => { | ||
const miraServiceStackInstance = new MiraServiceStack(app, 'env', 'sufix') | ||
expect(await miraServiceStackInstance.initialize()).toEqual(undefined) | ||
expect(await miraServiceStackInstance.initialized).toBe(undefined) | ||
}) | ||
}) | ||
|
||
describe('MiraStack', () => { | ||
afterEach(() => { | ||
jest.clearAllMocks() | ||
}) | ||
|
||
const stack = new Stack() | ||
|
||
it('has app initialized', async () => { | ||
const miraStackInstance = new MiraStack(stack, 'Default', {}) | ||
expect(await miraStackInstance.initialize()).toEqual(undefined) | ||
expect(await miraStackInstance.initialized).toBe(undefined) | ||
expect(miraStackInstance.parent).toBe(stack) | ||
expect(miraStackInstance.name).toBe('Default') | ||
}) | ||
|
||
it('addOutput without shouldExport calls CfnOutput one time', async () => { | ||
const miraStackInstance = new MiraStack(stack) | ||
expect( | ||
await miraStackInstance.addOutput('DefaultStack', 'value', false) | ||
).toEqual(undefined) | ||
expect(miraStackInstance.parent).toBe(stack) | ||
expect(miraStackInstance.name).toBe('DefaultStack') | ||
expect(CfnOutput).toBeCalledTimes(1) | ||
}) | ||
|
||
it('addOutput with shouldExport calls CfnOutput two times', async () => { | ||
const miraStackInstance = new MiraStack(stack) | ||
expect(await miraStackInstance.addOutput('DefaultStack', 'value')).toEqual( | ||
undefined | ||
) | ||
expect(CfnOutput).toBeCalledTimes(2) | ||
}) | ||
|
||
it('creates StringParameter correctly', async () => { | ||
const miraStackInstance = new MiraStack(stack) | ||
const res = await miraStackInstance.createParameter( | ||
'Fullname', | ||
'description', | ||
'value' | ||
) | ||
expect(res.toString().split('/')[1]).toBe('DefaultStackFullnameParameter') | ||
}) | ||
|
||
it('loadParameter with fullName divided by / corretly', async () => { | ||
const miraStackInstance = new MiraStack(stack) | ||
const res = await miraStackInstance.loadParameter('Full/Name') | ||
expect(res.parameterName).toBe('/default/Full/Name') | ||
expect(res.toString().split('/')[1]).toBe('FullNameParameter') | ||
}) | ||
|
||
it('loadParameter with environment and fullName', async () => { | ||
const miraStackInstance = new MiraStack(stack, 'Default') | ||
const res = await miraStackInstance.loadParameter('Fullname') | ||
expect(res.parameterName).toBe('/default/Default/Fullname') | ||
expect(res.toString().split('/')[1]).toBe('DefaultFullnameParameter') | ||
}) | ||
}) | ||
|
||
describe('MiraStack Tags', () => { | ||
afterEach(() => { | ||
jest.clearAllMocks() | ||
}) | ||
|
||
it('Adds default tags', async () => { | ||
Tag.add = jest.fn() | ||
const app = new MiraApp() | ||
const miraStackInstance = new MiraServiceStack(app, 'env') | ||
await miraStackInstance.initialized | ||
|
||
expect(Tag.add).toHaveBeenCalledTimes(2) | ||
}) | ||
|
||
it('Adds default tags and cost center', async () => { | ||
Tag.add = jest.fn() | ||
MiraConfig.getCostCenter = jest.fn().mockReturnValue('123') | ||
const app = new MiraApp() | ||
const miraStackInstance = new MiraServiceStack(app, 'env') | ||
await miraStackInstance.initialized | ||
|
||
expect(Tag.add).toHaveBeenCalledTimes(3) | ||
}) | ||
}) |