mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2024-11-28 09:08:44 +02:00
114 lines
2.5 KiB
Go
114 lines
2.5 KiB
Go
package providers
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
. "github.com/onsi/gomega"
|
|
"golang.org/x/oauth2"
|
|
)
|
|
|
|
func Test_makeAuthorizationHeader(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
prefix string
|
|
token string
|
|
extraHeaders map[string]string
|
|
}{
|
|
{
|
|
name: "With an empty prefix, token and no additional headers",
|
|
prefix: "",
|
|
token: "",
|
|
extraHeaders: nil,
|
|
},
|
|
{
|
|
name: "With a Bearer token type",
|
|
prefix: tokenTypeBearer,
|
|
token: "abcdef",
|
|
extraHeaders: nil,
|
|
},
|
|
{
|
|
name: "With a Token token type",
|
|
prefix: tokenTypeToken,
|
|
token: "123456",
|
|
extraHeaders: nil,
|
|
},
|
|
{
|
|
name: "With a Bearer token type and Accept application/json",
|
|
prefix: tokenTypeToken,
|
|
token: "abc",
|
|
extraHeaders: map[string]string{
|
|
acceptHeader: acceptApplicationJSON,
|
|
},
|
|
},
|
|
{
|
|
name: "With a Bearer token type and multiple headers",
|
|
prefix: tokenTypeToken,
|
|
token: "123",
|
|
extraHeaders: map[string]string{
|
|
acceptHeader: acceptApplicationJSON,
|
|
"foo": "bar",
|
|
"key": "value",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
g := NewWithT(t)
|
|
|
|
header := makeAuthorizationHeader(tc.prefix, tc.token, tc.extraHeaders)
|
|
g.Expect(header.Get("Authorization")).To(Equal(fmt.Sprintf("%s %s", tc.prefix, tc.token)))
|
|
for k, v := range tc.extraHeaders {
|
|
g.Expect(header.Get(k)).To(Equal(v))
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_getIDToken(t *testing.T) {
|
|
const idToken = "eyJfoobar.eyJfoobar.12345asdf"
|
|
g := NewWithT(t)
|
|
|
|
token := &oauth2.Token{}
|
|
g.Expect(getIDToken(token)).To(Equal(""))
|
|
|
|
extraToken := token.WithExtra(map[string]interface{}{
|
|
"id_token": idToken,
|
|
})
|
|
g.Expect(getIDToken(extraToken)).To(Equal(idToken))
|
|
}
|
|
|
|
func Test_formatGroup(t *testing.T) {
|
|
testCases := map[string]struct {
|
|
rawGroup interface{}
|
|
expected string
|
|
}{
|
|
"String Group": {
|
|
rawGroup: "group",
|
|
expected: "group",
|
|
},
|
|
"Numeric Group": {
|
|
rawGroup: 123,
|
|
expected: "123",
|
|
},
|
|
"Map Group": {
|
|
rawGroup: map[string]string{"id": "1", "name": "Test"},
|
|
expected: "{\"id\":\"1\",\"name\":\"Test\"}",
|
|
},
|
|
"List Group": {
|
|
rawGroup: []string{"First", "Second"},
|
|
expected: "[\"First\",\"Second\"]",
|
|
},
|
|
}
|
|
|
|
for testName, tc := range testCases {
|
|
t.Run(testName, func(t *testing.T) {
|
|
g := NewWithT(t)
|
|
formattedGroup, err := formatGroup(tc.rawGroup)
|
|
g.Expect(err).ToNot(HaveOccurred())
|
|
g.Expect(formattedGroup).To(Equal(tc.expected))
|
|
})
|
|
}
|
|
}
|