Skip to content

Commit 306fb88

Browse files
authored
Merge pull request #10312 from terraform-providers/t-aws_iam_server_certificate-remove-tls-provider
tests/service/iam: Use internal implementation for TLS key/certificate
2 parents d07f40d + d5ae5e0 commit 306fb88

File tree

2 files changed

+100
-88
lines changed

2 files changed

+100
-88
lines changed

aws/data_source_aws_iam_server_certificate_test.go

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,18 @@ func TestResourceSortByExpirationDate(t *testing.T) {
3939
}
4040

4141
func TestAccAWSDataSourceIAMServerCertificate_basic(t *testing.T) {
42-
rInt := acctest.RandInt()
42+
rName := acctest.RandomWithPrefix("tf-acc-test")
43+
44+
key := tlsRsaPrivateKeyPem(2048)
45+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
4346

4447
resource.ParallelTest(t, resource.TestCase{
4548
PreCheck: func() { testAccPreCheck(t) },
46-
Providers: testAccProvidersWithTLS,
49+
Providers: testAccProviders,
4750
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
4851
Steps: []resource.TestStep{
4952
{
50-
Config: testAccAwsDataIAMServerCertConfig(rInt),
53+
Config: testAccAwsDataIAMServerCertConfig(rName, key, certificate),
5154
Check: resource.ComposeTestCheckFunc(
5255
resource.TestCheckResourceAttrSet("aws_iam_server_certificate.test_cert", "arn"),
5356
resource.TestCheckResourceAttrSet("data.aws_iam_server_certificate.test", "arn"),
@@ -78,17 +81,20 @@ func TestAccAWSDataSourceIAMServerCertificate_matchNamePrefix(t *testing.T) {
7881
}
7982

8083
func TestAccAWSDataSourceIAMServerCertificate_path(t *testing.T) {
81-
rInt := acctest.RandInt()
84+
rName := acctest.RandomWithPrefix("tf-acc-test")
8285
path := "/test-path/"
8386
pathPrefix := "/test-path/"
8487

88+
key := tlsRsaPrivateKeyPem(2048)
89+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
90+
8591
resource.ParallelTest(t, resource.TestCase{
8692
PreCheck: func() { testAccPreCheck(t) },
87-
Providers: testAccProvidersWithTLS,
93+
Providers: testAccProviders,
8894
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
8995
Steps: []resource.TestStep{
9096
{
91-
Config: testAccAwsDataIAMServerCertConfigPath(rInt, path, pathPrefix),
97+
Config: testAccAwsDataIAMServerCertConfigPath(rName, path, pathPrefix, key, certificate),
9298
Check: resource.ComposeTestCheckFunc(
9399
resource.TestCheckResourceAttr("data.aws_iam_server_certificate.test", "path", path),
94100
),
@@ -97,27 +103,36 @@ func TestAccAWSDataSourceIAMServerCertificate_path(t *testing.T) {
97103
})
98104
}
99105

100-
func testAccAwsDataIAMServerCertConfig(rInt int) string {
106+
func testAccAwsDataIAMServerCertConfig(rName, key, certificate string) string {
101107
return fmt.Sprintf(`
102-
%s
108+
resource "aws_iam_server_certificate" "test_cert" {
109+
name = "%[1]s"
110+
certificate_body = "%[2]s"
111+
private_key = "%[3]s"
112+
}
103113
104114
data "aws_iam_server_certificate" "test" {
105115
name = "${aws_iam_server_certificate.test_cert.name}"
106116
latest = true
107117
}
108-
`, testAccIAMServerCertConfig(rInt))
118+
`, rName, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key))
109119
}
110120

111-
func testAccAwsDataIAMServerCertConfigPath(rInt int, path, pathPrefix string) string {
121+
func testAccAwsDataIAMServerCertConfigPath(rName, path, pathPrefix, key, certificate string) string {
112122
return fmt.Sprintf(`
113-
%s
123+
resource "aws_iam_server_certificate" "test_cert" {
124+
name = "%[1]s"
125+
path = "%[2]s"
126+
certificate_body = "%[3]s"
127+
private_key = "%[4]s"
128+
}
114129
115130
data "aws_iam_server_certificate" "test" {
116131
name = "${aws_iam_server_certificate.test_cert.name}"
117-
path_prefix = "%s"
132+
path_prefix = "%[5]s"
118133
latest = true
119134
}
120-
`, testAccIAMServerCertConfig_path(rInt, path), pathPrefix)
135+
`, rName, path, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key), pathPrefix)
121136
}
122137

123138
var testAccAwsDataIAMServerCertConfigMatchNamePrefix = `

aws/resource_aws_iam_server_certificate_test.go

Lines changed: 72 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -55,29 +55,30 @@ func testSweepIamServerCertificates(region string) error {
5555

5656
func TestAccAWSIAMServerCertificate_basic(t *testing.T) {
5757
var cert iam.ServerCertificate
58-
rInt := acctest.RandInt()
59-
var certBody string
58+
6059
resourceName := "aws_iam_server_certificate.test_cert"
61-
resourceId := fmt.Sprintf("terraform-test-cert-%d", rInt)
60+
rName := acctest.RandomWithPrefix("tf-acc-test")
61+
62+
key := tlsRsaPrivateKeyPem(2048)
63+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
6264

6365
resource.ParallelTest(t, resource.TestCase{
6466
PreCheck: func() { testAccPreCheck(t) },
65-
Providers: testAccProvidersWithTLS,
67+
Providers: testAccProviders,
6668
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
6769
Steps: []resource.TestStep{
6870
{
69-
Config: testAccIAMServerCertConfig(rInt),
71+
Config: testAccIAMServerCertConfig(rName, key, certificate),
7072
Check: resource.ComposeTestCheckFunc(
7173
testAccCheckCertExists(resourceName, &cert),
72-
getCertBody(&certBody),
73-
testAccCheckAWSServerCertAttributes(&cert, &certBody),
74+
testAccCheckAWSServerCertAttributes(&cert, &certificate),
7475
),
7576
},
7677
{
7778
ResourceName: resourceName,
7879
ImportState: true,
7980
ImportStateVerify: true,
80-
ImportStateId: resourceId,
81+
ImportStateId: rName,
8182
ImportStateVerifyIgnore: []string{
8283
"private_key"},
8384
},
@@ -87,20 +88,22 @@ func TestAccAWSIAMServerCertificate_basic(t *testing.T) {
8788

8889
func TestAccAWSIAMServerCertificate_name_prefix(t *testing.T) {
8990
var cert iam.ServerCertificate
90-
var certBody string
91+
9192
resourceName := "aws_iam_server_certificate.test_cert"
9293

94+
key := tlsRsaPrivateKeyPem(2048)
95+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
96+
9397
resource.ParallelTest(t, resource.TestCase{
9498
PreCheck: func() { testAccPreCheck(t) },
95-
Providers: testAccProvidersWithTLS,
99+
Providers: testAccProviders,
96100
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
97101
Steps: []resource.TestStep{
98102
{
99-
Config: testAccIAMServerCertConfig_random(),
103+
Config: testAccIAMServerCertConfig_random(key, certificate),
100104
Check: resource.ComposeTestCheckFunc(
101105
testAccCheckCertExists(resourceName, &cert),
102-
getCertBody(&certBody),
103-
testAccCheckAWSServerCertAttributes(&cert, &certBody),
106+
testAccCheckAWSServerCertAttributes(&cert, &certificate),
104107
),
105108
},
106109
},
@@ -111,6 +114,9 @@ func TestAccAWSIAMServerCertificate_disappears(t *testing.T) {
111114
var cert iam.ServerCertificate
112115
resourceName := "aws_iam_server_certificate.test_cert"
113116

117+
key := tlsRsaPrivateKeyPem(2048)
118+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
119+
114120
testDestroyCert := func(*terraform.State) error {
115121
// reach out and DELETE the Cert
116122
conn := testAccProvider.Meta().(*AWSClient).iamconn
@@ -127,11 +133,11 @@ func TestAccAWSIAMServerCertificate_disappears(t *testing.T) {
127133

128134
resource.ParallelTest(t, resource.TestCase{
129135
PreCheck: func() { testAccPreCheck(t) },
130-
Providers: testAccProvidersWithTLS,
136+
Providers: testAccProviders,
131137
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
132138
Steps: []resource.TestStep{
133139
{
134-
Config: testAccIAMServerCertConfig_random(),
140+
Config: testAccIAMServerCertConfig_random(key, certificate),
135141
Check: resource.ComposeTestCheckFunc(
136142
testAccCheckCertExists(resourceName, &cert),
137143
testDestroyCert,
@@ -180,6 +186,40 @@ func TestAccAWSIAMServerCertificate_file(t *testing.T) {
180186
})
181187
}
182188

189+
func TestAccAWSIAMServerCertificate_Path(t *testing.T) {
190+
var cert iam.ServerCertificate
191+
192+
resourceName := "aws_iam_server_certificate.test_cert"
193+
rName := acctest.RandomWithPrefix("tf-acc-test")
194+
195+
key := tlsRsaPrivateKeyPem(2048)
196+
certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com")
197+
198+
resource.ParallelTest(t, resource.TestCase{
199+
PreCheck: func() { testAccPreCheck(t) },
200+
Providers: testAccProviders,
201+
CheckDestroy: testAccCheckIAMServerCertificateDestroy,
202+
Steps: []resource.TestStep{
203+
{
204+
Config: testAccIAMServerCertConfig_path(rName, "/test/", key, certificate),
205+
Check: resource.ComposeTestCheckFunc(
206+
testAccCheckCertExists(resourceName, &cert),
207+
testAccCheckAWSServerCertAttributes(&cert, &certificate),
208+
resource.TestCheckResourceAttr(resourceName, "path", "/test/"),
209+
),
210+
},
211+
{
212+
ResourceName: resourceName,
213+
ImportState: true,
214+
ImportStateVerify: true,
215+
ImportStateId: rName,
216+
ImportStateVerifyIgnore: []string{
217+
"private_key"},
218+
},
219+
},
220+
})
221+
}
222+
183223
func testAccCheckCertExists(n string, cert *iam.ServerCertificate) resource.TestCheckFunc {
184224
return func(s *terraform.State) error {
185225
rs, ok := s.RootModule().Resources[n]
@@ -206,22 +246,9 @@ func testAccCheckCertExists(n string, cert *iam.ServerCertificate) resource.Test
206246
}
207247
}
208248

209-
func getCertBody(body *string) resource.TestCheckFunc {
210-
return func(s *terraform.State) error {
211-
for _, rs := range s.RootModule().Resources {
212-
if rs.Type != "tls_self_signed_cert" {
213-
continue
214-
}
215-
216-
*body = rs.Primary.Attributes["cert_pem"]
217-
}
218-
return nil
219-
}
220-
}
221-
222249
func testAccCheckAWSServerCertAttributes(cert *iam.ServerCertificate, certBody *string) resource.TestCheckFunc {
223250
return func(s *terraform.State) error {
224-
if !strings.Contains(*cert.ServerCertificateMetadata.ServerCertificateName, "terraform-test-cert") {
251+
if !strings.Contains(*cert.ServerCertificateMetadata.ServerCertificateName, "tf-acc-test") {
225252
return fmt.Errorf("Bad Server Cert Name: %s", *cert.ServerCertificateMetadata.ServerCertificateName)
226253
}
227254

@@ -258,65 +285,35 @@ func testAccCheckIAMServerCertificateDestroy(s *terraform.State) error {
258285
return nil
259286
}
260287

261-
const testAccTLSServerCert = `
262-
resource "tls_private_key" "example" {
263-
algorithm = "RSA"
264-
}
265-
266-
resource "tls_self_signed_cert" "example" {
267-
key_algorithm = "RSA"
268-
private_key_pem = "${tls_private_key.example.private_key_pem}"
269-
270-
subject {
271-
common_name = "example.com"
272-
organization = "ACME Examples, Inc"
273-
}
274-
275-
validity_period_hours = 12
276-
277-
allowed_uses = [
278-
"key_encipherment",
279-
"digital_signature",
280-
"server_auth",
281-
]
282-
}
283-
`
284-
285-
func testAccIAMServerCertConfig(rInt int) string {
288+
func testAccIAMServerCertConfig(rName, key, certificate string) string {
286289
return fmt.Sprintf(`
287-
%s
288-
289290
resource "aws_iam_server_certificate" "test_cert" {
290-
name = "terraform-test-cert-%d"
291-
certificate_body = "${tls_self_signed_cert.example.cert_pem}"
292-
private_key = "${tls_private_key.example.private_key_pem}"
291+
name = "%[1]s"
292+
certificate_body = "%[2]s"
293+
private_key = "%[3]s"
293294
}
294-
`, testAccTLSServerCert, rInt)
295+
`, rName, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key))
295296
}
296297

297-
func testAccIAMServerCertConfig_random() string {
298+
func testAccIAMServerCertConfig_random(key, certificate string) string {
298299
return fmt.Sprintf(`
299-
%s
300-
301300
resource "aws_iam_server_certificate" "test_cert" {
302-
name_prefix = "terraform-test-cert"
303-
certificate_body = "${tls_self_signed_cert.example.cert_pem}"
304-
private_key = "${tls_private_key.example.private_key_pem}"
301+
name_prefix = "tf-acc-test"
302+
certificate_body = "%[1]s"
303+
private_key = "%[2]s"
305304
}
306-
`, testAccTLSServerCert)
305+
`, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key))
307306
}
308307

309-
func testAccIAMServerCertConfig_path(rInt int, path string) string {
308+
func testAccIAMServerCertConfig_path(rName, path, key, certificate string) string {
310309
return fmt.Sprintf(`
311-
%s
312-
313310
resource "aws_iam_server_certificate" "test_cert" {
314-
name = "terraform-test-cert-%d"
315-
path = "%s"
316-
certificate_body = "${tls_self_signed_cert.example.cert_pem}"
317-
private_key = "${tls_private_key.example.private_key_pem}"
311+
name = "%[1]s"
312+
path = "%[2]s"
313+
certificate_body = "%[3]s"
314+
private_key = "%[4]s"
318315
}
319-
`, testAccTLSServerCert, rInt, path)
316+
`, rName, path, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key))
320317
}
321318

322319
// iam-ssl-unix-line-endings

0 commit comments

Comments
 (0)