@@ -94,7 +94,20 @@ func TestAccAppServiceCertificate_KeyVaultIdVersionless(t *testing.T) {
9494 })
9595}
9696
97- // TODO: add test with `app_service_plan_id` set
97+ func TestAccAppServiceCertificate_AppServiceID (t * testing.T ) {
98+ data := acceptance .BuildTestData (t , "azurerm_app_service_certificate" , "test" )
99+ r := AppServiceCertificateResource {}
100+
101+ data .ResourceTest (t , r , []acceptance.TestStep {
102+ {
103+ Config : r .pfxWithServicePlan (data ),
104+ Check : acceptance .ComposeTestCheckFunc (
105+ check .That (data .ResourceName ).ExistsInAzure (r ),
106+ ),
107+ },
108+ data .ImportStep ("pfx_blob" , "password" , "app_service_plan_id" ),
109+ })
110+ }
98111
99112func (r AppServiceCertificateResource ) Exists (ctx context.Context , clients * clients.Client , state * pluginsdk.InstanceState ) (* bool , error ) {
100113 id , err := certificates .ParseCertificateID (state .ID )
@@ -115,137 +128,78 @@ provider "azurerm" {
115128 features {}
116129}
117130
118- resource "azurerm_resource_group" "test" {
119- name = "acctestwebcert%[1]d"
120- location = "%[2]s"
121- }
131+ %[1]s
122132
123133resource "azurerm_app_service_certificate" "test" {
124- name = "acctest%[1 ]d"
134+ name = "acctest%[2 ]d"
125135 resource_group_name = azurerm_resource_group.test.name
126136 location = azurerm_resource_group.test.location
127137 pfx_blob = filebase64("testdata/app_service_certificate.pfx")
128138 password = "terraform"
129139}
130- ` , data . RandomInteger , data .Locations . Primary )
140+ ` , r . template ( data ) , data .RandomInteger )
131141}
132142
133- func (r AppServiceCertificateResource ) pfxNoPassword (data acceptance.TestData ) string {
143+ func (r AppServiceCertificateResource ) pfxWithServicePlan (data acceptance.TestData ) string {
134144 return fmt .Sprintf (`
135145provider "azurerm" {
136146 features {}
137147}
138148
139- resource "azurerm_resource_group" "test" {
140- name = "acctestwebcert%[1]d"
141- location = "%[2]s"
149+ %[1]s
150+
151+ resource "azurerm_service_plan" "test" {
152+ name = "acctest-SP-%[2]d"
153+ resource_group_name = azurerm_resource_group.test.name
154+ location = azurerm_resource_group.test.location
155+ sku_name = "B1"
156+ os_type = "Linux"
142157}
143158
159+
144160resource "azurerm_app_service_certificate" "test" {
145- name = "acctest%[1 ]d"
161+ name = "acctest%[2 ]d"
146162 resource_group_name = azurerm_resource_group.test.name
147163 location = azurerm_resource_group.test.location
148- pfx_blob = filebase64("testdata/app_service_certificate_nopassword.pfx")
164+ app_service_plan_id = azurerm_service_plan.test.id
165+ pfx_blob = filebase64("testdata/app_service_certificate.pfx")
166+ password = "terraform"
149167}
150- ` , data . RandomInteger , data .Locations . Primary )
168+ ` , r . template ( data ) , data .RandomInteger )
151169}
152170
153- func (r AppServiceCertificateResource ) keyVault (data acceptance.TestData ) string {
171+ func (r AppServiceCertificateResource ) pfxNoPassword (data acceptance.TestData ) string {
154172 return fmt .Sprintf (`
155173provider "azurerm" {
156174 features {}
157175}
158176
159- provider "azuread" {}
160-
161- data "azurerm_client_config" "test" {}
177+ %[1]s
162178
163- data "azuread_service_principal" "test" {
164- display_name = "Microsoft Azure App Service"
179+ resource "azurerm_app_service_certificate" "test" {
180+ name = "acctest%[2]d"
181+ resource_group_name = azurerm_resource_group.test.name
182+ location = azurerm_resource_group.test.location
183+ pfx_blob = filebase64("testdata/app_service_certificate_nopassword.pfx")
165184}
166-
167- resource "azurerm_resource_group" "test" {
168- name = "acctestwebcert%[1]d"
169- location = "%[2]s"
185+ ` , r .template (data ), data .RandomInteger )
170186}
171187
172- resource "azurerm_key_vault" "test" {
173- name = "acctest%[3]s"
174- location = azurerm_resource_group.test.location
175- resource_group_name = azurerm_resource_group.test.name
176-
177- tenant_id = data.azurerm_client_config.test.tenant_id
178-
179- sku_name = "standard"
180-
181- access_policy {
182- tenant_id = data.azurerm_client_config.test.tenant_id
183- object_id = data.azurerm_client_config.test.object_id
184-
185- secret_permissions = [
186- "Delete",
187- "Get",
188- "Purge",
189- "Set",
190- ]
191-
192- certificate_permissions = [
193- "Create",
194- "Delete",
195- "Get",
196- "Purge",
197- "Import",
198- ]
199- }
200-
201- access_policy {
202- tenant_id = data.azurerm_client_config.test.tenant_id
203- object_id = data.azuread_service_principal.test.object_id
204-
205- secret_permissions = [
206- "Get",
207- ]
208-
209- certificate_permissions = [
210- "Get",
211- ]
212- }
188+ func (r AppServiceCertificateResource ) keyVault (data acceptance.TestData ) string {
189+ return fmt .Sprintf (`
190+ provider "azurerm" {
191+ features {}
213192}
214193
215- resource "azurerm_key_vault_certificate" "test" {
216- name = "acctest%[1]d"
217- key_vault_id = azurerm_key_vault.test.id
218-
219- certificate {
220- contents = filebase64("testdata/app_service_certificate.pfx")
221- password = "terraform"
222- }
223-
224- certificate_policy {
225- issuer_parameters {
226- name = "Self"
227- }
228-
229- key_properties {
230- exportable = true
231- key_size = 2048
232- key_type = "RSA"
233- reuse_key = false
234- }
235-
236- secret_properties {
237- content_type = "application/x-pkcs12"
238- }
239- }
240- }
194+ %[1]s
241195
242196resource "azurerm_app_service_certificate" "test" {
243- name = "acctest%[1 ]d"
197+ name = "acctest%[2 ]d"
244198 resource_group_name = azurerm_resource_group.test.name
245199 location = azurerm_resource_group.test.location
246200 key_vault_secret_id = azurerm_key_vault_certificate.test.id
247201}
248- ` , data . RandomInteger , data . Locations . Primary , data .RandomString )
202+ ` , r . keyVaultTemplate ( data ) , data .RandomInteger )
249203}
250204
251205func (r AppServiceCertificateResource ) keyVaultId (data acceptance.TestData ) string {
@@ -254,97 +208,16 @@ provider "azurerm" {
254208 features {}
255209}
256210
257- provider "azuread" {}
258-
259- data "azurerm_client_config" "test" {}
260-
261- data "azuread_service_principal" "test" {
262- display_name = "Microsoft Azure App Service"
263- }
264-
265- resource "azurerm_resource_group" "test" {
266- name = "acctestwebcert%[1]d"
267- location = "%[2]s"
268- }
269-
270- resource "azurerm_key_vault" "test" {
271- name = "acctest%[3]s"
272- location = azurerm_resource_group.test.location
273- resource_group_name = azurerm_resource_group.test.name
274-
275- tenant_id = data.azurerm_client_config.test.tenant_id
276-
277- sku_name = "standard"
278-
279- access_policy {
280- tenant_id = data.azurerm_client_config.test.tenant_id
281- object_id = data.azurerm_client_config.test.object_id
282-
283- secret_permissions = [
284- "Delete",
285- "Get",
286- "Purge",
287- "Set",
288- ]
289-
290- certificate_permissions = [
291- "Create",
292- "Delete",
293- "Get",
294- "Purge",
295- "Import",
296- ]
297- }
298-
299- access_policy {
300- tenant_id = data.azurerm_client_config.test.tenant_id
301- object_id = data.azuread_service_principal.test.object_id
302-
303- secret_permissions = [
304- "Get",
305- ]
306-
307- certificate_permissions = [
308- "Get",
309- ]
310- }
311- }
312-
313- resource "azurerm_key_vault_certificate" "test" {
314- name = "acctest%[1]d"
315- key_vault_id = azurerm_key_vault.test.id
316-
317- certificate {
318- contents = filebase64("testdata/app_service_certificate.pfx")
319- password = "terraform"
320- }
321-
322- certificate_policy {
323- issuer_parameters {
324- name = "Self"
325- }
326-
327- key_properties {
328- exportable = true
329- key_size = 2048
330- key_type = "RSA"
331- reuse_key = false
332- }
333-
334- secret_properties {
335- content_type = "application/x-pkcs12"
336- }
337- }
338- }
211+ %[1]s
339212
340213resource "azurerm_app_service_certificate" "test" {
341- name = "acctest%[1 ]d"
214+ name = "acctest%[2 ]d"
342215 resource_group_name = azurerm_resource_group.test.name
343216 location = azurerm_resource_group.test.location
344217 key_vault_id = azurerm_key_vault.test.id
345218 key_vault_secret_id = azurerm_key_vault_certificate.test.id
346219}
347- ` , data . RandomInteger , data . Locations . Primary , data .RandomString )
220+ ` , r . keyVaultTemplate ( data ) , data .RandomInteger )
348221}
349222
350223func (r AppServiceCertificateResource ) keyVaultIdVersionless (data acceptance.TestData ) string {
@@ -353,21 +226,32 @@ provider "azurerm" {
353226 features {}
354227}
355228
229+ %[1]s
230+
231+ resource "azurerm_app_service_certificate" "test" {
232+ name = "acctest%[2]d"
233+ resource_group_name = azurerm_resource_group.test.name
234+ location = azurerm_resource_group.test.location
235+ key_vault_id = azurerm_key_vault.test.id
236+ key_vault_secret_id = azurerm_key_vault_certificate.test.versionless_secret_id
237+ }
238+ ` , r .keyVaultTemplate (data ), data .RandomInteger )
239+ }
240+
241+ func (r AppServiceCertificateResource ) keyVaultTemplate (data acceptance.TestData ) string {
242+ return fmt .Sprintf (`
356243provider "azuread" {}
357244
245+ %[1]s
246+
358247data "azurerm_client_config" "test" {}
359248
360249data "azuread_service_principal" "test" {
361250 display_name = "Microsoft Azure App Service"
362251}
363252
364- resource "azurerm_resource_group" "test" {
365- name = "acctestwebcert%[1]d"
366- location = "%[2]s"
367- }
368-
369253resource "azurerm_key_vault" "test" {
370- name = "acctest%[3 ]s"
254+ name = "acctest%[2 ]s"
371255 location = azurerm_resource_group.test.location
372256 resource_group_name = azurerm_resource_group.test.name
373257
@@ -410,7 +294,7 @@ resource "azurerm_key_vault" "test" {
410294}
411295
412296resource "azurerm_key_vault_certificate" "test" {
413- name = "acctest%[1 ]d"
297+ name = "acctest%[3 ]d"
414298 key_vault_id = azurerm_key_vault.test.id
415299
416300 certificate {
@@ -435,13 +319,14 @@ resource "azurerm_key_vault_certificate" "test" {
435319 }
436320 }
437321}
322+ ` , r .template (data ), data .RandomString , data .RandomInteger )
323+ }
438324
439- resource "azurerm_app_service_certificate" "test" {
440- name = "acctest%[1]d"
441- resource_group_name = azurerm_resource_group.test.name
442- location = azurerm_resource_group.test.location
443- key_vault_id = azurerm_key_vault.test.id
444- key_vault_secret_id = azurerm_key_vault_certificate.test.versionless_secret_id
325+ func (r AppServiceCertificateResource ) template (data acceptance.TestData ) string {
326+ return fmt .Sprintf (`
327+ resource "azurerm_resource_group" "test" {
328+ name = "acctestwebcert%[1]d"
329+ location = "%[2]s"
445330}
446- ` , data .RandomInteger , data .Locations .Primary , data . RandomString )
331+ ` , data .RandomInteger , data .Locations .Primary )
447332}
0 commit comments