Skip to content

Commit 7ab9aa1

Browse files
committed
Add missing filter() tests
Client-side filtering tests are missing for: - database_db_system_shapes_data_source - database_db_versions_data_source - identity_api_keys_data_source - load_balancer_backends_data_source - object_storage_buckets_data_source - object_storage_objects_data_source
1 parent b5a2243 commit 7ab9aa1

6 files changed

+234
-29
lines changed

provider/database_db_system_shapes_data_source_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package provider
44

55
import (
6+
"regexp"
67
"testing"
78

89
"github.com/hashicorp/terraform/helper/resource"
@@ -46,6 +47,38 @@ func (s *DatabaseDBSystemShapeTestSuite) TestAccDatasourceDatabaseDBSystemShape_
4647
resource.TestCheckResourceAttrSet(s.ResourceName, "db_system_shapes.0.available_core_count"),
4748
),
4849
},
50+
// Client-side filtering.
51+
{
52+
Config: s.Config + `
53+
data "oci_database_db_system_shapes" "t" {
54+
availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
55+
compartment_id = "${var.compartment_id}"
56+
filter {
57+
name = "shape"
58+
values = ["non-existent-db-shape"]
59+
}
60+
}`,
61+
Check: resource.ComposeTestCheckFunc(
62+
resource.TestCheckResourceAttr(s.ResourceName, "db_system_shapes.#", "0"),
63+
),
64+
},
65+
{
66+
Config: s.Config + `
67+
data "oci_database_db_system_shapes" "t" {
68+
availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
69+
compartment_id = "${var.compartment_id}"
70+
filter {
71+
name = "shape"
72+
values = ["VM\\.Standard.+"]
73+
regex = true
74+
}
75+
}`,
76+
Check: resource.ComposeTestCheckFunc(
77+
resource.TestMatchResourceAttr(s.ResourceName, "db_system_shapes.#", regexp.MustCompile("[1-9][0-9]*")), // At least one image returned.
78+
resource.TestMatchResourceAttr(s.ResourceName, "db_system_shapes.0.name", regexp.MustCompile(`VM\.Standard.+`)),
79+
resource.TestMatchResourceAttr(s.ResourceName, "db_system_shapes.0.shape", regexp.MustCompile(`VM\.Standard.+`)),
80+
),
81+
},
4982
},
5083
},
5184
)

provider/database_db_versions_data_source_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,37 @@ func (s *DatabaseDBVersionTestSuite) TestAccDatasourceDatabaseDBVersion_basic()
5555
resource.TestCheckResourceAttr(s.ResourceName, "db_system_shape", "BM.DenseIO1.36"),
5656
),
5757
},
58+
// Client-side filtering.
59+
{
60+
Config: s.Config + `
61+
data "oci_database_db_versions" "t" {
62+
compartment_id = "${var.compartment_id}"
63+
db_system_shape = "BM.DenseIO1.36"
64+
filter {
65+
name = "version"
66+
values = ["12\\.\\d+\\.\\d+\\.\\d+"]
67+
regex = true
68+
}
69+
}`,
70+
Check: resource.ComposeTestCheckFunc(
71+
resource.TestMatchResourceAttr(s.ResourceName, "db_versions.#", regexp.MustCompile("[1-9][0-9]*")), // At least one version returned.
72+
resource.TestMatchResourceAttr(s.ResourceName, "db_versions.0.version", regexp.MustCompile(`12\.\d+\.\d+\.\d+`)),
73+
),
74+
},
75+
{
76+
Config: s.Config + `
77+
data "oci_database_db_versions" "t" {
78+
compartment_id = "${var.compartment_id}"
79+
db_system_shape = "BM.DenseIO1.36"
80+
filter {
81+
name = "version"
82+
values = ["non-existent-version"]
83+
}
84+
}`,
85+
Check: resource.ComposeTestCheckFunc(
86+
resource.TestCheckResourceAttr(s.ResourceName, "db_versions.#", "0"),
87+
),
88+
},
5889
},
5990
},
6091
)

