Skip to content

Commit b960cb6

Browse files
committed
TUN-9253: Fix list cloudflared tunnels optional fields
Previously, fields were parsed before checking if they were set, which could lead to empty value parsing. This change moves parsing after validation to ensure the fields are present.
1 parent 0019884 commit b960cb6

File tree

6 files changed

+120
-13
lines changed

6 files changed

+120
-13
lines changed

internal/services/zero_trust_tunnel_cloudflared/data_source_model.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,6 @@ func (m *ZeroTrustTunnelCloudflaredDataSourceModel) toReadParams(_ context.Conte
4545
}
4646

4747
func (m *ZeroTrustTunnelCloudflaredDataSourceModel) toListParams(_ context.Context) (params zero_trust.TunnelCloudflaredListParams, diags diag.Diagnostics) {
48-
mFilterWasActiveAt, errs := m.Filter.WasActiveAt.ValueRFC3339Time()
49-
diags.Append(errs...)
50-
mFilterWasInactiveAt, errs := m.Filter.WasInactiveAt.ValueRFC3339Time()
51-
diags.Append(errs...)
52-
5348
params = zero_trust.TunnelCloudflaredListParams{
5449
AccountID: cloudflare.F(m.AccountID.ValueString()),
5550
}
@@ -76,10 +71,18 @@ func (m *ZeroTrustTunnelCloudflaredDataSourceModel) toListParams(_ context.Conte
7671
params.UUID = cloudflare.F(m.Filter.UUID.ValueString())
7772
}
7873
if !m.Filter.WasActiveAt.IsNull() {
79-
params.WasActiveAt = cloudflare.F(mFilterWasActiveAt)
74+
mFilterWasActiveAt, errs := m.Filter.WasActiveAt.ValueRFC3339Time()
75+
diags.Append(errs...)
76+
if errs == nil {
77+
params.WasActiveAt = cloudflare.F(mFilterWasActiveAt)
78+
}
8079
}
8180
if !m.Filter.WasInactiveAt.IsNull() {
82-
params.WasInactiveAt = cloudflare.F(mFilterWasInactiveAt)
81+
mFilterWasInactiveAt, errs := m.Filter.WasInactiveAt.ValueRFC3339Time()
82+
diags.Append(errs...)
83+
if errs == nil {
84+
params.WasInactiveAt = cloudflare.F(mFilterWasInactiveAt)
85+
}
8386
}
8487

8588
return
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package zero_trust_tunnel_cloudflared_test
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"testing"
7+
8+
"github.com/cloudflare/terraform-provider-cloudflare/internal/acctest"
9+
"github.com/cloudflare/terraform-provider-cloudflare/internal/utils"
10+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
11+
)
12+
13+
func TestAccCloudflareTunnelDatasource_Basic(t *testing.T) {
14+
if os.Getenv("CLOUDFLARE_API_TOKEN") != "" {
15+
t.Setenv("CLOUDFLARE_API_TOKEN", "")
16+
}
17+
18+
accID := os.Getenv("CLOUDFLARE_ACCOUNT_ID")
19+
rnd := utils.GenerateRandomResourceName()
20+
name := fmt.Sprintf("data.cloudflare_zero_trust_tunnel_cloudflared.%s", rnd)
21+
22+
resource.Test(t, resource.TestCase{
23+
PreCheck: func() {
24+
acctest.TestAccPreCheck(t)
25+
},
26+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
27+
Steps: []resource.TestStep{
28+
{
29+
Config: testAccCheckCloudflareTunnelDatasourceBasic(accID, rnd),
30+
Check: resource.ComposeTestCheckFunc(
31+
resource.TestCheckResourceAttrSet(name, "name"),
32+
),
33+
},
34+
},
35+
})
36+
}
37+
38+
func testAccCheckCloudflareTunnelDatasourceBasic(accID, name string) string {
39+
return acctest.LoadTestCase("datasource_basic.tf", accID, name)
40+
}

internal/services/zero_trust_tunnel_cloudflared/list_data_source_model.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ type ZeroTrustTunnelCloudflaredsDataSourceModel struct {
3434
}
3535

