Skip to content

Commit

Permalink
Merge pull request #40993 from hashicorp/td-testcheckresourceattrset-…
Browse files Browse the repository at this point in the history
…arn-klm

testing: Reduce uses of `resource.TestCheckResourceAttrSet` with ARN attributes: `k` to `m` services
  • Loading branch information
gdavison authored Feb 1, 2025
2 parents c9b5045 + 778b45f commit d44dd04
Show file tree
Hide file tree
Showing 21 changed files with 571 additions and 532 deletions.
9 changes: 0 additions & 9 deletions .ci/semgrep/acctest/checks/arn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,6 @@ rules:
paths:
exclude:
- "internal/service/controltower"
- "internal/service/kafka"
- "internal/service/kafkaconnect"
- "internal/service/kendra"
- "internal/service/kinesis"
- "internal/service/kinesisvideo"
- "internal/service/lexmodels"
- "internal/service/lightsail"
- "internal/service/medialive"
- "internal/service/memorydb"
- "internal/service/networkmanager"
- "internal/service/networkmonitor"
- "internal/service/oam"
Expand Down
15 changes: 12 additions & 3 deletions internal/service/kafka/replicator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"
"testing"

"github.com/YakDriver/regexache"
"github.com/aws/aws-sdk-go-v2/service/kafka"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
Expand All @@ -16,9 +17,16 @@ import (
"github.com/hashicorp/terraform-provider-aws/internal/conns"
tfkafka "github.com/hashicorp/terraform-provider-aws/internal/service/kafka"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

const (
// The ARN format documentation (https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmanagedstreamingforapachekafka.html#amazonmanagedstreamingforapachekafka-resources-for-iam-policies)
// shows ARNs having a UUID component, but in testing there is an additional component.
kafkaUUIDRegexPattern = verify.UUIDRegexPattern + `-\w+` // nosemgrep:ci.kafka-in-const-name,ci.kafka-in-var-name
)

func TestAccKafkaReplicator_basic(t *testing.T) {
ctx := acctest.Context(t)
if testing.Short() {
Expand All @@ -45,9 +53,10 @@ func TestAccKafkaReplicator_basic(t *testing.T) {
Config: testAccReplicatorConfig_basic(rName, sourceCluster, targetCluster),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckReplicatorExists(ctx, resourceName, &replicator),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`replicator/`+rName+`/`+kafkaUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "replicator_name", rName),
resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test-description"),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.#", "2"),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.0.vpc_config.0.subnet_ids.#", "3"),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.0.vpc_config.0.security_groups_ids.#", "1"),
Expand Down Expand Up @@ -95,7 +104,7 @@ func TestAccKafkaReplicator_update(t *testing.T) {
Config: testAccReplicatorConfig_basic(rName, sourceCluster, targetCluster),
Check: resource.ComposeTestCheckFunc(
testAccCheckReplicatorExists(ctx, resourceName, &replicator),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`replicator/`+rName+`/`+kafkaUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "replicator_name", rName),
resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test-description"),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.#", "2"),
Expand All @@ -119,7 +128,7 @@ func TestAccKafkaReplicator_update(t *testing.T) {
Config: testAccReplicatorConfig_update(rName, sourceCluster, targetCluster),
Check: resource.ComposeTestCheckFunc(
testAccCheckReplicatorExists(ctx, resourceName, &replicator),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`replicator/`+rName+`/`+kafkaUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "replicator_name", rName),
resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test-description"),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.#", "2"),
Expand Down
4 changes: 3 additions & 1 deletion internal/service/kafka/vpc_connection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"
"testing"

"github.com/YakDriver/regexache"
"github.com/aws/aws-sdk-go-v2/service/kafka"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
Expand Down Expand Up @@ -35,9 +36,10 @@ func TestAccKafkaVPCConnection_basic(t *testing.T) {
Config: testAccVPCConnectionConfig_basic(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckVPCConnectionExists(ctx, resourceName, &v),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafka", regexache.MustCompile(`vpc-connection/\d{12}/`+rName+`/`+kafkaUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "authentication", "SASL_IAM"),
resource.TestCheckResourceAttr(resourceName, "client_subnets.#", "3"),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttr(resourceName, "security_groups.#", "2"),
resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"),
),
Expand Down
15 changes: 12 additions & 3 deletions internal/service/kafkaconnect/connector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,24 @@ import (
"fmt"
"testing"

"github.com/YakDriver/regexache"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/terraform"
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
tfkafkaconnect "github.com/hashicorp/terraform-provider-aws/internal/service/kafkaconnect"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/internal/verify"
"github.com/hashicorp/terraform-provider-aws/names"
)

const (
// The ARN format documentation (https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmanagedstreamingforkafkaconnect.html#amazonmanagedstreamingforkafkaconnect-resources-for-iam-policies)
// shows ARNs having a UUID component, but in testing there is an additional component.
kafkaConnectUUIDRegexPattern = verify.UUIDRegexPattern + `-\w+` // nosemgrep:ci.kafkaconnect-in-const-name,ci.kafkaconnect-in-var-name
)

func TestAccKafkaConnectConnector_basic(t *testing.T) {
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
Expand All @@ -33,7 +41,7 @@ func TestAccKafkaConnectConnector_basic(t *testing.T) {
Config: testAccConnectorConfig_basic(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckConnectorExists(ctx, resourceName),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafkaconnect", regexache.MustCompile(`connector/`+rName+`/`+kafkaConnectUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.autoscaling.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.autoscaling.0.max_worker_count", "2"),
Expand All @@ -49,6 +57,7 @@ func TestAccKafkaConnectConnector_basic(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "connector_configuration.tasks.max", "1"),
resource.TestCheckResourceAttr(resourceName, "connector_configuration.topics", "t1"),
resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.#", "1"),
resource.TestCheckResourceAttr(resourceName, "kafka_cluster.0.apache_kafka_cluster.#", "1"),
resource.TestCheckResourceAttrSet(resourceName, "kafka_cluster.0.apache_kafka_cluster.0.bootstrap_servers"),
Expand Down Expand Up @@ -120,7 +129,7 @@ func TestAccKafkaConnectConnector_update(t *testing.T) {
Config: testAccConnectorConfig_allAttributes(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckConnectorExists(ctx, resourceName),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafkaconnect", regexache.MustCompile(`connector/`+rName+`/`+kafkaConnectUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.autoscaling.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.autoscaling.0.max_worker_count", "6"),
Expand Down Expand Up @@ -180,7 +189,7 @@ func TestAccKafkaConnectConnector_update(t *testing.T) {
Config: testAccConnectorConfig_allAttributesCapacityUpdated(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckConnectorExists(ctx, resourceName),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafkaconnect", regexache.MustCompile(`connector/`+rName+`/`+kafkaConnectUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, "capacity.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.autoscaling.#", "0"),
resource.TestCheckResourceAttr(resourceName, "capacity.0.provisioned_capacity.#", "1"),
Expand Down
4 changes: 3 additions & 1 deletion internal/service/kafkaconnect/custom_plugin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"
"testing"

"github.com/YakDriver/regexache"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/terraform"
Expand All @@ -33,9 +34,10 @@ func TestAccKafkaConnectCustomPlugin_basic(t *testing.T) {
Config: testAccCustomPluginConfig_basic(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckCustomPluginExists(ctx, resourceName),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafkaconnect", regexache.MustCompile(`custom-plugin/`+rName+`/`+kafkaConnectUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttr(resourceName, names.AttrContentType, "ZIP"),
resource.TestCheckResourceAttr(resourceName, names.AttrDescription, ""),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttrSet(resourceName, "latest_revision"),
resource.TestCheckResourceAttr(resourceName, "location.#", "1"),
resource.TestCheckResourceAttr(resourceName, "location.0.s3.#", "1"),
Expand Down
4 changes: 3 additions & 1 deletion internal/service/kafkaconnect/worker_configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"
"testing"

"github.com/YakDriver/regexache"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-plugin-testing/terraform"
Expand All @@ -33,7 +34,8 @@ func TestAccKafkaConnectWorkerConfiguration_basic(t *testing.T) {
Config: testAccWorkerConfigurationConfig_basic(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckWorkerConfigurationExists(ctx, resourceName),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kafkaconnect", regexache.MustCompile(`worker-configuration/`+rName+`/`+kafkaConnectUUIDRegexPattern+`$`)),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttrSet(resourceName, "latest_revision"),
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName),
resource.TestCheckResourceAttr(resourceName, "properties_file_content", "key.converter=org.apache.kafka.connect.storage.StringConverter\nvalue.converter=org.apache.kafka.connect.storage.StringConverter\n"),
Expand Down
2 changes: 1 addition & 1 deletion internal/service/kendra/index_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func TestAccKendraIndex_basic(t *testing.T) {
Config: testAccIndexConfig_basic(rName, rName2, rName3, acctest.CtBasic),
Check: resource.ComposeTestCheckFunc(
testAccCheckIndexExists(ctx, resourceName, &index),
resource.TestCheckResourceAttrSet(resourceName, names.AttrARN),
acctest.CheckResourceAttrRegionalARNFormat(ctx, resourceName, names.AttrARN, "kendra", "index/{id}"),
resource.TestCheckResourceAttr(resourceName, "capacity_units.#", "1"),
resource.TestCheckResourceAttr(resourceName, "capacity_units.0.query_capacity_units", "0"),
resource.TestCheckResourceAttr(resourceName, "capacity_units.0.storage_capacity_units", "0"),
Expand Down
42 changes: 24 additions & 18 deletions internal/service/kinesis/stream_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ func TestAccKinesisStreamDataSource_basic(t *testing.T) {
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
dataSourceName := "data.aws_kinesis_stream.test"
resourceName := "aws_kinesis_stream.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(ctx, t) },
Expand All @@ -31,24 +32,27 @@ func TestAccKinesisStreamDataSource_basic(t *testing.T) {
Steps: []resource.TestStep{
{
Config: testAccStreamDataSourceConfig_basic(rName, 2),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet(dataSourceName, names.AttrARN),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN),
// resource.TestCheckResourceAttrPair(dataSourceName, "creation_timestamp", resourceName, "creation_timestamp"),
resource.TestCheckResourceAttrSet(dataSourceName, "creation_timestamp"),
resource.TestCheckResourceAttr(dataSourceName, "closed_shards.#", "0"),
resource.TestCheckResourceAttr(dataSourceName, names.AttrName, rName),
resource.TestCheckResourceAttr(dataSourceName, "open_shards.#", "2"),
resource.TestCheckResourceAttr(dataSourceName, names.AttrRetentionPeriod, "72"),
resource.TestCheckResourceAttr(dataSourceName, "shard_level_metrics.#", "2"),
resource.TestCheckResourceAttrPair(dataSourceName, "closed_shards.#", resourceName, "closed_shards.#"),
resource.TestCheckResourceAttrPair(dataSourceName, "encryption_type", resourceName, "encryption_type"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrKMSKeyID, resourceName, names.AttrKMSKeyID),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrName, resourceName, names.AttrName),
resource.TestCheckResourceAttrPair(dataSourceName, "open_shards.#", resourceName, "shard_count"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrRetentionPeriod, resourceName, names.AttrRetentionPeriod),
resource.TestCheckResourceAttrPair(dataSourceName, "shard_level_metrics.#", resourceName, "shard_level_metrics.#"),
resource.TestCheckResourceAttr(dataSourceName, names.AttrStatus, "ACTIVE"),
resource.TestCheckResourceAttr(dataSourceName, "stream_mode_details.0.stream_mode", "PROVISIONED"),
resource.TestCheckResourceAttr(dataSourceName, "tags.Name", rName),
resource.TestCheckResourceAttrPair(dataSourceName, "stream_mode_details.0.stream_mode", resourceName, "stream_mode_details.0.stream_mode"),
resource.TestCheckResourceAttrPair(dataSourceName, "tags.Name", resourceName, "tags.Name"),
),
},
{
Config: testAccStreamDataSourceConfig_basic(rName, 3),
Check: resource.ComposeTestCheckFunc(
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "closed_shards.#", "4"),
resource.TestCheckResourceAttr(dataSourceName, "open_shards.#", "3"),
resource.TestCheckResourceAttrPair(dataSourceName, "open_shards.#", resourceName, "shard_count"),
),
},
},
Expand All @@ -59,6 +63,7 @@ func TestAccKinesisStreamDataSource_encryption(t *testing.T) {
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
dataSourceName := "data.aws_kinesis_stream.test"
resourceName := "aws_kinesis_stream.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(ctx, t) },
Expand All @@ -68,16 +73,17 @@ func TestAccKinesisStreamDataSource_encryption(t *testing.T) {
Steps: []resource.TestStep{
{
Config: testAccStreamDataSourceConfig_encryption(rName, 2),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet(dataSourceName, names.AttrARN),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN),
// resource.TestCheckResourceAttrPair(dataSourceName, "creation_timestamp", resourceName, "creation_timestamp"),
resource.TestCheckResourceAttrSet(dataSourceName, "creation_timestamp"),
resource.TestCheckResourceAttr(dataSourceName, "closed_shards.#", "0"),
resource.TestCheckResourceAttr(dataSourceName, "encryption_type", "KMS"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrKMSKeyID, "aws_kms_key.test", names.AttrID),
resource.TestCheckResourceAttr(dataSourceName, names.AttrName, rName),
resource.TestCheckResourceAttr(dataSourceName, "open_shards.#", "2"),
resource.TestCheckResourceAttrPair(dataSourceName, "encryption_type", resourceName, "encryption_type"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrKMSKeyID, resourceName, names.AttrKMSKeyID),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrName, resourceName, names.AttrName),
resource.TestCheckResourceAttrPair(dataSourceName, "open_shards.#", resourceName, "shard_count"),
resource.TestCheckResourceAttr(dataSourceName, names.AttrStatus, "ACTIVE"),
resource.TestCheckResourceAttr(dataSourceName, "stream_mode_details.0.stream_mode", "PROVISIONED"),
resource.TestCheckResourceAttrPair(dataSourceName, "stream_mode_details.0.stream_mode", resourceName, "stream_mode_details.0.stream_mode"),
),
},
},
Expand Down
5 changes: 3 additions & 2 deletions internal/service/kinesis/stream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,12 @@ func TestAccKinesisStream_basic(t *testing.T) {
Steps: []resource.TestStep{
{
Config: testAccStreamConfig_basic(rName),
Check: resource.ComposeTestCheckFunc(
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckStreamExists(ctx, resourceName, &stream),
acctest.CheckResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "kinesis", fmt.Sprintf("stream/%s", rName)),
acctest.CheckResourceAttrRegionalARNFormat(ctx, resourceName, names.AttrARN, "kinesis", "stream/{name}"),
resource.TestCheckResourceAttr(resourceName, "encryption_type", "NONE"),
resource.TestCheckResourceAttr(resourceName, "enforce_consumer_deletion", acctest.CtFalse),
resource.TestCheckResourceAttrPair(resourceName, names.AttrID, resourceName, names.AttrARN),
resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyID, ""),
resource.TestCheckResourceAttr(resourceName, names.AttrName, rName),
resource.TestCheckResourceAttr(resourceName, names.AttrRetentionPeriod, "24"),
Expand Down
Loading

0 comments on commit d44dd04

Please sign in to comment.