@mavogel/awscdk-rootmail 0.0.225 → 0.0.227

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/.jsii +60 -13
  2. package/API.md +31 -0
  3. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.assets.json +29 -29
  4. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.template.json +11 -10
  5. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +2 -2
  6. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +2 -2
  7. package/integ-tests/{integ.rootmail.ts.snapshot/asset.9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438 → integ.rootmail-custom-santa.ts.snapshot/asset.11768574bbd12c5ed10f463a68797423c366b61535ebc1b14951661b92657fa5}/index.js +1 -1
  8. package/integ-tests/{integ.rootmail.ts.snapshot/asset.157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60 → integ.rootmail-custom-santa.ts.snapshot/asset.409d1db869dd0ed635bff94c855031afc92e9ac918a5d09651dd0b5316db1433}/index.js +1 -1
  9. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.5407280701b87b2f099edc3024ed41a8c3a392c678cd6cf144fd099626ebe66d/index.js +35106 -0
  10. package/integ-tests/{integ.rootmail.ts.snapshot/asset.78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377 → integ.rootmail-custom-santa.ts.snapshot/asset.7144c5a47b3904b1aa4b27be73803a4b684f4ef765d9df8fa767779d37106254}/index.js +1 -1
  11. package/integ-tests/{integ.rootmail.ts.snapshot/asset.b8448324ef2c7d5bfa362722df2d397079d5aabaae2749f09180ac5bedfa5c89 → integ.rootmail-custom-santa.ts.snapshot/asset.9709438d0fbb508ea9bfee8683a274b4f9492f5e527eb28e0bd9e2bc96b9a08f}/index.js +4 -1
  12. package/integ-tests/{integ.rootmail.ts.snapshot/asset.f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad → integ.rootmail-custom-santa.ts.snapshot/asset.a0f9d47d625e1e17d1946bc138cc46c9b7ecb7136dc54cf26af266b0e30b4e15}/index.js +1 -1
  13. package/integ-tests/{integ.rootmail.ts.snapshot/asset.4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196 → integ.rootmail-custom-santa.ts.snapshot/asset.aca912f8a6aebc5dfd423aff79785b8fd7488473a4cf93aaa7ad0e442b548787}/index.js +1 -1
  14. package/integ-tests/{integ.rootmail.ts.snapshot/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → integ.rootmail-custom-santa.ts.snapshot/asset.ad34b204b794bb6638b7af71a62693ffbfcee3c07bdbd90bbf9f8787036bc7c3}/index.js +1 -1
  15. package/integ-tests/{integ.rootmail.ts.snapshot/asset.7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5 → integ.rootmail-custom-santa.ts.snapshot/asset.f61472ea141af20f69ebb7a7718158fcb95d72410c0c2a2e72cc59b1822873fc}/index.js +1 -1
  16. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/integ.json +1 -1
  17. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/manifest.json +2 -2
  18. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/tree.json +9 -9
  19. package/integ-tests/integ.rootmail-filter-subject.ts +156 -0
  20. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.assets.json +162 -0
  21. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.template.json +4542 -0
  22. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +32 -0
  23. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +249 -0
  24. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle/index.js +31981 -0
  25. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +14 -0
  26. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +1 -0
  27. package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.97724f55c990db7c62d85b80d4afb032e60011490da173e3551e6a131013b79d → integ.rootmail-filter-subject.ts.snapshot/asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848}/index.js +376 -20245
  28. package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.b8448324ef2c7d5bfa362722df2d397079d5aabaae2749f09180ac5bedfa5c89 → integ.rootmail-filter-subject.ts.snapshot/asset.be7d56b509650f7f97c406a745d8335992726086995e4cb4aaf50417ab40e803}/index.js +3 -0
  29. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +1 -0
  30. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/consts.js +1 -0
  31. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +3 -0
  32. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +1 -0
  33. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +1 -0
  34. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/integ.json +27 -0
  35. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/manifest.json +742 -0
  36. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/tree.json +5893 -0
  37. package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.assets.json +32 -32
  38. package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.template.json +12 -11
  39. package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +2 -2
  40. package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +3 -3
  41. package/integ-tests/integ.rootmail.ts.snapshot/asset.11768574bbd12c5ed10f463a68797423c366b61535ebc1b14951661b92657fa5/index.js +47 -0
  42. package/integ-tests/integ.rootmail.ts.snapshot/asset.409d1db869dd0ed635bff94c855031afc92e9ac918a5d09651dd0b5316db1433/index.js +106 -0
  43. package/integ-tests/integ.rootmail.ts.snapshot/asset.7144c5a47b3904b1aa4b27be73803a4b684f4ef765d9df8fa767779d37106254/index.js +61 -0
  44. package/integ-tests/integ.rootmail.ts.snapshot/asset.9709438d0fbb508ea9bfee8683a274b4f9492f5e527eb28e0bd9e2bc96b9a08f/index.js +108 -0
  45. package/integ-tests/integ.rootmail.ts.snapshot/asset.a0f9d47d625e1e17d1946bc138cc46c9b7ecb7136dc54cf26af266b0e30b4e15/index.js +74 -0
  46. package/integ-tests/integ.rootmail.ts.snapshot/asset.aca912f8a6aebc5dfd423aff79785b8fd7488473a4cf93aaa7ad0e442b548787/index.js +215 -0
  47. package/integ-tests/integ.rootmail.ts.snapshot/asset.ad34b204b794bb6638b7af71a62693ffbfcee3c07bdbd90bbf9f8787036bc7c3/index.js +85 -0
  48. package/integ-tests/integ.rootmail.ts.snapshot/{asset.3fe096136c1d1292627baeb9b860b3206032deebb5a03ea407d7d04833a222d7 → asset.b0a80de4302e54c024e3dd1233407ed7b1b3ab3bae801ce319e6d8660b2a8db3}/index.js +618 -20478
  49. package/integ-tests/integ.rootmail.ts.snapshot/{asset.070f758ea9c89b8ceea9bb5141ea511633e1d72ab992b608da4efb3d6eeb2ba5 → asset.d25bfd59a60ba15d60c7d58fe66a9c9930044da8f0592ac451a8760bbbfa6460}/index.js +1 -1
  50. package/integ-tests/integ.rootmail.ts.snapshot/asset.f61472ea141af20f69ebb7a7718158fcb95d72410c0c2a2e72cc59b1822873fc/index.js +83 -0
  51. package/integ-tests/integ.rootmail.ts.snapshot/manifest.json +2 -2
  52. package/integ-tests/integ.rootmail.ts.snapshot/tree.json +10 -10
  53. package/lib/rootmail.d.ts +6 -0
  54. package/lib/rootmail.js +4 -2
  55. package/lib/ses-receipt-ruleset-activation.d.ts +1 -0
  56. package/lib/ses-receipt-ruleset-activation.js +2 -1
  57. package/lib/ses-receipt-ruleset-activation.on-event-handler.d.ts +1 -0
  58. package/lib/ses-receipt-ruleset-activation.on-event-handler.js +3 -2
  59. package/lib/ses-receive.d.ts +4 -0
  60. package/lib/ses-receive.js +4 -2
  61. package/lib/ses-receive.ops-santa-handler.js +15 -3
  62. package/node_modules/axios/CHANGELOG.md +11 -0
  63. package/node_modules/axios/dist/axios.js +2 -2
  64. package/node_modules/axios/dist/axios.js.map +1 -1
  65. package/node_modules/axios/dist/axios.min.js +1 -1
  66. package/node_modules/axios/dist/axios.min.js.map +1 -1
  67. package/node_modules/axios/dist/browser/axios.cjs +2 -2
  68. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  69. package/node_modules/axios/dist/esm/axios.js +2 -2
  70. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  71. package/node_modules/axios/dist/esm/axios.min.js +1 -1
  72. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  73. package/node_modules/axios/dist/node/axios.cjs +2 -2
  74. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  75. package/node_modules/axios/index.d.cts +28 -33
  76. package/node_modules/axios/index.d.ts +568 -75
  77. package/node_modules/axios/lib/env/data.js +1 -1
  78. package/node_modules/axios/package.json +1 -1
  79. package/node_modules/cdk-nag/.jsii +2 -2
  80. package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +5 -5
  81. package/node_modules/cdk-nag/lib/nag-logger.js +2 -2
  82. package/node_modules/cdk-nag/lib/nag-pack.js +1 -1
  83. package/node_modules/cdk-nag/lib/nag-rules.js +1 -1
  84. package/node_modules/cdk-nag/lib/nag-suppressions.js +1 -1
  85. package/node_modules/cdk-nag/lib/packs/aws-solutions.js +1 -1
  86. package/node_modules/cdk-nag/lib/packs/hipaa-security.js +1 -1
  87. package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +1 -1
  88. package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +1 -1
  89. package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +1 -1
  90. package/node_modules/cdk-nag/package.json +1 -1
  91. package/package.json +4 -4
  92. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60/index.js +0 -0
  93. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196/index.js +0 -0
  94. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377/index.js +0 -0
  95. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5/index.js +0 -0
  96. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438/index.js +0 -0
  97. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855/index.js +0 -0
  98. /package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot → integ.rootmail-filter-subject.ts.snapshot}/asset.f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad/index.js +0 -0
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/ses-receipt-ruleset-activation.is-complete-handler.ts
20
+ // asset-input/src/ses-receipt-ruleset-activation.is-complete-handler.ts
21
21
  var ses_receipt_ruleset_activation_is_complete_handler_exports = {};
