Skip to content

Commit f5f1bc8

Browse files
committed
tests: added additional test cases
1 parent 77967e5 commit f5f1bc8

File tree

2 files changed

+127
-6
lines changed

2 files changed

+127
-6
lines changed

iam_test.go

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,21 +185,30 @@ func TestSigningMethodIAM_Override(t *testing.T) {
185185
}
186186

187187
func TestSigningMethodIAM_Sign(t *testing.T) {
188+
ctx, err := newContextFunc()
189+
if err != nil {
190+
t.Errorf("could not get context: %v", err)
191+
return
192+
}
188193
type args struct {
189194
signingString string
190195
key interface{}
191196
}
192197
tests := []struct {
193-
name string
194-
args args
195-
wantErr error
198+
name string
199+
args args
200+
method *SigningMethodIAM
201+
wantErr bool
202+
compareErr error
196203
}{
197204
{
198205
"InvalidKey",
199206
args{
200207
"",
201208
"",
202209
},
210+
SigningMethodIAMJWT,
211+
true,
203212
jwt.ErrInvalidKey,
204213
},
205214
{
@@ -208,14 +217,35 @@ func TestSigningMethodIAM_Sign(t *testing.T) {
208217
"",
209218
context.Background(),
210219
},
220+
SigningMethodIAMJWT,
221+
true,
211222
ErrMissingConfig,
212223
},
224+
{
225+
"InvalidServiceAccountJWT",
226+
args{
227+
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ",
228+
NewIAMContext(ctx, &IAMConfig{ServiceAccount: "invalid"}),
229+
},
230+
SigningMethodIAMJWT,
231+
true,
232+
nil,
233+
},
234+
{
235+
"InvalidServiceAccountBlob",
236+
args{
237+
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ",
238+
NewIAMContext(ctx, &IAMConfig{ServiceAccount: "invalid"}),
239+
},
240+
SigningMethodIAMBlob,
241+
true,
242+
nil,
243+
},
213244
}
214245
for _, tt := range tests {
215246
t.Run(tt.name, func(t *testing.T) {
216-
_, err := SigningMethodIAMJWT.Sign(tt.args.signingString, tt.args.key)
217-
if err != tt.wantErr {
218-
t.Errorf("SigningMethodIAM.Sign() error = %v, wantErr %v", err, tt.wantErr)
247+
if _, gotErr := tt.method.Sign(tt.args.signingString, tt.args.key); (gotErr != nil) != tt.wantErr || (tt.compareErr != nil && tt.compareErr != gotErr) {
248+
t.Errorf("%T.Sign() error = %v, wantErr %v, compareErr %v", tt.method, gotErr, tt.wantErr, tt.compareErr)
219249
return
220250
}
221251
})
@@ -271,6 +301,23 @@ func TestIAMVerfiyKeyfunc(t *testing.T) {
271301
},
272302
true,
273303
},
304+
{
305+
"InvalidServiceAccount",
306+
args{
307+
ctx,
308+
&IAMConfig{
309+
ServiceAccount: "invalid",
310+
},
311+
&jwt.Token{
312+
Method: SigningMethodIAMJWT,
313+
Header: map[string]interface{}{
314+
"alg": SigningMethodIAMJWT.Alg(),
315+
"kid": "invalid",
316+
},
317+
},
318+
},
319+
true,
320+
},
274321
}
275322
for _, tt := range tests {
276323
t.Run(tt.name, func(t *testing.T) {

kms_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,77 @@ func TestSigningMethodKMS_Hash(t *testing.T) {
279279
})
280280
}
281281
}
282+
283+
func TestKMSVerfiyKeyfunc(t *testing.T) {
284+
ctx, err := newContextFunc()
285+
if err != nil {
286+
t.Errorf("could not get context: %v", err)
287+
return
288+
}
289+
testKeys, err := readKeys()
290+
if err != nil {
291+
t.Errorf("could not read keys: %v", err)
292+
return
293+
}
294+
if len(testKeys) < 1 {
295+
t.Errorf("no keys to test with")
296+
return
297+
}
298+
type args struct {
299+
ctx context.Context
300+
config *KMSConfig
301+
token *jwt.Token
302+
}
303+
tests := []struct {
304+
name string
305+
args args
306+
wantKeyFuncErr bool
307+
wantErr bool
308+
}{
309+
{
310+
"WrongMethod",
311+
args{
312+
ctx,
313+
&KMSConfig{
314+
KeyPath: testKeys[0].KeyPath,
315+
},
316+
&jwt.Token{
317+
Method: jwt.SigningMethodPS256,
318+
Header: map[string]interface{}{
319+
"alg": "PS256",
320+
},
321+
},
322+
},
323+
false,
324+
true,
325+
},
326+
{
327+
"InvalidKeyPath",
328+
args{
329+
ctx,
330+
&KMSConfig{
331+
KeyPath: "invalid",
332+
},
333+
&jwt.Token{
334+
Method: SigningMethodKMSES256,
335+
Header: map[string]interface{}{
336+
"alg": SigningMethodKMSES256.Alg(),
337+
},
338+
},
339+
},
340+
true,
341+
true,
342+
},
343+
}
344+
for _, tt := range tests {
345+
t.Run(tt.name, func(t *testing.T) {
346+
if keyFunc, gotErr := KMSVerfiyKeyfunc(tt.args.ctx, tt.args.config); (gotErr != nil) != tt.wantKeyFuncErr {
347+
t.Errorf("VerifyKeyfunc() error = %v, wantErr %v", gotErr, tt.wantKeyFuncErr)
348+
} else if gotErr == nil {
349+
if _, gotErr = keyFunc(tt.args.token); (gotErr != nil) != tt.wantErr {
350+
t.Errorf("VerifyKeyfunc().Keyfunc() error = %v, wantErr %v", gotErr, tt.wantErr)
351+
}
352+
}
353+
})
354+
}
355+
}

0 commit comments

Comments
 (0)