Skip to content

Commit a9317af

Browse files
committed
feat: now fast fails if you give a payment-id for anything other than credit-card payment
1 parent 7eaa407 commit a9317af

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

provider/rediscloud_essentials_subscription_test.go

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
99
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
10+
"regexp"
1011
"strconv"
1112
"testing"
1213
)
@@ -275,6 +276,23 @@ func TestAccResourceRedisCloudEssentialsSubscription_Paid_Marketplace_CRUDI(t *t
275276
})
276277
}
277278

279+
func TestAccResourceRedisCloudEssentialsSubscription_Incorrect_PaymentIdForType(t *testing.T) {
280+
testAccRequiresEnvVar(t, "EXECUTE_TESTS")
281+
282+
subscriptionName := acctest.RandomWithPrefix(testResourcePrefix)
283+
284+
resource.ParallelTest(t, resource.TestCase{
285+
PreCheck: func() { testAccPreCheck(t) },
286+
ProviderFactories: providerFactories,
287+
Steps: []resource.TestStep{
288+
{
289+
Config: fmt.Sprintf(testAccResourceRedisCloudPaidIncorrectPaymentTypeEssentialsSubscription, subscriptionName),
290+
ExpectError: regexp.MustCompile("payment methods aside from credit-card cannot have a payment ID"),
291+
},
292+
},
293+
})
294+
}
295+
278296
const testAccResourceRedisCloudFreeEssentialsSubscription = `
279297
data "rediscloud_essentials_plan" "example" {
280298
name = "30MB"
@@ -293,10 +311,6 @@ data "rediscloud_essentials_subscription" "example" {
293311
`
294312

295313
const testAccResourceRedisCloudPaidMarketplaceEssentialsSubscription = `
296-
data "rediscloud_payment_method" "card" {
297-
card_type = "Visa"
298-
}
299-
300314
data "rediscloud_essentials_plan" "example" {
301315
name = "250MB"
302316
cloud_provider = "AWS"
@@ -307,7 +321,6 @@ resource "rediscloud_essentials_subscription" "example" {
307321
name = "%s"
308322
plan_id = data.rediscloud_essentials_plan.example.id
309323
payment_method = "marketplace"
310-
payment_method_id = data.rediscloud_payment_method.card.id
311324
}
312325
313326
data "rediscloud_essentials_subscription" "example" {
@@ -361,6 +374,25 @@ data "rediscloud_essentials_subscription" "example" {
361374
}
362375
`
363376

377+
const testAccResourceRedisCloudPaidIncorrectPaymentTypeEssentialsSubscription = `
378+
data "rediscloud_essentials_plan" "example" {
379+
name = "250MB"
380+
cloud_provider = "AWS"
381+
region = "us-east-1"
382+
}
383+
384+
resource "rediscloud_essentials_subscription" "example" {
385+
name = "%s"
386+
plan_id = data.rediscloud_essentials_plan.example.id
387+
payment_method = "marketplace"
388+
payment_method_id = 999999999
389+
}
390+
391+
data "rediscloud_essentials_subscription" "example" {
392+
name = rediscloud_essentials_subscription.example.name
393+
}
394+
`
395+
364396
func testAccCheckEssentialsSubscriptionDestroy(s *terraform.State) error {
365397
client := testProvider.Meta().(*apiClient)
366398

provider/resource_rediscloud_essentials_subscription.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package provider
22

33
import (
44
"context"
5+
"errors"
56
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
67
"log"
78
"regexp"
@@ -89,6 +90,13 @@ func resourceRedisCloudEssentialsSubscriptionCreate(ctx context.Context, d *sche
8990
PlanId: redis.Int(d.Get("plan_id").(int)),
9091
}
9192

93+
// payment_method_id only matters if it is a credit card
94+
if d.Get("payment_method").(string) != "credit-card" {
95+
if d.Get("payment_method_id") != nil {
96+
return diag.FromErr(errors.New("payment methods aside from credit-card cannot have a payment ID"))
97+
}
98+
}
99+
92100
if v, ok := d.GetOk("payment_method_id"); ok {
93101
createSubscriptionRequest.PaymentMethodID = redis.Int(v.(int))
94102
}

0 commit comments

Comments
 (0)