22
22
  __export(ses_receipt_ruleset_activation_is_complete_handler_exports, {
23
23
  PROP_EMAILBUCKET_NAME: () => PROP_EMAILBUCKET_NAME,
@@ -17,9 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/ses-receipt-ruleset-activation.on-event-handler.ts
20
+ // asset-input/src/ses-receipt-ruleset-activation.on-event-handler.ts
21
21
  var ses_receipt_ruleset_activation_on_event_handler_exports = {};
22
22
  __export(ses_receipt_ruleset_activation_on_event_handler_exports, {
23
+ FILTERED_EMAIL_SUBJECTS: () => FILTERED_EMAIL_SUBJECTS,
23
24
  PROP_DOMAIN: () => PROP_DOMAIN,
24
25
  PROP_EMAILBUCKET_NAME: () => PROP_EMAILBUCKET_NAME,
25
26
  PROP_OPS_SANTA_FUNCTION_ARN: () => PROP_OPS_SANTA_FUNCTION_ARN,
@@ -34,6 +35,7 @@ var PROP_SUBDOMAIN = "Subdomain";
34
35
  var PROP_EMAILBUCKET_NAME = "EmailBucketName";
35
36
  var PROP_OPS_SANTA_FUNCTION_ARN = "OpsSantaFunctionArn";
36
37
  var PROP_RULESET_SETTLE_TIME_SECONDS = "RulesetSettleTimeSeconds";
38
+ var FILTERED_EMAIL_SUBJECTS = "FilteredEmailSubjects";
37
39
  var ses = new import_client_ses.SES();
38
40
  async function handler(event) {
39
41
  const domain = event.ResourceProperties[PROP_DOMAIN];
@@ -96,6 +98,7 @@ async function handler(event) {
96
98
  }
97
99
  // Annotate the CommonJS export names for ESM import in node:
98
100
  0 && (module.exports = {
101
+ FILTERED_EMAIL_SUBJECTS,
99
102
  PROP_DOMAIN,
100
103
  PROP_EMAILBUCKET_NAME,
101
104
  PROP_OPS_SANTA_FUNCTION_ARN,
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/hosted-zone-dkim-verification-records.on-event-handler.ts
20
+ // asset-input/src/hosted-zone-dkim-verification-records.on-event-handler.ts
21
21
  var hosted_zone_dkim_verification_records_on_event_handler_exports = {};
22
22
  __export(hosted_zone_dkim_verification_records_on_event_handler_exports, {
23
23
  ATTR_DKIM_TOKENS: () => ATTR_DKIM_TOKENS,
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/rootmail-autowire-dns.on-event-handler.ts
20
+ // asset-input/src/rootmail-autowire-dns.on-event-handler.ts
21
21
  var rootmail_autowire_dns_on_event_handler_exports = {};
22
22
  __export(rootmail_autowire_dns_on_event_handler_exports, {
23
23
  PROP_DOMAIN: () => PROP_DOMAIN,
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // integ-tests/functions/send-email-handler.ts
20
+ // asset-input/integ-tests/functions/send-email-handler.ts
21
21
  var send_email_handler_exports = {};
22
22
  __export(send_email_handler_exports, {
23
23
  handler: () => handler
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/hosted-zone-dkim-propagation.is-complete-handler.ts
20
+ // asset-input/src/hosted-zone-dkim-propagation.is-complete-handler.ts
21
21
  var hosted_zone_dkim_propagation_is_complete_handler_exports = {};
22
22
  __export(hosted_zone_dkim_propagation_is_complete_handler_exports, {
23
23
  PROP_DOMAIN: () => PROP_DOMAIN,
@@ -11,7 +11,7 @@
11
11
  ]
12
12
  },
13
13
  "regions": [
14
- "${Token[AWS.Region.5]}"
14
+ "${Token[AWS.Region.4]}"
15
15
  ],
16
16
  "cdkCommandOptions": {
17
17
  "destroy": {
@@ -17,7 +17,7 @@
17
17
  "validateOnSynth": false,
18
18
  "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}",
19
19
  "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",
20
- "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c8ec203309c2c203c70b59d98084241414aa0642a0880d346858b3467db17aa9.json",
20
+ "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/fc3ff6df43adf930bfe69bf1528259439e0b4771ccc5976395dda7ad197fe49e.json",
21
21
  "requiresBootstrapStackVersion": 6,
22
22
  "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version",
23
23
  "additionalDependencies": [
@@ -658,7 +658,7 @@
658
658
  "validateOnSynth": false,
659
659
  "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}",
660
660
  "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",
661
- "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/609212f0e28dcfd78dd3dab36ef82ce3dcc3d5d2b06cb4493bcc46552a5b0811.json",
661
+ "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/423f02ed714aa03af9ae3b184bfb810f243eafb64040f0cc1a7564888282211b.json",
662
662
  "requiresBootstrapStackVersion": 6,
663
663
  "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version",
664
664
  "additionalDependencies": [
@@ -144,7 +144,7 @@
144
144
  "s3Bucket": {
145
145
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
146
146
  },
147
- "s3Key": "97724f55c990db7c62d85b80d4afb032e60011490da173e3551e6a131013b79d.zip"
147
+ "s3Key": "5407280701b87b2f099edc3024ed41a8c3a392c678cd6cf144fd099626ebe66d.zip"
148
148
  },
149
149
  "environment": {
150
150
  "variables": {
@@ -1348,7 +1348,7 @@
1348
1348
  "s3Bucket": {
1349
1349
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
1350
1350
  },
1351
- "s3Key": "f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad.zip"
1351
+ "s3Key": "a0f9d47d625e1e17d1946bc138cc46c9b7ecb7136dc54cf26af266b0e30b4e15.zip"
1352
1352
  },
1353
1353
  "environment": {
1354
1354
  "variables": {
@@ -1812,7 +1812,7 @@
1812
1812
  "s3Bucket": {
1813
1813
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
1814
1814
  },
1815
- "s3Key": "157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60.zip"
1815
+ "s3Key": "409d1db869dd0ed635bff94c855031afc92e9ac918a5d09651dd0b5316db1433.zip"
1816
1816
  },
1817
1817
  "environment": {
1818
1818
  "variables": {
@@ -2073,7 +2073,7 @@
2073
2073
  "s3Bucket": {
2074
2074
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
2075
2075
  },
2076
- "s3Key": "4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196.zip"
2076
+ "s3Key": "aca912f8a6aebc5dfd423aff79785b8fd7488473a4cf93aaa7ad0e442b548787.zip"
2077
2077
  },
2078
2078
  "environment": {
2079
2079
  "variables": {
@@ -3094,7 +3094,7 @@
3094
3094
  "s3Bucket": {
3095
3095
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
3096
3096
  },
3097
- "s3Key": "7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5.zip"
3097
+ "s3Key": "f61472ea141af20f69ebb7a7718158fcb95d72410c0c2a2e72cc59b1822873fc.zip"
3098
3098
  },
3099
3099
  "environment": {
3100
3100
  "variables": {
@@ -3246,7 +3246,7 @@
3246
3246
  "s3Bucket": {
3247
3247
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
3248
3248
  },
3249
- "s3Key": "9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438.zip"
3249
+ "s3Key": "11768574bbd12c5ed10f463a68797423c366b61535ebc1b14951661b92657fa5.zip"
3250
3250
  },
3251
3251
  "environment": {
3252
3252
  "variables": {
@@ -4268,7 +4268,7 @@
4268
4268
  "s3Bucket": {
4269
4269
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
4270
4270
  },
4271
- "s3Key": "b8448324ef2c7d5bfa362722df2d397079d5aabaae2749f09180ac5bedfa5c89.zip"
4271
+ "s3Key": "9709438d0fbb508ea9bfee8683a274b4f9492f5e527eb28e0bd9e2bc96b9a08f.zip"
4272
4272
  },
4273
4273
  "environment": {
4274
4274
  "variables": {
@@ -4484,7 +4484,7 @@
4484
4484
  "s3Bucket": {
4485
4485
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
4486
4486
  },
4487
- "s3Key": "78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377.zip"
4487
+ "s3Key": "7144c5a47b3904b1aa4b27be73803a4b684f4ef765d9df8fa767779d37106254.zip"
4488
4488
  },
4489
4489
  "environment": {
4490
4490
  "variables": {
@@ -5577,7 +5577,7 @@
5577
5577
  "s3Bucket": {
5578
5578
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
5579
5579
  },
5580
- "s3Key": "d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855.zip"
5580
+ "s3Key": "ad34b204b794bb6638b7af71a62693ffbfcee3c07bdbd90bbf9f8787036bc7c3.zip"
5581
5581
  },
5582
5582
  "environment": {
5583
5583
  "variables": {
@@ -0,0 +1,156 @@
1
+ import * as path from 'path';
2
+ // eslint-disable-next-line import/no-extraneous-dependencies
3
+ import { IntegTest, ExpectedResult, LogType, InvocationType } from '@aws-cdk/integ-tests-alpha';
4
+ import {
5
+ App,
6
+ Duration,
7
+ PhysicalName,
8
+ Stack,
9
+ aws_iam as iam,
10
+ aws_lambda as lambda,
11
+ } from 'aws-cdk-lib';
12
+ import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
13
+ import { Rootmail } from '../src/rootmail';
14
+ import { testDomain, hostedZoneId } from './common';
15
+ // CDK App for Integration Tests
16
+ const app = new App();
17
+ // Stack under test
18
+ const stackUnderTestName = 'RootmailIntegTestStack';
19
+ const stackUnderTest = new Stack(app, stackUnderTestName, {
20
+ description: "This stack includes the application's resources for integration testing.",
21
+ });
22
+
23
+ const randomTestId = 'hf912a53';
24
+ const testSubdomain = `${randomTestId}-${Stack.of(stackUnderTest).region}`;
25
+ const fullDomain = `${testSubdomain}.${testDomain}`;
26
+
27
+ const customSesReceiveFunction = new NodejsFunction(stackUnderTest, 'custom-ses-receive-function', {
28
+ functionName: PhysicalName.GENERATE_IF_NEEDED,
29
+ entry: path.join(__dirname, 'functions', 'custom-ses-receive-function.ts'),
30
+ runtime: lambda.Runtime.NODEJS_18_X,
31
+ logRetention: 1,
32
+ timeout: Duration.seconds(30),
33
+ bundling: {
34
+ esbuildArgs: {
35
+ "--packages": "bundle",
36
+ },
37
+ },
38
+ });
39
+
40
+ customSesReceiveFunction.addToRolePolicy(new iam.PolicyStatement({
41
+ actions: [
42
+ 's3:List*',
43
+ ],
44
+ resources: ['*'],
45
+ }))
46
+
47
+ const rootmail = new Rootmail(stackUnderTest, 'testRootmail', {
48
+ domain: testDomain,
49
+ subdomain: testSubdomain,
50
+ // tests took on average 10-15 minutes , but we leave some buffer
51
+ totalTimeToWireDNS: Duration.minutes(20),
52
+ wireDNSToHostedZoneID: hostedZoneId,
53
+ customSesReceiveFunction: customSesReceiveFunction,
54
+ setDestroyPolicyToAllResources: false,
55
+ filteredEmailSubjects: [
56
+ 'filter-me-subject',
57
+ 'i-want-to-be-filtered',
58
+ ],
59
+ });
60
+
61
+
62
+ // Initialize Integ Test construct
63
+ const integStackName = 'SetupTestIntegStack';
64
+ const integ = new IntegTest(app, integStackName, {
65
+ testCases: [stackUnderTest], // Define a list of cases for this test
66
+ cdkCommandOptions: {
67
+ destroy: {
68
+ args: {
69
+ force: true,
70
+ },
71
+ },
72
+ },
73
+ hooks: {
74
+ postDestroy: [
75
+ 'echo "Post hook"',
76
+ // NOTE: as I do not see the hook called, we need to delete manually
77
+ // `echo "Deleting S3 bucket '${rootmail.emailBucket.bucketName}'`,
78
+ // `python3 cleanup/empty-and-delete-s3-bucket.py ${rootmail.emailBucket.bucketName}`,
79
+ ],
80
+ },
81
+ regions: [stackUnderTest.region],
82
+ });
83
+
84
+ const sendEmailHandler = new NodejsFunction(stackUnderTest, 'send-email-handler', {
85
+ functionName: PhysicalName.GENERATE_IF_NEEDED,
86
+ entry: path.join(__dirname, 'functions', 'send-email-handler.ts'),
87
+ runtime: lambda.Runtime.NODEJS_18_X,
88
+ logRetention: 1,
89
+ timeout: Duration.seconds(30),
90
+ initialPolicy: [
91
+ new iam.PolicyStatement({
92
+ actions: [
93
+ 'ses:SendEmail',
94
+ 'ses:DescribeReceiptRule',
95
+ ],
96
+ resources: ['*'],
97
+ }),
98
+ ],
99
+ bundling: {
100
+ esbuildArgs: {
101
+ "--packages": "bundle",
102
+ },
103
+ },
104
+ });
105
+
106
+ /**
107
+ * Assertion:
108
+ * The application should parse a dummy email, store it in S3 and set create an OPS item.
109
+ */
110
+ const id = `test-id-${randomTestId}-filter-me-subject`;
111
+ const message = 'This is a mail body';
112
+
113
+ const sendTestEmailAssertion = integ.assertions
114
+ .invokeFunction({
115
+ functionName: sendEmailHandler.functionName,
116
+ logType: LogType.TAIL,
117
+ invocationType: InvocationType.REQUEST_RESPONE, // to run it synchronously
118
+ payload: JSON.stringify({
119
+ id: id,
120
+ text: message,
121
+ sourceMail: `test@${fullDomain}`,
122
+ toMail: `root+${id}@${fullDomain}`,
123
+ }),
124
+ }).expect(ExpectedResult.objectLike(
125
+ // as the object 'return { sendStatusCode: 200 };' is wrapped in a Payload object with other properties
126
+ {
127
+ Payload: {
128
+ sendStatusCode: 200,
129
+ },
130
+ },
131
+ ),
132
+ );
133
+
134
+ const getHostedZoneParametersAssertion = integ.assertions
135
+ /**
136
+ * Check that parameter are present
137
+ */
138
+ .awsApiCall('SSM', 'getParameter', {
139
+ Name: rootmail.hostedZoneParameterName,
140
+ })
141
+ .expect(
142
+ ExpectedResult.objectLike({
143
+ Parameter: {
144
+ Name: rootmail.hostedZoneParameterName,
145
+ Type: 'StringList',
146
+ },
147
+ }),
148
+ );
149
+
150
+ /**
151
+ * Main test case
152
+ */
153
+ // check the parameter store
154
+ getHostedZoneParametersAssertion
155
+ // Send a test email
156
+ .next(sendTestEmailAssertion)
@@ -0,0 +1,162 @@
1
+ {
2
+ "version": "33.0.0",
3
+ "files": {
4
+ "9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848": {
5
+ "source": {
6
+ "path": "asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848",
7
+ "packaging": "zip"
8
+ },
9
+ "destinations": {
10
+ "current_account-current_region": {
11
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
12
+ "objectKey": "9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848.zip",
13
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
14
+ }
15
+ }
16
+ },
17
+ "5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e": {
18
+ "source": {
19
+ "path": "asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e",
20
+ "packaging": "zip"
21
+ },
22
+ "destinations": {
23
+ "current_account-current_region": {
24
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
25
+ "objectKey": "5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e.zip",
26
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
27
+ }
28
+ }
29
+ },
30
+ "f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad": {
31
+ "source": {
32
+ "path": "asset.f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad",
33
+ "packaging": "zip"
34
+ },
35
+ "destinations": {
36
+ "current_account-current_region": {
37
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
38
+ "objectKey": "f75274dd7677b6ef41f29d2dfc2c885b4f4e069d3fb8e67636bd89efd3f0fcad.zip",
39
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
40
+ }
41
+ }
42
+ },
43
+ "f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf": {
44
+ "source": {
45
+ "path": "asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf",
46
+ "packaging": "zip"
47
+ },
48
+ "destinations": {
49
+ "current_account-current_region": {
50
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
51
+ "objectKey": "f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf.zip",
52
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
53
+ }
54
+ }
55
+ },
56
+ "157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60": {
57
+ "source": {
58
+ "path": "asset.157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60",
59
+ "packaging": "zip"
60
+ },
61
+ "destinations": {
62
+ "current_account-current_region": {
63
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
64
+ "objectKey": "157ba1713f7224463b621261792d18081588ff306a9bc3f75e6c468fabbe1a60.zip",
65
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
66
+ }
67
+ }
68
+ },
69
+ "4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196": {
70
+ "source": {
71
+ "path": "asset.4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196",
72
+ "packaging": "zip"
73
+ },
74
+ "destinations": {
75
+ "current_account-current_region": {
76
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
77
+ "objectKey": "4c079063901e6478dbb5ace19e3123641ebf0da2ab648ecf52079c5bec154196.zip",
78
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
79
+ }
80
+ }
81
+ },
82
+ "7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5": {
83
+ "source": {
84
+ "path": "asset.7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5",
85
+ "packaging": "zip"
86
+ },
87
+ "destinations": {
88
+ "current_account-current_region": {
89
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
90
+ "objectKey": "7e8a681794eff5fda1841caa360113df5488ecf944055a69b8f1e5a687e269f5.zip",
91
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
92
+ }
93
+ }
94
+ },
95
+ "9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438": {
96
+ "source": {
97
+ "path": "asset.9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438",
98
+ "packaging": "zip"
99
+ },
100
+ "destinations": {
101
+ "current_account-current_region": {
102
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
103
+ "objectKey": "9572b451243318765beb576ae7528096b3879783dbaab795c02c01d7f4e83438.zip",
104
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
105
+ }
106
+ }
107
+ },
108
+ "be7d56b509650f7f97c406a745d8335992726086995e4cb4aaf50417ab40e803": {
109
+ "source": {
110
+ "path": "asset.be7d56b509650f7f97c406a745d8335992726086995e4cb4aaf50417ab40e803",
111
+ "packaging": "zip"
112
+ },
113
+ "destinations": {
114
+ "current_account-current_region": {
115
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
116
+ "objectKey": "be7d56b509650f7f97c406a745d8335992726086995e4cb4aaf50417ab40e803.zip",
117
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
118
+ }
119
+ }
120
+ },
121
+ "78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377": {
122
+ "source": {
123
+ "path": "asset.78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377",
124
+ "packaging": "zip"
125
+ },
126
+ "destinations": {
127
+ "current_account-current_region": {
128
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
129
+ "objectKey": "78b64aaf9aebb4eacbdd42197be10e9d5894360a642f7dcf79aeb84bb3552377.zip",
130
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
131
+ }
132
+ }
133
+ },
134
+ "d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855": {
135
+ "source": {
136
+ "path": "asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855",
137
+ "packaging": "zip"
138
+ },
139
+ "destinations": {
140
+ "current_account-current_region": {
141
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
142
+ "objectKey": "d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855.zip",
143
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
144
+ }
145
+ }
146
+ },
147
+ "ccf48bfb67396f724b78a07324c021050b3aea2d047f7d323d0f2f45478125f8": {
148
+ "source": {
149
+ "path": "RootmailIntegTestStack.template.json",
150
+ "packaging": "file"
151
+ },
152
+ "destinations": {
153
+ "current_account-current_region": {
154
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
155
+ "objectKey": "ccf48bfb67396f724b78a07324c021050b3aea2d047f7d323d0f2f45478125f8.json",
156
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
157
+ }
158
+ }
159
+ }
160
+ },
161
+ "dockerImages": {}
162
+ }