@@ -0,0 +1,51 @@
1+package sessions_test
2+
3+import (
4+ "testing"
5+
6+ . "github.com/onsi/ginkgo"
7+ . "github.com/onsi/gomega"
8+ "github.com/pusher/oauth2_proxy/pkg/apis/options"
9+ "github.com/pusher/oauth2_proxy/pkg/sessions"
10+ "github.com/pusher/oauth2_proxy/pkg/sessions/cookie"
11+)
12+
13+func TestSessionStore(t *testing.T) {
14+ RegisterFailHandler(Fail)
15+ RunSpecs(t, "SessionStore")
16+}
17+
18+var _ = Describe("NewSessionStore", func() {
19+ var opts *options.SessionOptions
20+ var cookieOpts *options.CookieOptions
21+
22+ BeforeEach(func() {
23+ opts = &options.SessionOptions{}
24+ cookieOpts = &options.CookieOptions{}
25+ })
26+
27+ Context("with type 'cookie'", func() {
28+ BeforeEach(func() {
29+ opts.Type = options.CookieSessionStoreType
30+ })
31+
32+ It("creates a CookieSessionStore", func() {
33+ ss, err := sessions.NewSessionStore(opts, cookieOpts)
34+ Expect(err).NotTo(HaveOccurred())
35+ Expect(ss).To(BeAssignableToTypeOf(&cookie.SessionStore{}))
36+ })
37+ })
38+
39+ Context("with an invalid type", func() {
40+ BeforeEach(func() {
41+ opts.Type = "invalid-type"
42+ })
43+
44+ It("returns an error", func() {
45+ ss, err := sessions.NewSessionStore(opts, cookieOpts)
46+ Expect(err).To(HaveOccurred())
47+ Expect(err.Error()).To(Equal("unknown session store type 'invalid-type'"))
48+ Expect(ss).To(BeNil())
49+ })
50+ })
51+})