github.com/chenbh/concourse/v6@v6.4.2/skymarshal/token/middleware_test.go (about)

     1  package token_test
     2  
     3  import (
     4  	"time"
     5  
     6  	"net/http"
     7  	"net/http/httptest"
     8  
     9  	"github.com/chenbh/concourse/v6/skymarshal/token"
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("Token Middleware", func() {
    15  
    16  	var (
    17  		err        error
    18  		expiry     time.Time
    19  		r          *http.Request
    20  		w          *httptest.ResponseRecorder
    21  		middleware token.Middleware
    22  	)
    23  
    24  	BeforeEach(func() {
    25  		expiry = time.Now().Add(time.Minute)
    26  
    27  		r, err = http.NewRequest("GET", "http://example.come", nil)
    28  		Expect(err).NotTo(HaveOccurred())
    29  
    30  		w = httptest.NewRecorder()
    31  
    32  		middleware = token.NewMiddleware(false)
    33  	})
    34  
    35  	Describe("Auth Tokens", func() {
    36  		Describe("GetAuthToken", func() {
    37  			var result string
    38  
    39  			BeforeEach(func() {
    40  				r.AddCookie(&http.Cookie{Name: "skymarshal_auth", Value: "blah"})
    41  			})
    42  
    43  			JustBeforeEach(func() {
    44  				result = middleware.GetAuthToken(r)
    45  			})
    46  
    47  			It("gets the token from the request", func() {
    48  				Expect(result).To(Equal("blah"))
    49  			})
    50  		})
    51  
    52  		Describe("SetAuthToken", func() {
    53  			JustBeforeEach(func() {
    54  				err = middleware.SetAuthToken(w, "blah", expiry)
    55  			})
    56  
    57  			It("writes the token to a cookie", func() {
    58  				cookies := w.Result().Cookies()
    59  				Expect(cookies).To(HaveLen(1))
    60  
    61  				Expect(cookies[0].Name).To(Equal("skymarshal_auth"))
    62  				Expect(cookies[0].Expires.Unix()).To(Equal(expiry.Unix()))
    63  				Expect(cookies[0].Value).To(Equal("blah"))
    64  			})
    65  		})
    66  
    67  		Describe("UnsetAuthToken", func() {
    68  			JustBeforeEach(func() {
    69  				middleware.UnsetAuthToken(w)
    70  			})
    71  
    72  			It("clears the token from the cookie", func() {
    73  				cookies := w.Result().Cookies()
    74  				Expect(cookies).To(HaveLen(1))
    75  				Expect(cookies[0].Name).To(Equal("skymarshal_auth"))
    76  				Expect(cookies[0].Value).To(Equal(""))
    77  			})
    78  		})
    79  	})
    80  
    81  	Describe("CSRF Tokens", func() {
    82  
    83  		Describe("GetCSRFToken", func() {
    84  			var result string
    85  
    86  			BeforeEach(func() {
    87  				r.AddCookie(&http.Cookie{Name: "skymarshal_csrf", Value: "blah"})
    88  			})
    89  
    90  			JustBeforeEach(func() {
    91  				result = middleware.GetCSRFToken(r)
    92  			})
    93  
    94  			It("gets the token from the request", func() {
    95  				Expect(result).To(Equal("blah"))
    96  			})
    97  		})
    98  
    99  		Describe("SetCSRFToken", func() {
   100  			JustBeforeEach(func() {
   101  				err = middleware.SetCSRFToken(w, "blah", expiry)
   102  			})
   103  
   104  			It("writes the token to a cookie", func() {
   105  				cookies := w.Result().Cookies()
   106  				Expect(cookies).To(HaveLen(1))
   107  				Expect(cookies[0].Name).To(Equal("skymarshal_csrf"))
   108  				Expect(cookies[0].Expires.Unix()).To(Equal(expiry.Unix()))
   109  				Expect(cookies[0].Value).To(Equal("blah"))
   110  			})
   111  		})
   112  
   113  		Describe("UnsetCSRFToken", func() {
   114  			JustBeforeEach(func() {
   115  				middleware.UnsetCSRFToken(w)
   116  			})
   117  
   118  			It("clears the token from the cookie", func() {
   119  				cookies := w.Result().Cookies()
   120  				Expect(cookies).To(HaveLen(1))
   121  				Expect(cookies[0].Name).To(Equal("skymarshal_csrf"))
   122  				Expect(cookies[0].Value).To(Equal(""))
   123  			})
   124  		})
   125  	})
   126  
   127  	Describe("State Tokens", func() {
   128  
   129  		Describe("GetStateToken", func() {
   130  			var result string
   131  
   132  			BeforeEach(func() {
   133  				r.AddCookie(&http.Cookie{Name: "skymarshal_state", Value: "blah"})
   134  			})
   135  
   136  			JustBeforeEach(func() {
   137  				result = middleware.GetStateToken(r)
   138  			})
   139  
   140  			It("gets the token from the request", func() {
   141  				Expect(result).To(Equal("blah"))
   142  			})
   143  		})
   144  
   145  		Describe("SetStateToken", func() {
   146  			JustBeforeEach(func() {
   147  				err = middleware.SetStateToken(w, "blah", expiry)
   148  			})
   149  
   150  			It("writes the token to a cookie", func() {
   151  				cookies := w.Result().Cookies()
   152  				Expect(cookies).To(HaveLen(1))
   153  				Expect(cookies[0].Name).To(Equal("skymarshal_state"))
   154  				Expect(cookies[0].Expires.Unix()).To(Equal(expiry.Unix()))
   155  				Expect(cookies[0].Value).To(Equal("blah"))
   156  			})
   157  		})
   158  
   159  		Describe("UnsetStateToken", func() {
   160  			JustBeforeEach(func() {
   161  				middleware.UnsetStateToken(w)
   162  			})
   163  
   164  			It("clears the token from the cookie", func() {
   165  				cookies := w.Result().Cookies()
   166  				Expect(cookies).To(HaveLen(1))
   167  				Expect(cookies[0].Name).To(Equal("skymarshal_state"))
   168  				Expect(cookies[0].Value).To(Equal(""))
   169  			})
   170  		})
   171  	})
   172  })