@@ -5,25 +5,47 @@ package testacc
55import (
66 "testing"
77
8- accconfig "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config"
9-
8+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/assert"
9+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/assert/resourceshowoutputassert"
10+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config"
1011 "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config/datasourcemodel"
12+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config/model"
13+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/bettertestspoc/config/providermodel"
1114 "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance/helpers/random"
15+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/provider/previewfeatures"
16+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/provider/resources"
17+ "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
1218 "github.com/hashicorp/terraform-plugin-testing/helper/resource"
1319 "github.com/hashicorp/terraform-plugin-testing/tfversion"
1420)
1521
1622func TestAcc_Listings_BasicUseCase_DifferentFiltering (t * testing.T ) {
17- // We use a random prefix that does not exist to make assertions deterministic.
18- prefix := "tf_acc_no_such_listing_" + random .AlphaN (8 )
23+ prefix := random .AlphaN (4 )
24+ idOne := testClient ().Ids .RandomAccountObjectIdentifierWithPrefix (prefix + "1" )
25+ idTwo := testClient ().Ids .RandomAccountObjectIdentifierWithPrefix (prefix + "2" )
26+ idThree := testClient ().Ids .RandomAccountObjectIdentifier ()
27+
28+ manifest , _ := testClient ().Listing .BasicManifestWithUnquotedValues (t )
29+
30+ // Listings without share/app package cannot be published
31+ listingModel1 := model .ListingWithInlineManifest ("listing_1" , idOne .Name (), manifest ).WithPublish ("false" )
32+ listingModel2 := model .ListingWithInlineManifest ("listing_2" , idTwo .Name (), manifest ).WithPublish ("false" )
33+ listingModel3 := model .ListingWithInlineManifest ("listing_3" , idThree .Name (), manifest ).WithPublish ("false" )
34+
35+ listingsLike := datasourcemodel .Listings ("like" ).
36+ WithLike (idOne .Name ()).
37+ WithDependsOn (listingModel1 .ResourceReference (), listingModel2 .ResourceReference (), listingModel3 .ResourceReference ())
1938
20- listingsLike := datasourcemodel .Listings ("test" ).
21- WithLike (prefix )
2239 listingsStartsWith := datasourcemodel .Listings ("test" ).
23- WithStartsWith (prefix )
40+ WithStartsWith (prefix ).
41+ WithDependsOn (listingModel1 .ResourceReference (), listingModel2 .ResourceReference (), listingModel3 .ResourceReference ())
42+
2443 listingsLimit := datasourcemodel .Listings ("test" ).
25- WithRowsAndFrom (1 , "" ).
26- WithStartsWith (prefix )
44+ WithRowsAndFrom (1 , prefix ).
45+ WithDependsOn (listingModel1 .ResourceReference (), listingModel2 .ResourceReference (), listingModel3 .ResourceReference ())
46+
47+ providerModel := providermodel .SnowflakeProvider ().
48+ WithPreviewFeaturesEnabled (string (previewfeatures .ListingsDatasource ))
2749
2850 resource .Test (t , resource.TestCase {
2951 ProtoV6ProviderFactories : TestAccProtoV6ProviderFactories ,
@@ -32,27 +54,142 @@ func TestAcc_Listings_BasicUseCase_DifferentFiltering(t *testing.T) {
3254 },
3355 Steps : []resource.TestStep {
3456 {
35- Config : accconfig .FromModels (t , listingsLike ),
57+ Config : config .FromModels (t , providerModel , listingModel1 , listingModel2 , listingModel3 , listingsLike ),
3658 Check : resource .ComposeTestCheckFunc (
37- resource .TestCheckResourceAttr (listingsLike .DatasourceReference (), "listings.#" , "0" ),
59+ resource .TestCheckResourceAttr (listingsLike .DatasourceReference (), "listings.#" , "1" ),
60+ resource .TestCheckResourceAttr (listingsLike .DatasourceReference (), "listings.0.show_output.#" , "1" ),
61+ resource .TestCheckResourceAttr (listingsLike .DatasourceReference (), "listings.0.show_output.0.name" , idOne .Name ()),
3862 ),
3963 },
4064 {
41- Config : accconfig .FromModels (t , listingsStartsWith ),
65+ Config : config .FromModels (t , providerModel , listingModel1 , listingModel2 , listingModel3 , listingsStartsWith ),
4266 Check : resource .ComposeTestCheckFunc (
43- resource .TestCheckResourceAttr (listingsStartsWith .DatasourceReference (), "listings.#" , "0 " ),
67+ resource .TestCheckResourceAttr (listingsStartsWith .DatasourceReference (), "listings.#" , "2 " ),
4468 ),
4569 },
4670 {
47- Config : accconfig .FromModels (t , listingsLimit ),
71+ Config : config .FromModels (t , providerModel , listingModel1 , listingModel2 , listingModel3 , listingsLimit ),
4872 Check : resource .ComposeTestCheckFunc (
49- resource .TestCheckResourceAttr (listingsLimit .DatasourceReference (), "listings.#" , "0 " ),
73+ resource .TestCheckResourceAttr (listingsLimit .DatasourceReference (), "listings.#" , "1 " ),
5074 ),
5175 },
5276 },
5377 })
5478}
5579
5680func TestAcc_Listings_CompleteUseCase (t * testing.T ) {
57- t .Skip ("Skipping: requires existing Marketplace listings to assert fields; enable when environment has listings." )
81+ id := testClient ().Ids .RandomAccountObjectIdentifier ()
82+ comment := random .Comment ()
83+
84+ manifest , title := testClient ().Listing .BasicManifestWithUnquotedValuesAndTargetAccounts (t )
85+
86+ share , shareCleanup := testClient ().Share .CreateShare (t )
87+ t .Cleanup (shareCleanup )
88+ t .Cleanup (testClient ().Grant .GrantPrivilegeOnDatabaseToShare (t , testClient ().Ids .DatabaseId (), share .ID (), []sdk.ObjectPrivilege {sdk .ObjectPrivilegeUsage }))
89+
90+ listingModel := model .ListingWithInlineManifest ("listing_complete" , id .Name (), manifest ).
91+ WithShare (share .ID ().Name ()).
92+ WithPublish ("true" ).
93+ WithComment (comment )
94+
95+ listingsModelWithoutAdditional := datasourcemodel .Listings ("without_additional" ).
96+ WithLike (id .Name ()).
97+ WithStartsWith (id .Name ()).
98+ WithLimit (1 ).
99+ WithWithDescribe (false ).
100+ WithDependsOn (listingModel .ResourceReference ())
101+
102+ listingsModel := datasourcemodel .Listings ("with_additional" ).
103+ WithLike (id .Name ()).
104+ WithStartsWith (id .Name ()).
105+ WithLimit (1 ).
106+ WithDependsOn (listingModel .ResourceReference ())
107+
108+ providerModel := providermodel .SnowflakeProvider ().
109+ WithPreviewFeaturesEnabled (string (previewfeatures .ListingsDatasource ))
110+
111+ resource .Test (t , resource.TestCase {
112+ ProtoV6ProviderFactories : TestAccProtoV6ProviderFactories ,
113+ TerraformVersionChecks : []tfversion.TerraformVersionCheck {
114+ tfversion .RequireAbove (tfversion .Version1_5_0 ),
115+ },
116+ CheckDestroy : CheckDestroy (t , resources .Listing ),
117+ Steps : []resource.TestStep {
118+ {
119+ Config : config .FromModels (t , providerModel , listingModel , listingsModelWithoutAdditional ),
120+ Check : assertThat (t ,
121+ resourceshowoutputassert .ListingsDatasourceShowOutput (t , listingsModelWithoutAdditional .DatasourceReference ()).
122+ HasName (id .Name ()).
123+ HasTitle (title ).
124+ HasState (sdk .ListingStatePublished ).
125+ HasComment (comment ),
126+
127+ assert .Check (resource .TestCheckResourceAttr (listingsModelWithoutAdditional .DatasourceReference (), "listings.0.describe_output.#" , "0" )),
128+ ),
129+ },
130+ {
131+ Config : config .FromModels (t , providerModel , listingModel , listingsModel ),
132+ Check : assertThat (t ,
133+ resourceshowoutputassert .ListingsDatasourceShowOutput (t , listingsModel .DatasourceReference ()).
134+ HasName (id .Name ()).
135+ HasTitle (title ).
136+ HasState (sdk .ListingStatePublished ).
137+ HasComment (comment ),
138+
139+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.#" , "1" )),
140+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.name" , id .Name ())),
141+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.title" , title )),
142+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.description" , "description" )),
143+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.created_on" )),
144+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.updated_on" )),
145+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.owner" )),
146+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.owner_role_type" )),
147+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.state" , "PUBLISHED" )),
148+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.share" )),
149+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.application_package" , "" )),
150+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.manifest_yaml" )),
151+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.listing_terms" )),
152+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.business_needs" , "" )),
153+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.usage_examples" , "" )),
154+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.data_attributes" , "" )),
155+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.categories" , "" )),
156+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.resources" , "" )),
157+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.profile" , "" )),
158+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.customized_contact_info" , "" )),
159+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.data_dictionary" , "" )),
160+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.data_preview" , "" )),
161+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.published_on" )),
162+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.comment" , comment )),
163+ assert .Check (resource .TestCheckResourceAttrSet (listingsModel .DatasourceReference (), "listings.0.describe_output.0.revisions" )),
164+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.target_accounts" , "" )),
165+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.regions" , "" )),
166+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.refresh_schedule" , "" )),
167+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.refresh_type" , "" )),
168+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.review_state" , "" )),
169+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.rejection_reason" , "" )),
170+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.unpublished_by_admin_reasons" , "" )),
171+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_monetized" , "false" )),
172+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_application" , "false" )),
173+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_targeted" , "true" )),
174+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_limited_trial" , "false" )),
175+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_by_request" , "false" )),
176+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.limited_trial_plan" , "" )),
177+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.retried_on" , "" )),
178+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.scheduled_drop_time" , "" )),
179+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.distribution" , "EXTERNAL" )),
180+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_mountless_queryable" , "false" )),
181+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.organization_profile_name" , "" )),
182+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.uniform_listing_locator" , "" )),
183+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.approver_contact" , "" )),
184+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.support_contact" , "" )),
185+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.published_version_name" , "" )),
186+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.published_version_alias" , "" )),
187+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.is_share" , "true" )),
188+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.request_approval_type" , "" )),
189+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.monetization_display_order" , "" )),
190+ assert .Check (resource .TestCheckResourceAttr (listingsModel .DatasourceReference (), "listings.0.describe_output.0.legacy_uniform_listing_locators" , "" )),
191+ ),
192+ },
193+ },
194+ })
58195}
0 commit comments