provider/identity_api_keys_data_source_test.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@ func (s *DatasourceIdentityAPIKeysTestSuite) SetupTest() {
3131
resource "oci_identity_api_key" "t" {
3232
user_id = "${oci_identity_user.t.id}"
3333
key_value = <<EOF
34-
`+api_key+`
34+
`+apiKey+`
35+
EOF
36+
}
37+
38+
resource "oci_identity_api_key" "u" {
39+
user_id = "${oci_identity_user.t.id}"
40+
key_value = <<EOF
41+
`+apiKey2+`
3542
EOF
3643
}`, map[string]string{"userName": "user_" + timestamp()})
3744
s.ResourceName = "data.oci_identity_api_keys.t"
@@ -50,14 +57,28 @@ func (s *DatasourceIdentityAPIKeysTestSuite) TestAccDatasourceIdentityAPIKeys_ba
5057
{
5158
Config: s.Config + `
5259
data "oci_identity_api_keys" "t" {
53-
user_id = "${oci_identity_user.t.id}"
60+
user_id = "${oci_identity_user.t.id}"
61+
}`,
62+
Check: resource.ComposeTestCheckFunc(
63+
resource.TestCheckResourceAttr(s.ResourceName, "api_keys.#", "2"),
64+
),
65+
},
66+
// Client-side filtering.
67+
{
68+
Config: s.Config + `
69+
data "oci_identity_api_keys" "t" {
70+
user_id = "${oci_identity_user.t.id}"
71+
filter {
72+
name = "id"
73+
values = ["${oci_identity_api_key.t.id}"]
74+
}
5475
}`,
5576
Check: resource.ComposeTestCheckFunc(
5677
resource.TestCheckResourceAttr(s.ResourceName, "api_keys.#", "1"),
57-
resource.TestCheckResourceAttrSet(s.ResourceName, "api_keys.0.id"),
58-
resource.TestCheckResourceAttrSet(s.ResourceName, "api_keys.0.fingerprint"),
59-
resource.TestCheckResourceAttr(s.ResourceName, "api_keys.0.key_value", api_key),
60-
resource.TestCheckResourceAttrSet(s.ResourceName, "api_keys.0.time_created"),
78+
TestCheckResourceAttributesEqual(s.ResourceName, "api_keys.0.id", "oci_identity_api_key.t", "id"),
79+
TestCheckResourceAttributesEqual(s.ResourceName, "api_keys.0.fingerprint", "oci_identity_api_key.t", "fingerprint"),
80+
resource.TestCheckResourceAttr(s.ResourceName, "api_keys.0.key_value", apiKey),
81+
TestCheckResourceAttributesEqual(s.ResourceName, "api_keys.0.time_created", "oci_identity_api_key.t", "time_created"),
6182
// TODO: This field is not being returned by the service call but is showing up in the datasource
6283
//resource.TestCheckNoResourceAttr(s.ResourceName, "api_keys.0.inactive_status"),
6384
resource.TestCheckResourceAttr(s.ResourceName, "api_keys.0.state", string(identity.ApiKeyLifecycleStateActive)),

provider/load_balancer_backends_data_source_test.go

Lines changed: 69 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
package provider
44

55
import (
6+
"fmt"
67
"testing"
78

89
"github.com/hashicorp/terraform/helper/resource"
10+
"github.com/hashicorp/terraform/terraform"
911
)
1012

1113
func TestAccDatasourceLoadBalancerBackends_basic(t *testing.T) {
@@ -62,11 +64,6 @@ func TestAccDatasourceLoadBalancerBackends_basic(t *testing.T) {
6264
drain = false
6365
offline = false
6466
weight = 1
65-
}
66-
67-
data "oci_load_balancer_backends" "t" {
68-
load_balancer_id = "${oci_load_balancer.t.id}"
69-
backendset_name = "${oci_load_balancer_backendset.t.name}"
7067
}`
7168

7269
resourceName := "data.oci_load_balancer_backends.t"
@@ -81,20 +78,78 @@ func TestAccDatasourceLoadBalancerBackends_basic(t *testing.T) {
8178
Config: config,
8279
},
8380
{
84-
Config: config,
81+
Config: config + `
82+
data "oci_load_balancer_backends" "t" {
83+
load_balancer_id = "${oci_load_balancer.t.id}"
84+
backendset_name = "${oci_load_balancer_backendset.t.name}"
85+
}`,
8586
Check: resource.ComposeAggregateTestCheckFunc(
86-
resource.TestCheckResourceAttrSet(resourceName, "load_balancer_id"),
87-
resource.TestCheckResourceAttrSet(resourceName, "backendset_name"),
87+
TestCheckResourceAttributesEqual(resourceName, "load_balancer_id", "oci_load_balancer.t", "id"),
88+
TestCheckResourceAttributesEqual(resourceName, "backendset_name", "oci_load_balancer_backendset.t", "name"),
8889
resource.TestCheckResourceAttr(resourceName, "backends.#", "1"),
89-
resource.TestCheckResourceAttr(resourceName, "backends.0.ip_address", "1.2.3.4"),
90-
resource.TestCheckResourceAttr(resourceName, "backends.0.port", "8080"),
91-
resource.TestCheckResourceAttr(resourceName, "backends.0.backup", "false"),
92-
resource.TestCheckResourceAttr(resourceName, "backends.0.drain", "false"),
93-
resource.TestCheckResourceAttr(resourceName, "backends.0.offline", "false"),
94-
resource.TestCheckResourceAttr(resourceName, "backends.0.weight", "1"),
90+
TestCheckResourceAttributesEqual(resourceName, "backends.0.ip_address", "oci_load_balancer_backend.t", "ip_address"),
91+
TestCheckResourceAttributesEqual(resourceName, "backends.0.port", "oci_load_balancer_backend.t", "port"),
92+
TestCheckResourceAttributesEqual(resourceName, "backends.0.backup", "oci_load_balancer_backend.t", "backup"),
93+
TestCheckResourceAttributesEqual(resourceName, "backends.0.drain", "oci_load_balancer_backend.t", "drain"),
94+
TestCheckResourceAttributesEqual(resourceName, "backends.0.offline", "oci_load_balancer_backend.t", "offline"),
95+
TestCheckResourceAttributesEqual(resourceName, "backends.0.weight", "oci_load_balancer_backend.t", "weight"),
9596
resource.TestCheckResourceAttrSet(resourceName, "backends.0.name"),
97+
validateBackendName(resourceName),
98+
),
99+
},
100+
// Client-side filtering.
101+
{
102+
Config: config + `
103+
resource "oci_load_balancer_backend" "u" {
104+
load_balancer_id = "${oci_load_balancer.t.id}"
105+
backendset_name = "${oci_load_balancer_backendset.t.name}"
106+
ip_address = "5.6.7.8"
107+
port = 80
108+
backup = false
109+
drain = false
110+
offline = false
111+
weight = 1
112+
}
113+
114+
data "oci_load_balancer_backends" "t" {
115+
load_balancer_id = "${oci_load_balancer.t.id}"
116+
backendset_name = "${oci_load_balancer_backendset.t.name}"
117+
filter {
118+
name = "ip_address"
119+
values = ["1.2.3.4"]
120+
}
121+
}`,
122+
Check: resource.ComposeAggregateTestCheckFunc(
123+
TestCheckResourceAttributesEqual(resourceName, "load_balancer_id", "oci_load_balancer.t", "id"),
124+
TestCheckResourceAttributesEqual(resourceName, "backendset_name", "oci_load_balancer_backendset.t", "name"),
125+
resource.TestCheckResourceAttr(resourceName, "backends.#", "1"),
126+
TestCheckResourceAttributesEqual(resourceName, "backends.0.ip_address", "oci_load_balancer_backend.t", "ip_address"),
127+
TestCheckResourceAttributesEqual(resourceName, "backends.0.port", "oci_load_balancer_backend.t", "port"),
128+
validateBackendName(resourceName),
96129
),
97130
},
98131
},
99132
})
100133
}
134+
135+
func validateBackendName(resourceName string) resource.TestCheckFunc {
136+
return func(s *terraform.State) error {
137+
ipAddress, err := fromInstanceState(s, resourceName, "backends.0.ip_address")
138+
if err != nil {
139+
return err
140+
}
141+
port, err := fromInstanceState(s, resourceName, "backends.0.port")
142+
if err != nil {
143+
return err
144+
}
145+
actualName, err := fromInstanceState(s, resourceName, "backends.0.name")
146+
if err != nil {
147+
return err
148+
}
149+
expectedName := ipAddress + ":" + port
150+
if expectedName != actualName {
151+
return fmt.Errorf("invalid name: expected %s, got %s", expectedName, actualName)
152+
}
153+
return nil
154+
}
155+
}

