stable-diffusion-aws-extension/infrastructure/test/common/parameters.test.ts

129 lines
3.6 KiB
TypeScript

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
import {App} from 'aws-cdk-lib';
import {Template} from 'aws-cdk-lib/assertions';
import {Middleware} from '../../src/main';
import {getParameter} from '../utils';
describe('common parameters test', () => {
const app = new App();
const testId = 'test-1';
const stack = new Middleware(app, testId + '-sd-on-aws', {});
const template = Template.fromStack(stack);
beforeEach(() => {
});
test('Should has Parameter SdExtensionApiKey', () => {
template.hasParameter('SdExtensionApiKey', {
Type: 'String',
});
});
test('Should has Parameter UtilsCpuInstType', () => {
template.hasParameter('UtilsCpuInstType', {
Type: 'String',
});
});
test('Should has Parameter DeployedBefore', () => {
template.hasParameter('DeployedBefore', {
Type: 'String',
});
});
test('Parameter DeployedBefore must be `yes` or `no`', () => {
const allowedValues = getParameter(template, 'DeployedBefore').AllowedValues;
const validValues = [
'yes',
'no',
];
for (const v of validValues) {
expect(allowedValues.includes(v)).toEqual(true);
}
const invalidValues = [
'',
'error',
];
for (const v of invalidValues) {
expect(allowedValues.includes(v)).toEqual(false);
}
});
test('Should has parameter Email', () => {
template.hasParameter('Email', {
Type: 'String',
});
});
test('Should has parameter EcrImageTag', () => {
template.hasParameter('EcrImageTag', {
Type: 'String',
});
});
test('Should has parameter Bucket', () => {
template.hasParameter('Bucket', {
Type: 'String',
});
});
test('Should check S3 bucket pattern', () => {
const pattern = getParameter(template, 'Bucket').AllowedPattern;
const regex = new RegExp(`${pattern}`);
// Bucket naming rules: https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
const validValues = [
'abc',
'abc1',
'abctest',
'abc-test',
'abc.test',
'abctest-18511111111-20231019',
'docexamplebucket1',
'log-delivery-march-2020',
'my-hosted-content',
'docexamplewebsite.com',
'www.docexamplewebsite.com',
'my.example.s3.bucket',
];
for (const v of validValues) {
expect(v).toMatch(regex);
}
const invalidValues = [
'ab',
'ab_test',
'',
'ABC',
'tooooooooooooooooooooooooooooooooooooooooloooooooooooooooooooong',
'doc_example_bucket',
'DocExampleBucket',
'doc-example-bucket-',
];
for (const v of invalidValues) {
expect(v).not.toMatch(regex);
}
});
});