Skip to content

Commit bc4ba74

Browse files
committed
use yaml for tests
1 parent f31c082 commit bc4ba74

File tree

5 files changed

+53
-29
lines changed

5 files changed

+53
-29
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require github.com/golang-jwt/jwt/v5 v5.0.0
77
require (
88
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964
99
github.com/go-jose/go-jose/v3 v3.0.0
10+
gopkg.in/yaml.v3 v3.0.1
1011
)
1112

1213
require golang.org/x/crypto v0.12.0 // indirect

go.sum

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
2222
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2323
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
2424
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
25+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
2526
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
26-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
2727
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
28+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
29+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

jwt.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -313,18 +313,20 @@ func (plugin *JWTPlugin) fetchKeys(issuer string) error {
313313
func canonicalizeRequire(require map[string]interface{}) (map[string][]*template.Template, error) {
314314
converted := make(map[string][]*template.Template, len(require))
315315
for key, value := range require {
316+
var templates []*template.Template
317+
var err error
316318
switch value := value.(type) {
317319
case string:
318-
converted[key], _ = createTemplates([]interface{}{value})
320+
templates, err = createTemplates([]interface{}{value})
319321
case []interface{}:
320-
templates, err := createTemplates(value)
321-
if err != nil {
322-
return nil, err
323-
}
324-
converted[key] = templates
322+
templates, err = createTemplates(value)
325323
default:
326324
return nil, fmt.Errorf("invalid type (%s) for required claim: %s", reflect.TypeOf(value), key)
327325
}
326+
if err != nil {
327+
return nil, err
328+
}
329+
converted[key] = templates
328330
}
329331
return converted, nil
330332
}

jwt_test.go

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
"github.com/go-jose/go-jose/v3"
2222
"github.com/golang-jwt/jwt/v5"
23+
"gopkg.in/yaml.v3"
2324
)
2425

2526
type Test struct {
@@ -835,39 +836,54 @@ func TestCanonicalizeDomains(tester *testing.T) {
835836
}
836837

837838
func TestCanonicalizeRequire(tester *testing.T) {
838-
data := TemplateVariables{
839+
var bad map[string]interface{}
840+
variables := TemplateVariables{
839841
URL: "test",
840842
}
841843

842-
bad := map[string]interface{}{
843-
"first": "one {{.URL}}",
844-
"second": []interface{}{"two {{.URL}}", "three {{.URL}}"},
845-
"bad": 9,
846-
}
847-
_, err := canonicalizeRequire(bad)
848-
if err == nil {
849-
tester.Fatal("expected err")
844+
texts := []string{
845+
`
846+
first: "one {{.URL}}"
847+
second:
848+
- "two {{.URL}}"
849+
- "three {{.URL}}"
850+
bad: 9
851+
`,
852+
`
853+
first: "one {{.URL}}"
854+
second:
855+
- 9
856+
- 10
857+
`,
858+
}
859+
for _, text := range texts {
860+
err := yaml.Unmarshal([]byte(text), &bad)
861+
if err != nil {
862+
tester.Fatal(err)
863+
}
864+
_, err = canonicalizeRequire(bad)
865+
if err == nil {
866+
tester.Fatal("expected err")
867+
}
850868
}
851869

852-
bad2 := map[string]interface{}{
853-
"first": "one {{.URL}}",
854-
"second": []interface{}{9, 10},
855-
}
856-
_, err = canonicalizeRequire(bad2)
857-
if err == nil {
858-
tester.Fatal("expected err")
859-
}
870+
text := `
871+
first: "one {{.URL}}"
872+
second:
873+
- "two {{.URL}}"
874+
- "three {{.URL}}"
875+
`
860876

861-
good := map[string]interface{}{
862-
"first": "one {{.URL}}",
863-
"second": []interface{}{"two {{.URL}}", "three {{.URL}}"},
877+
var good map[string]interface{}
878+
err := yaml.Unmarshal([]byte(text), &good)
879+
if err != nil {
880+
tester.Fatal(err)
864881
}
865-
866882
result, err := canonicalizeRequire(good)
867883
if err != nil {
868884
tester.Fatal(err)
869885
}
870-
value, err := expandTemplate(result["second"][0], &data)
886+
value, err := expandTemplate(result["second"][0], &variables)
871887
if err != nil {
872888
tester.Fatal(err)
873889
}

vendor/modules.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ github.com/golang-jwt/jwt/v5
1212
# golang.org/x/crypto v0.12.0
1313
## explicit; go 1.17
1414
golang.org/x/crypto/pbkdf2
15+
# gopkg.in/yaml.v3 v3.0.1
16+
## explicit
17+
gopkg.in/yaml.v3

0 commit comments

Comments
 (0)