provider/object_storage_buckets_data_source_test.go

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,21 @@ func (s *DatasourceObjectstorageBucketSummaryTestSuite) SetupTest() {
2626
s.Config = legacyTestProviderConfig() + s.TokenFn(`
2727
data "oci_objectstorage_namespace" "t" {
2828
}
29-
3029
resource "oci_objectstorage_bucket" "t" {
3130
compartment_id = "${var.compartment_id}"
3231
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
3332
name = "{{.token}}"
34-
}`, nil)
33+
}
34+
resource "oci_objectstorage_bucket" "u" {
35+
compartment_id = "${var.compartment_id}"
36+
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
37+
name = "{{.otherToken}}"
38+
}`, map[string]string{"otherToken": s.Token + "-2"})
3539
s.ResourceName = "data.oci_objectstorage_bucket_summaries.t"
3640
}
3741

3842
func (s *DatasourceObjectstorageBucketSummaryTestSuite) TestAccDatasourceObjectstorageBucketSummaries_basic() {
43+
compartmentID := getCompartmentIDForLegacyTests()
3944
resource.Test(s.T(), resource.TestCase{
4045
PreventPostDestroyRefresh: true,
4146
Providers: s.Providers,
@@ -45,19 +50,55 @@ func (s *DatasourceObjectstorageBucketSummaryTestSuite) TestAccDatasourceObjects
4550
ImportStateVerify: true,
4651
Config: s.Config,
4752
},
53+
// Client-side filtering.
54+
{
55+
Config: s.Config + s.TokenFn(`
56+
data "oci_objectstorage_bucket_summaries" "t" {
57+
compartment_id = "${var.compartment_id}"
58+
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
59+
filter {
60+
name = "name"
61+
values = ["{{.token}}"]
62+
}
63+
}`, nil),
64+
Check: resource.ComposeTestCheckFunc(
65+
resource.TestCheckResourceAttr(s.ResourceName, "compartment_id", compartmentID),
66+
TestCheckResourceAttributesEqual(s.ResourceName, "namespace", "data.oci_objectstorage_namespace.t", "namespace"),
67+
resource.TestCheckResourceAttr(s.ResourceName, "bucket_summaries.#", "1"),
68+
TestCheckResourceAttributesEqual(s.ResourceName, "bucket_summaries.0.name", "oci_objectstorage_bucket.t", "name"),
69+
),
70+
},
71+
{
72+
Config: s.Config + s.TokenFn(`
73+
data "oci_objectstorage_bucket_summaries" "t" {
74+
compartment_id = "${var.compartment_id}"
75+
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
76+
filter {
77+
name = "name"
78+
values = ["{{.otherToken}}"]
79+
}
80+
}`, map[string]string{"otherToken": s.Token + "-2"}),
81+
Check: resource.ComposeTestCheckFunc(
82+
resource.TestCheckResourceAttr(s.ResourceName, "compartment_id", compartmentID),
83+
TestCheckResourceAttributesEqual(s.ResourceName, "namespace", "data.oci_objectstorage_namespace.t", "namespace"),
84+
resource.TestCheckResourceAttr(s.ResourceName, "bucket_summaries.#", "1"),
85+
TestCheckResourceAttributesEqual(s.ResourceName, "bucket_summaries.0.name", "oci_objectstorage_bucket.u", "name"),
86+
),
87+
},
4888
{
4989
Config: s.Config + `
5090
data "oci_objectstorage_bucket_summaries" "t" {
5191
compartment_id = "${var.compartment_id}"
5292
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
93+
filter {
94+
name = "name"
95+
values = ["non-existent-bucket"]
96+
}
5397
}`,
5498
Check: resource.ComposeTestCheckFunc(
55-
resource.TestCheckResourceAttrSet(s.ResourceName, "compartment_id"),
56-
resource.TestCheckResourceAttrSet(s.ResourceName, "namespace"),
57-
resource.TestCheckResourceAttrSet(s.ResourceName, "bucket_summaries.#"),
58-
// todo: these assertions wont be reliable until data sources support filters
59-
//resource.TestCheckResourceAttr(s.ResourceName, "bucket_summaries.#", "1"),
60-
//resource.TestCheckResourceAttr(s.ResourceName, "bucket_summaries.0.name", s.Token),
99+
resource.TestCheckResourceAttr(s.ResourceName, "compartment_id", compartmentID),
100+
TestCheckResourceAttributesEqual(s.ResourceName, "namespace", "data.oci_objectstorage_namespace.t", "namespace"),
101+
resource.TestCheckResourceAttr(s.ResourceName, "bucket_summaries.#", "0"),
61102
),
62103
},
63104
},

provider/object_storage_objects_data_source_test.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ func (s *DatasourceObjectstorageObjectTestSuite) SetupTest() {
3939
bucket = "${oci_objectstorage_bucket.t.name}"
4040
object = "-tf-object"
4141
content = "123"
42+
}
43+
44+
resource "oci_objectstorage_object" "u" {
45+
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
46+
bucket = "${oci_objectstorage_bucket.t.name}"
47+
object = "-tf-object2"
48+
content = "456"
4249
}`, nil)
4350

