Skip to content

Commit 09e48ea

Browse files
authored
fix: keys keysets creation without names (#1675)
1 parent 44e74d4 commit 09e48ea

File tree

6 files changed

+216
-3
lines changed

6 files changed

+216
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/fatih/color v1.18.0
1414
github.com/google/go-cmp v0.7.0
1515
github.com/kong/go-apiops v0.1.45
16-
github.com/kong/go-database-reconciler v1.24.1
16+
github.com/kong/go-database-reconciler v1.24.2
1717
github.com/kong/go-kong v0.66.1
1818
github.com/mitchellh/go-homedir v1.1.0
1919
github.com/spf13/cobra v1.9.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/q
242242
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
243243
github.com/kong/go-apiops v0.1.45 h1:hZxIE9FSC9D5IqBIORKXBaNA8udXRkBajbnNzQU47hM=
244244
github.com/kong/go-apiops v0.1.45/go.mod h1:hKnHJ3UyeuG932SkI/yMpuT/PqSqGXNTS1zhno1lDqg=
245-
github.com/kong/go-database-reconciler v1.24.1 h1:c0gHP8WEt9HF602IxwJq8ZsKKmQ13wamaQ8Sj4Qt5cU=
246-
github.com/kong/go-database-reconciler v1.24.1/go.mod h1:AXbC5CtSZv8ldtt8ho4Ol2K1gi8mZ948d1EHckECHC8=
245+
github.com/kong/go-database-reconciler v1.24.2 h1:TNY4dy+uJcmSlWAElye65eVl1Wd1xgOYsJ73mW+DQ4M=
246+
github.com/kong/go-database-reconciler v1.24.2/go.mod h1:fWjwkA2MDQu1QKLV8qeUCagGmOU4wNhPAQkl5LBfYd0=
247247
github.com/kong/go-kong v0.66.1 h1:UVdemzcCpfXEl6O/VHdf0rT2bXdIO5ykuJbf2z1JTko=
248248
github.com/kong/go-kong v0.66.1/go.mod h1:wRMPAXGOB3kn53TF6zN4l2JhIWPUfXDFKNHkMHBB3iQ=
249249
github.com/kong/go-slugify v1.0.0 h1:vCFAyf2sdoSlBtLcrmDWUFn0ohlpKiKvQfXZkO5vSKY=

tests/integration/sync_test.go

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8403,6 +8403,27 @@ func Test_Sync_KeysAndKeySets(t *testing.T) {
84038403
},
84048404
},
84058405
},
8406+
{
8407+
name: "creates keys and key_sets without name",
8408+
kongFile: "testdata/sync/043-keys-and-key_sets/kong-no-name.yaml",
8409+
expectedState: utils.KongRawState{
8410+
Keys: []*kong.Key{
8411+
{
8412+
ID: kong.String("1d15274d-76ae-4aec-928e-1b395cc1333f"),
8413+
KID: kong.String("vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4"),
8414+
Set: &kong.KeySet{
8415+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8416+
},
8417+
JWK: kong.String("{\"kty\": \"RSA\", \"kid\": \"vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4\", \"n\": \"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ\", \"e\": \"AQAB\", \"alg\": \"A256GCM\"}"), //nolint:lll
8418+
},
8419+
},
8420+
KeySets: []*kong.KeySet{
8421+
{
8422+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8423+
},
8424+
},
8425+
},
8426+
},
84068427
}
84078428
for _, tc := range tests {
84088429
t.Run(tc.name, func(t *testing.T) {
@@ -8411,6 +8432,85 @@ func Test_Sync_KeysAndKeySets(t *testing.T) {
84118432
require.NoError(t, err)
84128433

84138434
testKongState(t, client, false, false, tc.expectedState, nil)
8435+
8436+
// re-sync with no error
8437+
err = sync(ctx, tc.kongFile)
8438+
require.NoError(t, err)
8439+
})
8440+
}
8441+
}
8442+
8443+
// test scope:
8444+
//
8445+
// - >=3.1.0
8446+
func Test_Sync_KeysAndKeySets_Update(t *testing.T) {
8447+
runWhen(t, "kong", ">=3.1.0")
8448+
setup(t)
8449+
8450+
client, err := getTestClient()
8451+
require.NoError(t, err)
8452+
ctx := context.Background()
8453+
8454+
tests := []struct {
8455+
name string
8456+
kongFile string
8457+
initialState utils.KongRawState
8458+
updateFile string
8459+
updatedState utils.KongRawState
8460+
}{
8461+
{
8462+
name: "name addition post creation works without errors",
8463+
kongFile: "testdata/sync/043-keys-and-key_sets/kong-no-name.yaml",
8464+
initialState: utils.KongRawState{
8465+
Keys: []*kong.Key{
8466+
{
8467+
ID: kong.String("1d15274d-76ae-4aec-928e-1b395cc1333f"),
8468+
KID: kong.String("vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4"),
8469+
Set: &kong.KeySet{
8470+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8471+
},
8472+
JWK: kong.String("{\"kty\": \"RSA\", \"kid\": \"vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4\", \"n\": \"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ\", \"e\": \"AQAB\", \"alg\": \"A256GCM\"}"), //nolint:lll
8473+
},
8474+
},
8475+
KeySets: []*kong.KeySet{
8476+
{
8477+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8478+
},
8479+
},
8480+
},
8481+
updateFile: "testdata/sync/043-keys-and-key_sets/kong-name-update.yaml",
8482+
updatedState: utils.KongRawState{
8483+
Keys: []*kong.Key{
8484+
{
8485+
ID: kong.String("1d15274d-76ae-4aec-928e-1b395cc1333f"),
8486+
Name: kong.String("foo"),
8487+
KID: kong.String("vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4"),
8488+
Set: &kong.KeySet{
8489+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8490+
},
8491+
JWK: kong.String("{\"kty\": \"RSA\", \"kid\": \"vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4\", \"n\": \"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ\", \"e\": \"AQAB\", \"alg\": \"A256GCM\"}"), //nolint:lll
8492+
},
8493+
},
8494+
KeySets: []*kong.KeySet{
8495+
{
8496+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8497+
Name: kong.String("bar"),
8498+
},
8499+
},
8500+
},
8501+
},
8502+
}
8503+
for _, tc := range tests {
8504+
t.Run(tc.name, func(t *testing.T) {
8505+
reset(t)
8506+
err := sync(ctx, tc.kongFile)
8507+
require.NoError(t, err)
8508+
testKongState(t, client, false, false, tc.initialState, nil)
8509+
8510+
// update
8511+
err = sync(ctx, tc.updateFile)
8512+
require.NoError(t, err)
8513+
testKongState(t, client, false, false, tc.updatedState, nil)
84148514
})
84158515
}
84168516
}
@@ -8489,6 +8589,83 @@ func Test_Sync_KeysAndKeySets_Konnect(t *testing.T) {
84898589
}
84908590
}
84918591

