@@ -121,46 +121,118 @@ test('CertificateValidation.fromEmail', () => {
121
121
} ) ;
122
122
} ) ;
123
123
124
- test ( 'CertificateValidation.fromDns' , ( ) => {
125
- const stack = new Stack ( ) ;
124
+ describe ( 'CertificateValidation.fromDns' , ( ) => {
126
125
127
- new Certificate ( stack , 'Certificate' , {
128
- domainName : 'test.example.com' ,
129
- subjectAlternativeNames : [ 'extra.example.com' ] ,
130
- validation : CertificateValidation . fromDns ( ) ,
131
- } ) ;
126
+ test ( 'without a hosted zone' , ( ) => {
127
+ const stack = new Stack ( ) ;
132
128
133
- expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
134
- DomainName : 'test.example.com' ,
135
- SubjectAlternativeNames : [ 'extra.example.com' ] ,
136
- ValidationMethod : 'DNS' ,
129
+ new Certificate ( stack , 'Certificate' , {
130
+ domainName : 'test.example.com' ,
131
+ subjectAlternativeNames : [ 'extra.example.com' ] ,
132
+ validation : CertificateValidation . fromDns ( ) ,
133
+ } ) ;
134
+
135
+ expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
136
+ DomainName : 'test.example.com' ,
137
+ SubjectAlternativeNames : [ 'extra.example.com' ] ,
138
+ ValidationMethod : 'DNS' ,
139
+ } ) ;
137
140
} ) ;
138
- } ) ;
139
141
140
- test ( 'CertificateValidation.fromDns with hosted zone' , ( ) => {
141
- const stack = new Stack ( ) ;
142
+ test ( 'with a hosted zone' , ( ) => {
143
+ const stack = new Stack ( ) ;
142
144
143
- const exampleCom = new route53 . HostedZone ( stack , 'ExampleCom' , {
144
- zoneName : 'example.com' ,
145
+ const exampleCom = new route53 . HostedZone ( stack , 'ExampleCom' , {
146
+ zoneName : 'example.com' ,
147
+ } ) ;
148
+
149
+ new Certificate ( stack , 'Certificate' , {
150
+ domainName : 'test.example.com' ,
151
+ validation : CertificateValidation . fromDns ( exampleCom ) ,
152
+ } ) ;
153
+
154
+ expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
155
+ DomainName : 'test.example.com' ,
156
+ DomainValidationOptions : [
157
+ {
158
+ DomainName : 'test.example.com' ,
159
+ HostedZoneId : {
160
+ Ref : 'ExampleCom20E1324B' ,
161
+ } ,
162
+ } ,
163
+ ] ,
164
+ ValidationMethod : 'DNS' ,
165
+ } ) ;
145
166
} ) ;
146
167
147
- new Certificate ( stack , 'Certificate' , {
148
- domainName : 'test.example.com' ,
149
- validation : CertificateValidation . fromDns ( exampleCom ) ,
168
+ test ( 'with hosted zone and a wildcard name' , ( ) => {
169
+ const stack = new Stack ( ) ;
170
+
171
+ const exampleCom = new route53 . HostedZone ( stack , 'ExampleCom' , {
172
+ zoneName : 'example.com' ,
173
+ } ) ;
174
+
175
+ new Certificate ( stack , 'Certificate' , {
176
+ domainName : 'test.example.com' ,
177
+ validation : CertificateValidation . fromDns ( exampleCom ) ,
178
+ subjectAlternativeNames : [ '*.test.example.com' ] ,
179
+ } ) ;
180
+
181
+ //Wildcard domain names are de-duped.
182
+ expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
183
+ DomainName : 'test.example.com' ,
184
+ DomainValidationOptions : [
185
+ {
186
+ DomainName : 'test.example.com' ,
187
+ HostedZoneId : {
188
+ Ref : 'ExampleCom20E1324B' ,
189
+ } ,
190
+ } ,
191
+ ] ,
192
+ ValidationMethod : 'DNS' ,
193
+ } ) ;
150
194
} ) ;
151
195
152
- expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
153
- DomainName : 'test.example.com' ,
154
- DomainValidationOptions : [
155
- {
156
- DomainName : 'test.example.com' ,
157
- HostedZoneId : {
158
- Ref : 'ExampleCom20E1324B' ,
196
+ test ( 'with hosted zone and multiple wildcard names' , ( ) => {
197
+ const stack = new Stack ( ) ;
198
+
199
+ const exampleCom = new route53 . HostedZone ( stack , 'ExampleCom' , {
200
+ zoneName : 'example.com' ,
201
+ } ) ;
202
+
203
+ new Certificate ( stack , 'Certificate' , {
204
+ domainName : 'test.example.com' ,
205
+ validation : CertificateValidation . fromDns ( exampleCom ) ,
206
+ subjectAlternativeNames : [ '*.test.example.com' , '*.foo.test.example.com' , 'bar.test.example.com' ] ,
207
+ } ) ;
208
+
209
+ //Wildcard domain names are de-duped.
210
+ expect ( stack ) . toHaveResource ( 'AWS::CertificateManager::Certificate' , {
211
+ DomainName : 'test.example.com' ,
212
+ DomainValidationOptions : [
213
+ {
214
+ DomainName : 'test.example.com' ,
215
+ HostedZoneId : {
216
+ Ref : 'ExampleCom20E1324B' ,
217
+ } ,
159
218
} ,
160
- } ,
161
- ] ,
162
- ValidationMethod : 'DNS' ,
219
+ {
220
+ DomainName : '*.foo.test.example.com' ,
221
+ HostedZoneId : {
222
+ Ref : 'ExampleCom20E1324B' ,
223
+ } ,
224
+ } ,
225
+ {
226
+ DomainName : 'bar.test.example.com' ,
227
+ HostedZoneId : {
228
+ Ref : 'ExampleCom20E1324B' ,
229
+ } ,
230
+ } ,
231
+ ] ,
232
+ ValidationMethod : 'DNS' ,
233
+ } ) ;
163
234
} ) ;
235
+
164
236
} ) ;
165
237
166
238
test ( 'CertificateValidation.fromDnsMultiZone' , ( ) => {
0 commit comments