3636
func (m *ZeroTrustTunnelCloudflaredsDataSourceModel) toListParams(_ context.Context) (params zero_trust.TunnelCloudflaredListParams, diags diag.Diagnostics) {
37-
mWasActiveAt, errs := m.WasActiveAt.ValueRFC3339Time()
38-
diags.Append(errs...)
39-
mWasInactiveAt, errs := m.WasInactiveAt.ValueRFC3339Time()
40-
diags.Append(errs...)
4137

4238
params = zero_trust.TunnelCloudflaredListParams{
4339
AccountID: cloudflare.F(m.AccountID.ValueString()),
@@ -65,10 +61,18 @@ func (m *ZeroTrustTunnelCloudflaredsDataSourceModel) toListParams(_ context.Cont
6561
params.UUID = cloudflare.F(m.UUID.ValueString())
6662
}
6763
if !m.WasActiveAt.IsNull() {
68-
params.WasActiveAt = cloudflare.F(mWasActiveAt)
64+
mWasActiveAt, errs := m.WasActiveAt.ValueRFC3339Time()
65+
diags.Append(errs...)
66+
if errs == nil {
67+
params.WasActiveAt = cloudflare.F(mWasActiveAt)
68+
}
6969
}
7070
if !m.WasInactiveAt.IsNull() {
71-
params.WasInactiveAt = cloudflare.F(mWasInactiveAt)
71+
mWasInactiveAt, errs := m.WasInactiveAt.ValueRFC3339Time()
72+
diags.Append(errs...)
73+
if errs == nil {
74+
params.WasInactiveAt = cloudflare.F(mWasInactiveAt)
75+
}
7276
}
7377

7478
return
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package zero_trust_tunnel_cloudflared_test
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"testing"
7+
8+
"github.com/cloudflare/terraform-provider-cloudflare/internal/acctest"
9+
"github.com/cloudflare/terraform-provider-cloudflare/internal/utils"
10+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
11+
)
12+
13+
func TestAccCloudflareTunnelDatasource_List(t *testing.T) {
14+
if os.Getenv("CLOUDFLARE_API_TOKEN") != "" {
15+
t.Setenv("CLOUDFLARE_API_TOKEN", "")
16+
}
17+
18+
accID := os.Getenv("CLOUDFLARE_ACCOUNT_ID")
19+
rnd := utils.GenerateRandomResourceName()
20+
name := fmt.Sprintf("data.cloudflare_zero_trust_tunnel_cloudflareds.%s", rnd)
21+
22+
resource.Test(t, resource.TestCase{
23+
PreCheck: func() {
24+
acctest.TestAccPreCheck(t)
25+
},
26+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
27+
Steps: []resource.TestStep{
28+
{
29+
Config: testAccCheckCloudflareTunnelDatasourceList(accID, rnd),
30+
Check: resource.ComposeTestCheckFunc(
31+
resource.TestCheckResourceAttrSet(name, "result"),
32+
),
33+
},
34+
},
35+
})
36+
}
37+
38+
func testAccCheckCloudflareTunnelDatasourceList(accID, name string) string {
39+
return acctest.LoadTestCase("datasource_list.tf", accID, name)
40+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
resource "cloudflare_zero_trust_tunnel_cloudflared" "%[2]s" {
2+
account_id = "%[1]s"
3+
name = "%[2]s"
4+
tunnel_secret = "AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg="
5+
}
6+
7+
data "cloudflare_zero_trust_tunnel_cloudflared" "%[2]s" {
8+
account_id = "%[1]s"
9+
tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.%[2]s.id
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
resource "cloudflare_zero_trust_tunnel_cloudflared" "%[2]s" {
2+
account_id = "%[1]s"
3+
name = "%[2]s"
4+
tunnel_secret = "AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg="
5+
}
6+
7+
data "cloudflare_zero_trust_tunnel_cloudflareds" "%[2]s" {
8+
account_id = "%[1]s"
9+
uuid = cloudflare_zero_trust_tunnel_cloudflared.%[2]s.id
10+
}

0 commit comments

Comments
 (0)