Skip to content

Commit 14a4e32

Browse files
committed
refactor: updating code to reflect new API which splits response and request objects
1 parent c06ff1e commit 14a4e32

File tree

5 files changed

+182
-15
lines changed

5 files changed

+182
-15
lines changed

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,5 @@ require (
6666
google.golang.org/protobuf v1.36.3 // indirect
6767
gopkg.in/yaml.v3 v3.0.1 // indirect
6868
)
69+
70+
replace github.com/RedisLabs/rediscloud-go-api v0.26.0 => ../rediscloud-go-api

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc
44
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
55
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
66
github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
7-
github.com/RedisLabs/rediscloud-go-api v0.26.0 h1:ka6CN2O+Ti6igkfH8lDT9Ua1/ksEh2H5dj1GF/pnKKQ=
8-
github.com/RedisLabs/rediscloud-go-api v0.26.0/go.mod h1:3/oVb71rv2OstFRYEc65QCIbfwnJTgZeQhtPCcdHook=
97
github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
108
github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
119
github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=

provider/datasource_rediscloud_essentials_subscription.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"strconv"
66

77
"github.com/RedisLabs/rediscloud-go-api/redis"
8-
fixedSubscriptions "github.com/RedisLabs/rediscloud-go-api/service/fixed/subscriptions"
8+
fs "github.com/RedisLabs/rediscloud-go-api/service/fixed/subscriptions"
99
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1010
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1111
)
@@ -60,16 +60,16 @@ func dataSourceRedisCloudEssentialsSubscriptionRead(ctx context.Context, d *sche
6060
return diag.FromErr(err)
6161
}
6262

63-
var filters []func(method *fixedSubscriptions.FixedSubscription) bool
63+
var filters []func(method *fs.FixedSubscriptionResponse) bool
6464