4451
s.ResourceName = "data.oci_objectstorage_objects.t"
@@ -64,7 +71,24 @@ func (s *DatasourceObjectstorageObjectTestSuite) TestAccDatasourceObjectstorageO
6471
bucket = "${oci_objectstorage_bucket.t.name}"
6572
}`,
6673
Check: resource.ComposeTestCheckFunc(
67-
resource.TestCheckResourceAttrSet(s.ResourceName, "namespace"),
74+
TestCheckResourceAttributesEqual(s.ResourceName, "namespace", "data.oci_objectstorage_namespace.t", "namespace"),
75+
resource.TestCheckResourceAttr(s.ResourceName, "bucket", s.Token),
76+
resource.TestCheckResourceAttr(s.ResourceName, "objects.#", "2"),
77+
),
78+
},
79+
// Client-side filtering.
80+
{
81+
Config: s.Config + `
82+
data "oci_objectstorage_objects" "t" {
83+
namespace = "${data.oci_objectstorage_namespace.t.namespace}"
84+
bucket = "${oci_objectstorage_bucket.t.name}"
85+
filter {
86+
name = "name"
87+
values = ["-tf-object"]
88+
}
89+
}`,
90+
Check: resource.ComposeTestCheckFunc(
91+
TestCheckResourceAttributesEqual(s.ResourceName, "namespace", "data.oci_objectstorage_namespace.t", "namespace"),
6892
resource.TestCheckResourceAttr(s.ResourceName, "bucket", s.Token),
6993
resource.TestCheckResourceAttr(s.ResourceName, "objects.#", "1"),
7094
resource.TestCheckResourceAttr(s.ResourceName, "objects.0.name", "-tf-object"),

0 commit comments

Comments
 (0)