fix query param handling
This commit is contained in:
parent
e22a0b68b4
commit
458c2a52c4
2 changed files with 85 additions and 1 deletions
|
@ -497,7 +497,7 @@ func mergeQueryParams(uri *url.URL, params url.Values) string {
|
|||
queries := uri.Query()
|
||||
for param, values := range params {
|
||||
for _, value := range values {
|
||||
queries.Set(param, value)
|
||||
queries.Add(param, value)
|
||||
}
|
||||
}
|
||||
uri.RawQuery = queries.Encode()
|
||||
|
|
|
@ -793,6 +793,90 @@ func TestAuthResponseURL(t *testing.T) {
|
|||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with query",
|
||||
args{
|
||||
"uri?param=value",
|
||||
oidc.ResponseTypeCode,
|
||||
"",
|
||||
map[string][]string{"test": {"test"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?param=value&test=test",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with query response type id token",
|
||||
args{
|
||||
"uri?param=value",
|
||||
oidc.ResponseTypeIDToken,
|
||||
"",
|
||||
map[string][]string{"test": {"test"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?param=value#test=test",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with existing query",
|
||||
args{
|
||||
"uri?test=value",
|
||||
oidc.ResponseTypeCode,
|
||||
"",
|
||||
map[string][]string{"test": {"test"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?test=value&test=test",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with existing query response type id token",
|
||||
args{
|
||||
"uri?test=value",
|
||||
oidc.ResponseTypeIDToken,
|
||||
"",
|
||||
map[string][]string{"test": {"test"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?test=value#test=test",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with existing query and multiple values",
|
||||
args{
|
||||
"uri?test=value",
|
||||
oidc.ResponseTypeCode,
|
||||
"",
|
||||
map[string][]string{"test": {"test", "test2"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?test=value&test=test&test=test2",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
{
|
||||
"with existing query and multiple values response type id token",
|
||||
args{
|
||||
"uri?test=value",
|
||||
oidc.ResponseTypeIDToken,
|
||||
"",
|
||||
map[string][]string{"test": {"test", "test2"}},
|
||||
&mockEncoder{},
|
||||
},
|
||||
res{
|
||||
"uri?test=value#test=test&test=test2",
|
||||
nil,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue