Files
oidc/pkg/op/token_request_test.go
Wim Van Laer a4ecfb1c09 Merge branch 'main' into merge-main
# Conflicts:
#	README.md
#	example/client/app/app.go
#	example/server/exampleop/op.go
#	example/server/main.go
#	pkg/client/client.go
#	pkg/client/rp/relying_party.go
#	pkg/client/rp/relying_party_test.go
#	pkg/client/tokenexchange/tokenexchange.go
#	pkg/crypto/key_test.go
#	pkg/oidc/token.go
#	pkg/oidc/verifier.go
#	pkg/op/auth_request.go
#	pkg/op/device.go
#	pkg/op/server_http_routes_test.go
#	pkg/op/token.go
#	pkg/op/token_refresh.go
2025-11-28 11:19:02 +01:00

76 lines
1.9 KiB
Go

package op_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/zitadel/oidc/v3/pkg/oidc"
"github.com/zitadel/oidc/v3/pkg/op"
)
func TestAuthorizeCodeChallenge(t *testing.T) {
tests := []struct {
name string
codeVerifier string
codeChallenge *oidc.CodeChallenge
want func(t *testing.T, err error)
}{
{
name: "missing both code_verifier and code_challenge",
codeVerifier: "",
codeChallenge: nil,
want: func(t *testing.T, err error) {
assert.Nil(t, err)
},
},
{
name: "valid code_verifier",
codeVerifier: "Hello World!",
codeChallenge: &oidc.CodeChallenge{
Challenge: "f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk",
Method: oidc.CodeChallengeMethodS256,
},
want: func(t *testing.T, err error) {
assert.Nil(t, err)
},
},
{
name: "invalid code_verifier",
codeVerifier: "Hi World!",
codeChallenge: &oidc.CodeChallenge{
Challenge: "f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk",
Method: oidc.CodeChallengeMethodS256,
},
want: func(t *testing.T, err error) {
assert.ErrorContains(t, err, "invalid code_verifier")
},
},
{
name: "code_verifier provided without code_challenge",
codeVerifier: "code_verifier",
codeChallenge: nil,
want: func(t *testing.T, err error) {
assert.ErrorContains(t, err, "code_verifier unexpectedly provided")
},
},
{
name: "empty code_verifier",
codeVerifier: "",
codeChallenge: &oidc.CodeChallenge{
Challenge: "f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk",
Method: oidc.CodeChallengeMethodS256,
},
want: func(t *testing.T, err error) {
assert.ErrorContains(t, err, "code_verifier required")
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := op.AuthorizeCodeChallenge(tt.codeVerifier, tt.codeChallenge)
tt.want(t, err)
})
}
}