8592+
// test scope:
8593+
//
8594+
// - konnect
8595+
// TODO: Update test once konnect supports key_set creation without names.
8596+
func Test_Sync_KeysAndKeySets_Konnect_Update(t *testing.T) {
8597+
runWhenKonnect(t)
8598+
setup(t)
8599+
8600+
client, err := getTestClient()
8601+
require.NoError(t, err)
8602+
ctx := context.Background()
8603+
8604+
tests := []struct {
8605+
name string
8606+
kongFile string
8607+
initialState utils.KongRawState
8608+
updateFile string
8609+
updatedState utils.KongRawState
8610+
}{
8611+
{
8612+
name: "name addition post creation works without errors",
8613+
kongFile: "testdata/sync/043-keys-and-key_sets/kong-no-name-konnect.yaml",
8614+
initialState: utils.KongRawState{
8615+
Keys: []*kong.Key{
8616+
{
8617+
ID: kong.String("1d15274d-76ae-4aec-928e-1b395cc1333f"),
8618+
KID: kong.String("vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4"),
8619+
Set: &kong.KeySet{
8620+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8621+
},
8622+
JWK: kong.String("{\"kid\":\"vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4\",\"kty\":\"RSA\",\"alg\":\"A256GCM\",\"n\":\"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ\",\"e\":\"AQAB\"}"), //nolint:lll
8623+
},
8624+
},
8625+
KeySets: []*kong.KeySet{
8626+
{
8627+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8628+
Name: kong.String("bar"),
8629+
},
8630+
},
8631+
},
8632+
updateFile: "testdata/sync/043-keys-and-key_sets/kong-name-update.yaml",
8633+
updatedState: utils.KongRawState{
8634+
Keys: []*kong.Key{
8635+
{
8636+
ID: kong.String("1d15274d-76ae-4aec-928e-1b395cc1333f"),
8637+
Name: kong.String("foo"),
8638+
KID: kong.String("vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4"),
8639+
Set: &kong.KeySet{
8640+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8641+
},
8642+
JWK: kong.String("{\"kid\":\"vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4\",\"kty\":\"RSA\",\"alg\":\"A256GCM\",\"n\":\"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ\",\"e\":\"AQAB\"}"), //nolint:lll
8643+
},
8644+
},
8645+
KeySets: []*kong.KeySet{
8646+
{
8647+
ID: kong.String("d46b0e15-ffbc-4b15-ad92-09ef67935453"),
8648+
Name: kong.String("bar"),
8649+
},
8650+
},
8651+
},
8652+
},
8653+
}
8654+
for _, tc := range tests {
8655+
t.Run(tc.name, func(t *testing.T) {
8656+
reset(t)
8657+
err := sync(ctx, tc.kongFile)
8658+
require.NoError(t, err)
8659+
testKongState(t, client, true, false, tc.initialState, nil)
8660+
8661+
// update
8662+
err = sync(ctx, tc.updateFile)
8663+
require.NoError(t, err)
8664+
testKongState(t, client, true, false, tc.updatedState, nil)
8665+
})
8666+
}
8667+
}
8668+
84928669
// test scope:
84938670
//
84948671
// - >=3.10.0+enterprise
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
_format_version: "3.0"
2+
key_sets:
3+
- id: d46b0e15-ffbc-4b15-ad92-09ef67935453
4+
name: bar
5+
keys:
6+
- id: 1d15274d-76ae-4aec-928e-1b395cc1333f
7+
jwk: '{"kty": "RSA", "kid": "vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4", "n":
8+
"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ",
9+
"e": "AQAB", "alg": "A256GCM"}'
10+
kid: vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4
11+
name: foo
12+
set:
13+
name: bar
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
_format_version: "3.0"
2+
key_sets:
3+
- id: d46b0e15-ffbc-4b15-ad92-09ef67935453
4+
name: bar
5+
keys:
6+
- id: 1d15274d-76ae-4aec-928e-1b395cc1333f
7+
jwk: '{"kty": "RSA", "kid": "vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4", "n":
8+
"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ",
9+
"e": "AQAB", "alg": "A256GCM"}'
10+
kid: vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4
11+
set:
12+
id: d46b0e15-ffbc-4b15-ad92-09ef67935453
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
_format_version: "3.0"
2+
key_sets:
3+
- id: d46b0e15-ffbc-4b15-ad92-09ef67935453
4+
keys:
5+
- id: 1d15274d-76ae-4aec-928e-1b395cc1333f
6+
jwk: '{"kty": "RSA", "kid": "vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4", "n":
7+
"v2KAzzfruqctVHaE9WSCWIg1xAhMwxTIK-i56WNqPtpWBo9AqxcVea8NyVctEjUNq_mix5CklNy3ru7ARh7rBG_LU65fzs4fY_uYalul3QZSnr61Gj-cTUB3Gy4PhA63yXCbYRR3gDy6WR_wfis1MS61j0R_AjgXuVufmmC0F7R9qSWfR8ft0CbQgemEHY3ddKeW7T7fKv1jnRwYAkl5B_xtvxRFIYT-uR9NNftixNpUIW7q8qvOH7D9icXOg4_wIVxTRe5QiRYwEFoUbV1V9bFtu5FLal0vZnLaWwg5tA6enhzBpxJNdrS0v1RcPpyeNP-9r3cUDGmeftwz9v95UQ",
8+
"e": "AQAB", "alg": "A256GCM"}'
9+
kid: vsR8NCNV_1_LB06LqudGa2r-T0y4Z6VQVYue9IQz6A4
10+
set:
11+
id: d46b0e15-ffbc-4b15-ad92-09ef67935453

0 commit comments

Comments
 (0)