mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2024-11-24 08:52:25 +02:00
104 lines
3.0 KiB
Go
104 lines
3.0 KiB
Go
package middleware
|
|
|
|
import (
|
|
"errors"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/ginkgo/extensions/table"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Session utilities suite", func() {
|
|
Context("splitAuthHeader", func() {
|
|
type splitAuthTableInput struct {
|
|
header string
|
|
expectedErr error
|
|
expectedTokenType string
|
|
expectedTokenValue string
|
|
}
|
|
|
|
DescribeTable("with a header value",
|
|
func(in splitAuthTableInput) {
|
|
tt, tv, err := splitAuthHeader(in.header)
|
|
if in.expectedErr != nil {
|
|
Expect(err).To(MatchError(in.expectedErr))
|
|
} else {
|
|
Expect(err).ToNot(HaveOccurred())
|
|
}
|
|
Expect(tt).To(Equal(in.expectedTokenType))
|
|
Expect(tv).To(Equal(in.expectedTokenValue))
|
|
},
|
|
Entry("Bearer abcdef", splitAuthTableInput{
|
|
header: "Bearer abcdef",
|
|
expectedErr: nil,
|
|
expectedTokenType: "Bearer",
|
|
expectedTokenValue: "abcdef",
|
|
}),
|
|
Entry("Bearer", splitAuthTableInput{
|
|
header: "Bearer",
|
|
expectedErr: errors.New("invalid authorization header: \"Bearer\""),
|
|
expectedTokenType: "",
|
|
expectedTokenValue: "",
|
|
}),
|
|
Entry("Bearer abc def", splitAuthTableInput{
|
|
header: "Bearer abc def",
|
|
expectedErr: errors.New("invalid authorization header: \"Bearer abc def\""),
|
|
expectedTokenType: "",
|
|
expectedTokenValue: "",
|
|
}),
|
|
)
|
|
})
|
|
|
|
Context("getBasicAuthCredentials", func() {
|
|
type getBasicAuthCredentialsTableInput struct {
|
|
token string
|
|
expectedErr error
|
|
expectedUser string
|
|
expectedPassword string
|
|
}
|
|
|
|
DescribeTable("from token",
|
|
func(in getBasicAuthCredentialsTableInput) {
|
|
user, password, err := getBasicAuthCredentials(in.token)
|
|
if in.expectedErr != nil {
|
|
Expect(err).To(MatchError(in.expectedErr))
|
|
} else {
|
|
Expect(err).ToNot(HaveOccurred())
|
|
}
|
|
Expect(user).To(Equal(in.expectedUser))
|
|
Expect(password).To(Equal(in.expectedPassword))
|
|
},
|
|
Entry("<no value>", getBasicAuthCredentialsTableInput{
|
|
token: "",
|
|
expectedErr: errors.New("invalid format: \"\""),
|
|
expectedUser: "",
|
|
expectedPassword: "",
|
|
}),
|
|
Entry("invalid-base64", getBasicAuthCredentialsTableInput{
|
|
token: "invalid-base64",
|
|
expectedErr: errors.New("invalid basic auth token: illegal base64 data at input byte 7"),
|
|
expectedUser: "",
|
|
expectedPassword: "",
|
|
}),
|
|
Entry("Base64(some-user:some-password)", getBasicAuthCredentialsTableInput{
|
|
token: "c29tZS11c2VyOnNvbWUtcGFzc3dvcmQ=",
|
|
expectedErr: nil,
|
|
expectedUser: "some-user",
|
|
expectedPassword: "some-password",
|
|
}),
|
|
Entry("Base64(no-password:)", getBasicAuthCredentialsTableInput{
|
|
token: "bm8tcGFzc3dvcmQ6",
|
|
expectedErr: nil,
|
|
expectedUser: "no-password",
|
|
expectedPassword: "",
|
|
}),
|
|
Entry("Base64(:no-user)", getBasicAuthCredentialsTableInput{
|
|
token: "Om5vLXVzZXI=",
|
|
expectedErr: nil,
|
|
expectedUser: "",
|
|
expectedPassword: "no-user",
|
|
}),
|
|
)
|
|
})
|
|
})
|