Skip to content

Commit 6896fc7

Browse files
Fix consumer creation with missing properties
Previously the `username` or `custom_id` properties being absent would cause an error from Kong, because the properties would be sent as empty strings instead of being absent or `null`.
1 parent d5e1e8f commit 6896fc7

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

kong/resource_kong_consumer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ func resourceKongConsumer() *schema.Resource {
4343
func resourceKongConsumerCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
4444

4545
consumerRequest := &kong.Consumer{
46-
Username: kong.String(d.Get("username").(string)),
47-
CustomID: kong.String(d.Get("custom_id").(string)),
46+
Username: NilString(d.Get("username").(string)),
47+
CustomID: NilString(d.Get("custom_id").(string)),
4848
Tags: readStringArrayPtrFromResource(d, "tags"),
4949
}
5050

kong/resource_kong_consumer_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,26 @@ func TestAccKongConsumer(t *testing.T) {
4141
})
4242
}
4343

44+
func TestAccKongConsumerNilIDs(t *testing.T) {
45+
46+
resource.Test(t, resource.TestCase{
47+
Providers: testAccProviders,
48+
CheckDestroy: testAccCheckKongConsumerDestroy,
49+
Steps: []resource.TestStep{
50+
{
51+
Config: testCreateConsumerConfigNoCustomID,
52+
Check: resource.ComposeTestCheckFunc(
53+
testAccCheckKongConsumerExists("kong_consumer.consumer"),
54+
resource.TestCheckResourceAttr("kong_consumer.consumer", "username", "User3"),
55+
resource.TestCheckResourceAttr("kong_consumer.consumer", "custom_id", ""),
56+
resource.TestCheckResourceAttr("kong_consumer.consumer", "tags.#", "1"),
57+
resource.TestCheckResourceAttr("kong_consumer.consumer", "tags.0", "c"),
58+
),
59+
},
60+
},
61+
})
62+
}
63+
4464
func TestAccKongConsumerImport(t *testing.T) {
4565

4666
resource.Test(t, resource.TestCase{
@@ -126,3 +146,9 @@ resource "kong_consumer" "consumer" {
126146
tags = ["a"]
127147
}
128148
`
149+
const testCreateConsumerConfigNoCustomID = `
150+
resource "kong_consumer" "consumer" {
151+
username = "User3"
152+
tags = ["c"]
153+
}
154+
`

kong/utils.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,13 @@ func IDToString(v *string) string {
154154
}
155155
return *v
156156
}
157+
158+
// NilString converts a string to a string pointer,
159+
// or if empty returns nil.
160+
func NilString(str string) *string {
161+
if str == "" {
162+
return nil
163+
} else {
164+
return kong.String(str)
165+
}
166+
}

0 commit comments

Comments
 (0)