6565
if id, ok := d.GetOk("id"); ok {
66-
filters = append(filters, func(sub *fixedSubscriptions.FixedSubscription) bool {
66+
filters = append(filters, func(sub *fs.FixedSubscriptionResponse) bool {
6767
return redis.IntValue(sub.ID) == id
6868
})
6969
}
7070

7171
if name, ok := d.GetOk("name"); ok {
72-
filters = append(filters, func(sub *fixedSubscriptions.FixedSubscription) bool {
72+
filters = append(filters, func(sub *fs.FixedSubscriptionResponse) bool {
7373
return redis.StringValue(sub.Name) == name
7474
})
7575
}
@@ -109,8 +109,8 @@ func dataSourceRedisCloudEssentialsSubscriptionRead(ctx context.Context, d *sche
109109
return diags
110110
}
111111

112-
func filterFixedSubscriptions(subs []*fixedSubscriptions.FixedSubscription, filters []func(sub *fixedSubscriptions.FixedSubscription) bool) []*fixedSubscriptions.FixedSubscription {
113-
var filteredSubs []*fixedSubscriptions.FixedSubscription
112+
func filterFixedSubscriptions(subs []*fs.FixedSubscriptionResponse, filters []func(sub *fs.FixedSubscriptionResponse) bool) []*fs.FixedSubscriptionResponse {
113+
var filteredSubs []*fs.FixedSubscriptionResponse
114114
for _, sub := range subs {
115115
if filterFixedSub(sub, filters) {
116116
filteredSubs = append(filteredSubs, sub)
@@ -120,7 +120,7 @@ func filterFixedSubscriptions(subs []*fixedSubscriptions.FixedSubscription, filt
120120
return filteredSubs
121121
}
122122

123-
func filterFixedSub(method *fixedSubscriptions.FixedSubscription, filters []func(method *fixedSubscriptions.FixedSubscription) bool) bool {
123+
func filterFixedSub(method *fs.FixedSubscriptionResponse, filters []func(method *fs.FixedSubscriptionResponse) bool) bool {
124124
for _, f := range filters {
125125
if !f(method) {
126126
return false

provider/rediscloud_essentials_subscription_test.go

Lines changed: 164 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import (
1111
"testing"
1212
)
1313

14-
func TestAccResourceRedisCloudEssentialsSubscription_FreeCRUDI(t *testing.T) {
14+
func TestAccResourceRedisCloudEssentialsSubscription_Free_CRUDI(t *testing.T) {
1515

16-
testAccRequiresEnvVar(t, "EXECUTE_TESTS")
16+
// TODO: remove comments: temp
17+
//testAccRequiresEnvVar(t, "EXECUTE_TESTS")
1718

1819
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
1920
subscriptionNameUpdated := subscriptionName + "-updated"
@@ -76,9 +77,10 @@ func TestAccResourceRedisCloudEssentialsSubscription_FreeCRUDI(t *testing.T) {
7677
})
7778
}
7879

79-
func TestAccResourceRedisCloudEssentialsSubscription_PaidCRUDI(t *testing.T) {
80+
func TestAccResourceRedisCloudEssentialsSubscription_Paid_CreditCard_CRUDI(t *testing.T) {
8081

81-
testAccRequiresEnvVar(t, "EXECUTE_TESTS")
82+
// TODO: remove comments: temp
83+
//testAccRequiresEnvVar(t, "EXECUTE_TESTS")
8284

8385
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
8486
subscriptionNameUpdated := subscriptionName + "-updated"
@@ -142,6 +144,141 @@ func TestAccResourceRedisCloudEssentialsSubscription_PaidCRUDI(t *testing.T) {
142144
})
143145
}
144146

147+
func TestAccResourceRedisCloudEssentialsSubscription_Paid_NoPaymentType_CRUDI(t *testing.T) {
148+
149+
// TODO: remove comments: temp
150+
//testAccRequiresEnvVar(t, "EXECUTE_TESTS")
151+
152+
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
153+
subscriptionNameUpdated := subscriptionName + "-updated"
154+
155+
const resourceName = "rediscloud_essentials_subscription.example"
156+
const datasourceName = "data.rediscloud_essentials_subscription.example"
157+
158+
resource.ParallelTest(t, resource.TestCase{
159+
PreCheck: func() { testAccPreCheck(t) },
160+
ProviderFactories: providerFactories,
161+
CheckDestroy: testAccCheckEssentialsSubscriptionDestroy,
162+
Steps: []resource.TestStep{
163+
{
164+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidNoPaymentTypeEssentialsSubscription, subscriptionName),
165+
Check: resource.ComposeAggregateTestCheckFunc(
166+
// Test the resource
167+
resource.TestCheckResourceAttrSet(resourceName, "id"),
168+
resource.TestCheckResourceAttr(resourceName, "name", subscriptionName),
169+
resource.TestCheckResourceAttr(resourceName, "status", "active"),
170+
resource.TestCheckResourceAttrSet(resourceName, "plan_id"),
171+
resource.TestCheckResourceAttrSet(resourceName, "payment_method"),
172+
resource.TestCheckResourceAttrSet(resourceName, "payment_method_id"),
173+
resource.TestCheckResourceAttrSet(resourceName, "creation_date"),
174+
175+
// Test the datasource
176+
resource.TestCheckResourceAttrSet(datasourceName, "id"),
177+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionName),
178+
resource.TestCheckResourceAttr(datasourceName, "status", "active"),
179+
resource.TestCheckResourceAttrSet(datasourceName, "plan_id"),
180+
resource.TestCheckResourceAttrSet(datasourceName, "payment_method_id"),
181+
resource.TestCheckResourceAttrSet(datasourceName, "creation_date"),
182+
),
183+
},
184+
{
185+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidNoPaymentTypeEssentialsSubscription, subscriptionNameUpdated),
186+
Check: resource.ComposeAggregateTestCheckFunc(
187+
// Test the resource
188+
resource.TestCheckResourceAttrSet(resourceName, "id"),
189+
resource.TestCheckResourceAttr(resourceName, "name", subscriptionNameUpdated),
190+
resource.TestCheckResourceAttr(resourceName, "status", "active"),
191+
resource.TestCheckResourceAttrSet(resourceName, "plan_id"),
192+
resource.TestCheckResourceAttrSet(resourceName, "payment_method_id"),
193+
resource.TestCheckResourceAttrSet(resourceName, "creation_date"),
194+
195+
// Test the datasource
196+
resource.TestCheckResourceAttrSet(datasourceName, "id"),
197+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionNameUpdated),
198+
resource.TestCheckResourceAttr(datasourceName, "status", "active"),
199+
resource.TestCheckResourceAttrSet(datasourceName, "plan_id"),
200+
resource.TestCheckResourceAttrSet(datasourceName, "payment_method_id"),
201+
resource.TestCheckResourceAttrSet(datasourceName, "creation_date"),
202+
),
203+
},
204+
{
205+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidNoPaymentTypeEssentialsSubscription, subscriptionNameUpdated),
206+
ResourceName: resourceName,
207+
ImportState: true,
208+
ImportStateVerify: true,
209+
},
210+
},
211+
})
212+
}
213+
214+
func TestAccResourceRedisCloudEssentialsSubscription_Paid_Marketplace_CRUDI(t *testing.T) {
215+
216+
// TODO: remove comments: temp
217+
//testAccRequiresEnvVar(t, "EXECUTE_TESTS")
218+
219+
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
220+
subscriptionNameUpdated := subscriptionName + "-updated"
221+
222+
const resourceName = "rediscloud_essentials_subscription.example"
223+
const datasourceName = "data.rediscloud_essentials_subscription.example"
224+
225+
resource.ParallelTest(t, resource.TestCase{
226+
PreCheck: func() { testAccPreCheck(t) },
227+
ProviderFactories: providerFactories,
228+
CheckDestroy: testAccCheckEssentialsSubscriptionDestroy,
229+
Steps: []resource.TestStep{
230+
{
231+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidMarketplaceEssentialsSubscription, subscriptionName),
232+
Check: resource.ComposeAggregateTestCheckFunc(
233+
// Test the resource
234+
resource.TestCheckResourceAttrSet(resourceName, "id"),
235+
resource.TestCheckResourceAttr(resourceName, "name", subscriptionName),
236+
resource.TestCheckResourceAttr(resourceName, "status", "active"),
237+
resource.TestCheckResourceAttrSet(resourceName, "plan_id"),
238+
resource.TestCheckResourceAttr(resourceName, "payment_method", "credit-card"),
239+
resource.TestCheckResourceAttrSet(resourceName, "payment_method_id"),
240+
resource.TestCheckResourceAttrSet(resourceName, "creation_date"),
241+
242+
// Test the datasource
243+
resource.TestCheckResourceAttrSet(datasourceName, "id"),
244+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionName),
245+
resource.TestCheckResourceAttr(datasourceName, "status", "active"),
246+
resource.TestCheckResourceAttrSet(datasourceName, "plan_id"),
247+
resource.TestCheckResourceAttrSet(datasourceName, "payment_method_id"),
248+
resource.TestCheckResourceAttrSet(datasourceName, "creation_date"),
249+
),
250+
},
251+
{
252+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidMarketplaceEssentialsSubscription, subscriptionNameUpdated),
253+
Check: resource.ComposeAggregateTestCheckFunc(
254+
// Test the resource
255+
resource.TestCheckResourceAttrSet(resourceName, "id"),
256+
resource.TestCheckResourceAttr(resourceName, "name", subscriptionNameUpdated),
257+
resource.TestCheckResourceAttr(resourceName, "status", "active"),
258+
resource.TestCheckResourceAttrSet(resourceName, "plan_id"),
259+
resource.TestCheckResourceAttr(resourceName, "payment_method", "credit-card"),
260+
resource.TestCheckResourceAttrSet(resourceName, "payment_method_id"),
261+
resource.TestCheckResourceAttrSet(resourceName, "creation_date"),
262+
263+
// Test the datasource
264+
resource.TestCheckResourceAttrSet(datasourceName, "id"),
265+
resource.TestCheckResourceAttr(datasourceName, "name", subscriptionNameUpdated),
266+
resource.TestCheckResourceAttr(datasourceName, "status", "active"),
267+
resource.TestCheckResourceAttrSet(datasourceName, "plan_id"),
268+
resource.TestCheckResourceAttrSet(datasourceName, "payment_method_id"),
269+
resource.TestCheckResourceAttrSet(datasourceName, "creation_date"),
270+
),
271+
},
272+
{
273+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidMarketplaceEssentialsSubscription, subscriptionNameUpdated),
274+
ResourceName: resourceName,
275+
ImportState: true,
276+
ImportStateVerify: true,
277+
},
278+
},
279+
})
280+
}
281+
145282
const testAccResourceRedisCloudFreeEssentialsSubscription = `
146283
data "rediscloud_essentials_plan" "example" {
147284
name = "30MB"
@@ -205,6 +342,29 @@ data "rediscloud_essentials_subscription" "example" {
205342
}
206343
`
207344

345+
// doesn't contain credit-card, tests for default
346+
const testAccResourceRedisCloudPaidNoPaymentTypeEssentialsSubscription = `
347+
data "rediscloud_payment_method" "card" {
348+
card_type = "Visa"
349+
}
350+
351+
data "rediscloud_essentials_plan" "example" {
352+
name = "250MB"
353+
cloud_provider = "AWS"
354+
region = "us-east-1"
355+
}
356+
357+
resource "rediscloud_essentials_subscription" "example" {
358+
name = "%s"
359+
plan_id = data.rediscloud_essentials_plan.example.id
360+
payment_method_id = data.rediscloud_payment_method.card.id
361+
}
362+
363+
data "rediscloud_essentials_subscription" "example" {
364+
name = rediscloud_essentials_subscription.example.name
365+
}
366+
`
367+
208368
func testAccCheckEssentialsSubscriptionDestroy(s *terraform.State) error {
209369
client := testProvider.Meta().(*apiClient)
210370

provider/resource_rediscloud_essentials_subscription.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func resourceRedisCloudEssentialsSubscriptionCreate(ctx context.Context, d *sche
8484
var diags diag.Diagnostics
8585
api := meta.(*apiClient)
8686

87-
createSubscriptionRequest := fixedSubscriptions.FixedSubscription{
87+
createSubscriptionRequest := fixedSubscriptions.FixedSubscriptionRequest{
8888
Name: redis.String(d.Get("name").(string)),
8989
PlanId: redis.Int(d.Get("plan_id").(int)),
9090
}
@@ -140,6 +140,9 @@ func resourceRedisCloudEssentialsSubscriptionRead(ctx context.Context, d *schema
140140
if err := d.Set("payment_method_id", redis.IntValue(subscription.PaymentMethodID)); err != nil {
141141
return diag.FromErr(err)
142142
}
143+
if err := d.Set("payment_method", redis.StringValue(subscription.PaymentMethod)); err != nil {
144+
return diag.FromErr(err)
145+
}
143146
if err := d.Set("creation_date", redis.TimeValue(subscription.CreationDate).String()); err != nil {
144147
return diag.FromErr(err)
145148
}
@@ -165,11 +168,15 @@ func resourceRedisCloudEssentialsSubscriptionUpdate(ctx context.Context, d *sche
165168
return diags
166169
}
167170

168-
updateSubscriptionRequest := fixedSubscriptions.FixedSubscription{
171+
updateSubscriptionRequest := fixedSubscriptions.FixedSubscriptionRequest{
169172
Name: redis.String(d.Get("name").(string)),
170173
PlanId: redis.Int(d.Get("plan_id").(int)),
171174
}
172175

176+
if v, ok := d.GetOk("payment_method"); ok {
177+
updateSubscriptionRequest.PaymentMethod = redis.String(v.(string))
178+
}
179+
173180
if v, ok := d.GetOk("payment_method_id"); ok {
174181
updateSubscriptionRequest.PaymentMethodID = redis.Int(v.(int))
175182
}

0 commit comments

Comments
 (0)