Skip to content

Commit

Permalink
Merge pull request #41107 from hashicorp/td-oam
Browse files Browse the repository at this point in the history
testing: Reduce uses of `resource.TestCheckResourceAttrSet` with ARN attributes: `oam`
  • Loading branch information
gdavison authored Feb 1, 2025
2 parents d44dd04 + 4914fe5 commit 060a954
Show file tree
Hide file tree
Showing 12 changed files with 121 additions and 61 deletions.
1 change: 0 additions & 1 deletion .ci/semgrep/acctest/checks/arn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ rules:
- "internal/service/controltower"
- "internal/service/networkmanager"
- "internal/service/networkmonitor"
- "internal/service/oam"
- "internal/service/organizations"
- "internal/service/pinpoint"
- "internal/service/redshift"
Expand Down
60 changes: 37 additions & 23 deletions internal/service/oam/link_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ 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-provider-aws/internal/acctest"
Expand All @@ -22,6 +21,7 @@ func testAccObservabilityAccessManagerLinkDataSource_basic(t *testing.T) {
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
dataSourceName := "data.aws_oam_link.test"
resourceName := "aws_oam_link.test"

resource.Test(t, resource.TestCase{
PreCheck: func() {
Expand All @@ -36,13 +36,13 @@ func testAccObservabilityAccessManagerLinkDataSource_basic(t *testing.T) {
{
Config: testAccLinkDataSourceConfig_basic(rName),
Check: resource.ComposeTestCheckFunc(
acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)),
resource.TestCheckResourceAttrSet(dataSourceName, "label"),
resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"),
resource.TestCheckResourceAttrSet(dataSourceName, "link_id"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN),
resource.TestCheckResourceAttrPair(dataSourceName, "label", resourceName, "label"),
resource.TestCheckResourceAttrPair(dataSourceName, "label_template", resourceName, "label_template"),
resource.TestCheckResourceAttrPair(dataSourceName, "link_id", resourceName, "link_id"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.0", "AWS::CloudWatch::Metric"),
resource.TestCheckResourceAttrSet(dataSourceName, "sink_arn"),
resource.TestCheckResourceAttrPair(dataSourceName, "sink_arn", resourceName, "sink_arn"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsPercent, "1"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsKey1, acctest.CtValue1),
),
Expand All @@ -59,6 +59,7 @@ func testAccObservabilityAccessManagerLinkDataSource_logGroupConfiguration(t *te
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
dataSourceName := "data.aws_oam_link.test"
resourceName := "aws_oam_link.test"
filter := "LogGroupName LIKE 'aws/lambda/%' OR LogGroupName LIKE 'AWSLogs%'"

resource.Test(t, resource.TestCase{
Expand All @@ -74,17 +75,17 @@ func testAccObservabilityAccessManagerLinkDataSource_logGroupConfiguration(t *te
{
Config: testAccLinkDataSourceConfig_logGroupConfiguration(rName, filter),
Check: resource.ComposeTestCheckFunc(
acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)),
resource.TestCheckResourceAttrSet(dataSourceName, "label"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN),
resource.TestCheckResourceAttrPair(dataSourceName, "label", resourceName, "label"),
resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.log_group_configuration.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.log_group_configuration.0.filter", filter),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.metric_configuration.#", "0"),
resource.TestCheckResourceAttrSet(dataSourceName, "link_id"),
resource.TestCheckResourceAttrPair(dataSourceName, "link_id", resourceName, "link_id"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.0", "AWS::Logs::LogGroup"),
resource.TestCheckResourceAttrSet(dataSourceName, "sink_arn"),
resource.TestCheckResourceAttrPair(dataSourceName, "sink_arn", resourceName, "sink_arn"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsPercent, "1"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsKey1, acctest.CtValue1),
),
Expand All @@ -101,6 +102,7 @@ func testAccObservabilityAccessManagerLinkDataSource_metricConfiguration(t *test
ctx := acctest.Context(t)
rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
dataSourceName := "data.aws_oam_link.test"
resourceName := "aws_oam_link.test"
filter := "Namespace IN ('AWS/EC2', 'AWS/ELB', 'AWS/S3')"

resource.Test(t, resource.TestCase{
Expand All @@ -116,17 +118,17 @@ func testAccObservabilityAccessManagerLinkDataSource_metricConfiguration(t *test
{
Config: testAccLinkDataSourceConfig_metricConfiguration(rName, filter),
Check: resource.ComposeTestCheckFunc(
acctest.MatchResourceAttrRegionalARN(ctx, dataSourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)),
resource.TestCheckResourceAttrSet(dataSourceName, "label"),
resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN),
resource.TestCheckResourceAttrPair(dataSourceName, "label", resourceName, "label"),
resource.TestCheckResourceAttr(dataSourceName, "label_template", "$AccountName"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.log_group_configuration.#", "0"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.metric_configuration.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "link_configuration.0.metric_configuration.0.filter", filter),
resource.TestCheckResourceAttrSet(dataSourceName, "link_id"),
resource.TestCheckResourceAttrPair(dataSourceName, "link_id", resourceName, "link_id"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "resource_types.0", "AWS::CloudWatch::Metric"),
resource.TestCheckResourceAttrSet(dataSourceName, "sink_arn"),
resource.TestCheckResourceAttrPair(dataSourceName, "sink_arn", resourceName, "sink_arn"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsPercent, "1"),
resource.TestCheckResourceAttr(dataSourceName, acctest.CtTagsKey1, acctest.CtValue1),
),
Expand Down Expand Up @@ -158,7 +160,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -182,15 +184,19 @@ resource "aws_oam_sink_policy" "test" {
resource "aws_oam_link" "test" {
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
key1 = "value1"
}
depends_on = [
aws_oam_sink_policy.test
]
}
data aws_oam_link "test" {
link_identifier = aws_oam_link.test.id
link_identifier = aws_oam_link.test.arn
}
`, rName))
}
Expand Down Expand Up @@ -218,7 +224,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand Down Expand Up @@ -247,15 +253,19 @@ resource "aws_oam_link" "test" {
}
}
resource_types = ["AWS::Logs::LogGroup"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
key1 = "value1"
}
depends_on = [
aws_oam_sink_policy.test
]
}
data aws_oam_link "test" {
link_identifier = aws_oam_link.test.id
link_identifier = aws_oam_link.test.arn
}
`, rName, filter))
}
Expand Down Expand Up @@ -283,7 +293,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand Down Expand Up @@ -312,15 +322,19 @@ resource "aws_oam_link" "test" {
}
}
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
key1 = "value1"
}
depends_on = [
aws_oam_sink_policy.test
]
}
data aws_oam_link "test" {
link_identifier = aws_oam_link.test.id
link_identifier = aws_oam_link.test.arn
}
`, rName, filter))
}
50 changes: 37 additions & 13 deletions internal/service/oam/link_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func testAccObservabilityAccessManagerLink_basic(t *testing.T) {
Config: testAccLinkConfig_basic(rName),
Check: resource.ComposeTestCheckFunc(
testAccCheckLinkExists(ctx, resourceName, &link),
acctest.MatchResourceAttrRegionalARN(ctx, resourceName, names.AttrARN, "oam", regexache.MustCompile(`link/.+$`)),
acctest.CheckResourceAttrRegionalARNFormat(ctx, resourceName, names.AttrARN, "oam", "link/{link_id}"),
resource.TestCheckResourceAttrSet(resourceName, "label"),
resource.TestCheckResourceAttr(resourceName, "label_template", "$AccountName"),
resource.TestCheckResourceAttrSet(resourceName, "link_id"),
Expand Down Expand Up @@ -396,7 +396,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -420,7 +420,11 @@ resource "aws_oam_sink_policy" "test" {
resource "aws_oam_link" "test" {
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName))
}
Expand Down Expand Up @@ -448,7 +452,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -472,7 +476,11 @@ resource "aws_oam_sink_policy" "test" {
resource "aws_oam_link" "test" {
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric", "AWS::Logs::LogGroup"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName))
}
Expand Down Expand Up @@ -500,7 +508,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -524,10 +532,14 @@ resource "aws_oam_sink_policy" "test" {
resource "aws_oam_link" "test" {
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
%[2]q = %[3]q
}
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName, tag1Key, tag1Value))
}
Expand Down Expand Up @@ -555,7 +567,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -579,12 +591,16 @@ resource "aws_oam_sink_policy" "test" {
resource "aws_oam_link" "test" {
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
%[2]q = %[3]q
%[4]q = %[5]q
}
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName, tag1Key, tag1Value, tag2Key, tag2Value))
}
Expand Down Expand Up @@ -612,7 +628,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand Down Expand Up @@ -641,7 +657,11 @@ resource "aws_oam_link" "test" {
}
}
resource_types = ["AWS::Logs::LogGroup"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName, filter))
}
Expand Down Expand Up @@ -669,7 +689,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand Down Expand Up @@ -698,7 +718,11 @@ resource "aws_oam_link" "test" {
}
}
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
depends_on = [
aws_oam_sink_policy.test
]
}
`, rName, filter))
}
10 changes: 6 additions & 4 deletions internal/service/oam/links_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ resource "aws_oam_sink" "test" {
resource "aws_oam_sink_policy" "test" {
provider = "awsalternate"
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
policy = jsonencode({
Version = "2012-10-17"
Statement = [
Expand All @@ -89,15 +89,17 @@ resource "aws_oam_sink_policy" "test" {
}
resource "aws_oam_link" "test" {
depends_on = [aws_oam_sink_policy.test]
label_template = "$AccountName"
resource_types = ["AWS::CloudWatch::Metric"]
sink_identifier = aws_oam_sink.test.id
sink_identifier = aws_oam_sink.test.arn
tags = {
key1 = "value1"
}
depends_on = [
aws_oam_sink_policy.test
]
}
data aws_oam_links "test" {
Expand Down
Loading

0 comments on commit 060a954

Please sign in to comment.