Skip to content

Commit

Permalink
Add integration tests for CloudFront construct library
Browse files Browse the repository at this point in the history
re #183
  • Loading branch information
corymhall committed Nov 8, 2024
1 parent 129e930 commit 26a72d0
Show file tree
Hide file tree
Showing 27 changed files with 199 additions and 26 deletions.
2 changes: 1 addition & 1 deletion examples/alb/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/api-websocket-lambda-dynamodb/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"@pulumi/aws-native": "^1.0.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0"
}
}
2 changes: 1 addition & 1 deletion examples/apprunner/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0",
"@aws-cdk/aws-apprunner-alpha": "2.20.0-alpha.0"
Expand Down
2 changes: 1 addition & 1 deletion examples/appsvc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/cloudfront-lambda-urls/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"@types/aws-lambda": "^8.10.145",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"aws-lambda": "^1.0.7",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
Expand Down
2 changes: 1 addition & 1 deletion examples/cron-lambda/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/ec2-instance/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/ecscluster/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/eventbridge-atm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"@types/aws-lambda": "^8.10.145",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/eventbridge-sns/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.0.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/fargate/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"@pulumi/cdk": "^0.5.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/lookups/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/aws-native": "^1.0.2",
"@pulumi/aws": "^6.0.0",
"@pulumi/cdk": "^0.5.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0"
}
}
2 changes: 1 addition & 1 deletion examples/s3-object-lambda/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"@pulumi/cdk": "^0.5.0",
"@pulumi/aws-native": "^1.0.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0"
}
}
2 changes: 1 addition & 1 deletion examples/scalable-webhook/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"@types/aws-lambda": "^8.10.145",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion examples/the-big-fan/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"@pulumi/aws-native": "^1.0.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion integration/apigateway-domain/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.0.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion integration/apigateway/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.0.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
3 changes: 3 additions & 0 deletions integration/cloudfront/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: pulumi-aws-cloudfront
runtime: nodejs
description: cloudfront integration test
119 changes: 119 additions & 0 deletions integration/cloudfront/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import * as kinesis from 'aws-cdk-lib/aws-kinesis';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';
import * as pulumicdk from '@pulumi/cdk';
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
import { Duration } from 'aws-cdk-lib';

class CloudFrontStack extends pulumicdk.Stack {
constructor(app: pulumicdk.App, id: string, options?: pulumicdk.StackOptions) {
super(app, id, options);
const bucket = new s3.Bucket(this, 'Bucket');
const cachePolicy = new cloudfront.CachePolicy(this, 'CachePolicy', {
maxTtl: Duration.days(1),
minTtl: Duration.minutes(1),
defaultTtl: Duration.hours(1),
comment: 'A cache policy for the bucket',
cookieBehavior: cloudfront.CacheCookieBehavior.all(),
headerBehavior: cloudfront.CacheHeaderBehavior.allowList('X-Custom-Header'),
queryStringBehavior: cloudfront.CacheQueryStringBehavior.denyList('username', 'password'),
enableAcceptEncodingGzip: true,
enableAcceptEncodingBrotli: true,
});
const originRequestPolicy = new cloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
queryStringBehavior: cloudfront.OriginRequestQueryStringBehavior.all(),
headerBehavior: cloudfront.OriginRequestHeaderBehavior.allowList('X-Custom-Header'),
comment: 'An origin request policy for the bucket',
cookieBehavior: cloudfront.OriginRequestCookieBehavior.all(),
});

