|  | 
|  | 1 | +// Copyright 2025 The Gitea Authors. All rights reserved. | 
|  | 2 | +// SPDX-License-Identifier: MIT | 
|  | 3 | + | 
|  | 4 | +package httpauth | 
|  | 5 | + | 
|  | 6 | +import ( | 
|  | 7 | +	"encoding/base64" | 
|  | 8 | +	"testing" | 
|  | 9 | + | 
|  | 10 | +	"github.com/stretchr/testify/assert" | 
|  | 11 | +) | 
|  | 12 | + | 
|  | 13 | +func TestParseAuthorizationHeader(t *testing.T) { | 
|  | 14 | +	type parsed = ParsedAuthorizationHeader | 
|  | 15 | +	type basic = BasicAuth | 
|  | 16 | +	type bearer = BearerToken | 
|  | 17 | +	cases := []struct { | 
|  | 18 | +		headerValue string | 
|  | 19 | +		expected    parsed | 
|  | 20 | +		ok          bool | 
|  | 21 | +	}{ | 
|  | 22 | +		{"", parsed{}, false}, | 
|  | 23 | +		{"?", parsed{}, false}, | 
|  | 24 | +		{"foo", parsed{}, false}, | 
|  | 25 | +		{"any value", parsed{}, false}, | 
|  | 26 | + | 
|  | 27 | +		{"Basic ?", parsed{}, false}, | 
|  | 28 | +		{"Basic " + base64.StdEncoding.EncodeToString([]byte("foo")), parsed{}, false}, | 
|  | 29 | +		{"Basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true}, | 
|  | 30 | +		{"basic " + base64.StdEncoding.EncodeToString([]byte("foo:bar")), parsed{BasicAuth: &basic{"foo", "bar"}}, true}, | 
|  | 31 | + | 
|  | 32 | +		{"token value", parsed{BearerToken: &bearer{"value"}}, true}, | 
|  | 33 | +		{"Token value", parsed{BearerToken: &bearer{"value"}}, true}, | 
|  | 34 | +		{"bearer value", parsed{BearerToken: &bearer{"value"}}, true}, | 
|  | 35 | +		{"Bearer value", parsed{BearerToken: &bearer{"value"}}, true}, | 
|  | 36 | +		{"Bearer wrong value", parsed{}, false}, | 
|  | 37 | +	} | 
|  | 38 | +	for _, c := range cases { | 
|  | 39 | +		ret, ok := ParseAuthorizationHeader(c.headerValue) | 
|  | 40 | +		assert.Equal(t, c.ok, ok, "header %q", c.headerValue) | 
|  | 41 | +		assert.Equal(t, c.expected, ret, "header %q", c.headerValue) | 
|  | 42 | +	} | 
|  | 43 | +} | 
0 commit comments