@@ -0,0 +1,92 @@
8+ "github.com/bmizerany/assert"
11+func testOptions() (*Options) {
13+ o.Upstreams = append(o.Upstreams, "http://127.0.0.1:8080/")
14+ o.CookieSecret = "foobar"
15+ o.ClientID = "bazquux"
16+ o.ClientSecret = "xyzzyplugh"
20+func errorMsg(msgs []string)(string) {
21+ result := make([]string, 0)
22+ result = append(result, "Invalid configuration:")
23+ result = append(result, msgs...)
24+ return strings.Join(result, "\n ")
27+func TestNewOptions(t *testing.T) {
30+ assert.NotEqual(t, nil, err)
32+ expected := errorMsg([]string{
33+ "missing setting: upstream",
34+ "missing setting: cookie-secret",
35+ "missing setting: client-id",
36+ "missing setting: client-secret"})
37+ assert.Equal(t, expected, err.Error())
40+func TestInitializedOptions(t *testing.T) {
42+ assert.Equal(t, nil, o.Validate())
45+// Note that it's not worth testing nonparseable URLs, since url.Parse()
46+// seems to parse damn near anything.
47+func TestRedirectUrl(t *testing.T) {
49+ o.RedirectUrl = "https://myhost.com/oauth2/callback"
50+ assert.Equal(t, nil, o.Validate())
51+ expected := &url.URL{
52+ Scheme: "https", Host: "myhost.com", Path: "/oauth2/callback"}
53+ assert.Equal(t, expected, o.redirectUrl)
56+func TestProxyUrls(t *testing.T) {
58+ o.Upstreams = append(o.Upstreams, "http://127.0.0.1:8081")
59+ assert.Equal(t, nil, o.Validate())
60+ expected := []*url.URL{
61+ &url.URL{Scheme: "http", Host: "127.0.0.1:8080", Path: "/"},
62+ // note the '/' was added
63+ &url.URL{Scheme: "http", Host: "127.0.0.1:8081", Path: "/"},
65+ assert.Equal(t, expected, o.proxyUrls)
68+func TestCompiledRegex(t *testing.T) {
70+ regexps := []string{"/foo/.*", "/ba[rz]/quux"}
71+ o.SkipAuthRegex = regexps
72+ assert.Equal(t, nil, o.Validate())
73+ actual := make([]string, 0)
74+ for _, regex := range o.CompiledRegex {
75+ actual = append(actual, regex.String())
77+ assert.Equal(t, regexps, actual)
80+func TestCompiledRegexError(t *testing.T) {
82+ o.SkipAuthRegex = []string{"(foobaz", "barquux)"}
84+ assert.NotEqual(t, nil, err)
86+ expected := errorMsg([]string{
87+ "error compiling regex=\"(foobaz\" error parsing regexp: " +
88+ "missing closing ): `(foobaz`",
89+ "error compiling regex=\"barquux)\" error parsing regexp: " +
90+ "unexpected ): `barquux)`"})
91+ assert.Equal(t, expected, err.Error())