const responseHeadersPolicy = new cloudfront.ResponseHeadersPolicy(this, 'ResponseHeadersPolicy', {
responseHeadersPolicyName: 'MyPolicy',
comment: 'A default policy',
corsBehavior: {
accessControlAllowCredentials: false,
accessControlAllowHeaders: ['X-Custom-Header-1', 'X-Custom-Header-2'],
accessControlAllowMethods: ['GET', 'POST'],
accessControlAllowOrigins: ['*'],
accessControlExposeHeaders: ['X-Custom-Header-1', 'X-Custom-Header-2'],
accessControlMaxAge: Duration.seconds(600),
originOverride: true,
},
customHeadersBehavior: {
customHeaders: [
{ header: 'X-Amz-Date', value: 'some-value', override: true },
{ header: 'X-Amz-Security-Token', value: 'some-value', override: false },
],
},
securityHeadersBehavior: {
contentSecurityPolicy: { contentSecurityPolicy: 'default-src https:;', override: true },
contentTypeOptions: { override: true },
frameOptions: { frameOption: cloudfront.HeadersFrameOption.DENY, override: true },
referrerPolicy: { referrerPolicy: cloudfront.HeadersReferrerPolicy.NO_REFERRER, override: true },
strictTransportSecurity: {
accessControlMaxAge: Duration.seconds(600),
includeSubdomains: true,
override: true,
},
xssProtection: {
protection: true,
modeBlock: false,
reportUri: 'https://example.com/csp-report',
override: true,
},
},
removeHeaders: ['Server'],
serverTimingSamplingRate: 50,
});
const keyGroup = new cloudfront.KeyGroup(this, 'AwesomeKeyGroup', {
items: [
new cloudfront.PublicKey(this, 'AwesomePublicKey', {
encodedKey: `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAudf8/iNkQgdvjEdm6xYS
JAyxd/kGTbJfQNg9YhInb7TSm0dGu0yx8yZ3fnpmxuRPqJIlaVr+fT4YRl71gEYa
dlhHmnVegyPNjP9dNqZ7zwNqMEPOPnS/NOHbJj1KYKpn1f8pPNycQ5MQCntKGnSj
6fc+nbcC0joDvGz80xuy1W4hLV9oC9c3GT26xfZb2jy9MVtA3cppNuTwqrFi3t6e
0iGpraxZlT5wewjZLpQkngqYr6s3aucPAZVsGTEYPo4nD5mswmtZOm+tgcOrivtD
/3sD/qZLQ6c5siqyS8aTraD6y+VXugujfarTU65IeZ6QAUbLMsWuZOIi5Jn8zAwx
NQIDAQAB
-----END PUBLIC KEY-----
`,
}),
],
});

const stream = new kinesis.Stream(this, 'stream', {
encryption: kinesis.StreamEncryption.UNENCRYPTED,
});
const realtimeLogConfig = new cloudfront.RealtimeLogConfig(this, 'realtimeLog', {
endPoints: [cloudfront.Endpoint.fromKinesisStream(stream)],
fields: ['timestamp', 'c-ip', 'time-to-first-byte', 'sc-status'],
realtimeLogConfigName: 'my-delivery-stream',
samplingRate: 100,
});

const distro = new cloudfront.Distribution(this, 'distro', {
defaultBehavior: {
origin: origins.S3BucketOrigin.withOriginAccessControl(bucket),
cachePolicy,
originRequestPolicy,
responseHeadersPolicy,
trustedKeyGroups: [keyGroup],
realtimeLogConfig,
},
});
distro.addBehavior('/s3website', new origins.S3StaticWebsiteOrigin(bucket));
distro.addBehavior('/s3identity', origins.S3BucketOrigin.withOriginAccessIdentity(bucket));
distro.addBehavior(
'failover',
new origins.OriginGroup({
primaryOrigin: origins.S3BucketOrigin.withBucketDefaults(bucket),
fallbackOrigin: new origins.HttpOrigin('example.com'),
}),
);
}
}

new pulumicdk.App('app', (scope: pulumicdk.App) => {
new CloudFrontStack(scope, 'teststack');
});
15 changes: 15 additions & 0 deletions integration/cloudfront/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "pulumi-aws-cdk",
"devDependencies": {
"@types/node": "^10.0.0"
},
"dependencies": {
"@pulumi/aws": "^6.0.0",
"@pulumi/aws-native": "^1.5.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
}
18 changes: 18 additions & 0 deletions integration/cloudfront/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"compilerOptions": {
"strict": true,
"outDir": "bin",
"target": "es2019",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"./*.ts"
]
}
2 changes: 1 addition & 1 deletion integration/ec2/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.6.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
11 changes: 10 additions & 1 deletion integration/examples_nodejs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func TestRoute53(t *testing.T) {
"aws:region": "us-east-1",
"aws-native:region": "us-east-1",
},
})
})

integration.ProgramTest(t, &test)
}
Expand All @@ -73,6 +73,15 @@ func TestKms(t *testing.T) {
integration.ProgramTest(t, &test)
}

func TestCloudFront(t *testing.T) {
test := getJSBaseOptions(t).
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "cloudfront"),
})

integration.ProgramTest(t, &test)
}

func getJSBaseOptions(t *testing.T) integration.ProgramTestOptions {
base := getBaseOptions(t)
baseJS := base.With(integration.ProgramTestOptions{
Expand Down
2 changes: 1 addition & 1 deletion integration/kms/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.5.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion integration/route53/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@pulumi/aws-native": "^1.5.0",
"@pulumi/cdk": "^0.5.0",
"@pulumi/pulumi": "^3.0.0",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"esbuild": "^0.24.0"
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"@types/jest": "^29.5.2",
"@types/mock-fs": "^4.13.4",
"@types/node": "^20.12.13",
"aws-cdk-lib": "2.149.0",
"aws-cdk-lib": "2.156.0",
"constructs": "10.3.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
Expand Down
Loading

0 comments on commit 26a72d0

Please sign in to comment.