mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
43 lines
1.4 KiB
// Copyright 2025 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package httpauth |
|
|
|
import ( |
|
"encoding/base64" |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestParseAuthorizationHeader(t *testing.T) { |
|
type parsed = ParsedAuthorizationHeader |
|
type basic = BasicAuth |
|
type bearer = BearerToken |
|
cases := []struct { |
|
headerValue string |
|
expected parsed |
|
ok bool |
|
}{ |
|
{"", parsed{}, false}, |
|
{"?", parsed{}, false}, |
|
{"foo", parsed{}, false}, |
|
{"any value", parsed{}, false}, |
|
|
|
{"Basic ?", parsed{}, false}, |
|
{"Basic " + base64.StdEncoding.EncodeToString([]byte("foo")), parsed{}, false}, |
|
{"Basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true}, |
|
{"basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true}, |
|
|
|
{"token value", parsed{BearerToken: &bearer{"value"}}, true}, |
|
{"Token value", parsed{BearerToken: &bearer{"value"}}, true}, |
|
{"bearer value", parsed{BearerToken: &bearer{"value"}}, true}, |
|
{"Bearer value", parsed{BearerToken: &bearer{"value"}}, true}, |
|
{"Bearer wrong value", parsed{}, false}, |
|
} |
|
for _, c := range cases { |
|
ret, ok := ParseAuthorizationHeader(c.headerValue) |
|
assert.Equal(t, c.ok, ok, "header %q", c.headerValue) |
|
assert.Equal(t, c.expected, ret, "header %q", c.headerValue) |
|
} |
|
}
|
|
|