github.com/crewjam/saml@v0.4.14/samlidp/session_test.go (about)

     1  package samlidp
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"strings"
     7  	"testing"
     8  
     9  	"gotest.tools/assert"
    10  	is "gotest.tools/assert/cmp"
    11  )
    12  
    13  func TestSessionsCrud(t *testing.T) {
    14  	test := NewServerTest(t)
    15  	w := httptest.NewRecorder()
    16  	r, _ := http.NewRequest("GET", "https://idp.example.com/sessions/", nil)
    17  	test.Server.ServeHTTP(w, r)
    18  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    19  	assert.Check(t, is.Equal("{\"sessions\":[]}\n",
    20  		w.Body.String()))
    21  
    22  	w = httptest.NewRecorder()
    23  	r, _ = http.NewRequest("PUT", "https://idp.example.com/users/alice",
    24  		strings.NewReader(`{"name": "alice", "password": "hunter2"}`+"\n"))
    25  	test.Server.ServeHTTP(w, r)
    26  	assert.Check(t, is.Equal(http.StatusNoContent, w.Code))
    27  
    28  	w = httptest.NewRecorder()
    29  	r, _ = http.NewRequest("POST", "https://idp.example.com/login",
    30  		strings.NewReader("user=alice&password=hunter2"))
    31  	r.Header.Set("Content-type", "application/x-www-form-urlencoded")
    32  	test.Server.ServeHTTP(w, r)
    33  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    34  	assert.Check(t, is.Equal("session=AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=; Path=/; Max-Age=3600; HttpOnly; Secure",
    35  		w.Header().Get("Set-Cookie")))
    36  	assert.Check(t, is.Equal("{\"ID\":\"AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=\",\"CreateTime\":\"2015-12-01T01:57:09Z\",\"ExpireTime\":\"2015-12-01T02:57:09Z\",\"Index\":\"40424446484a4c4e50525456585a5c5e60626466686a6c6e70727476787a7c7e\",\"NameID\":\"\",\"NameIDFormat\":\"\",\"SubjectID\":\"\",\"Groups\":null,\"UserName\":\"alice\",\"UserEmail\":\"\",\"UserCommonName\":\"\",\"UserSurname\":\"\",\"UserGivenName\":\"\",\"UserScopedAffiliation\":\"\",\"CustomAttributes\":null}\n",
    37  		w.Body.String()))
    38  
    39  	w = httptest.NewRecorder()
    40  	r, _ = http.NewRequest("GET", "https://idp.example.com/login", nil)
    41  	r.Header.Set("Cookie", "session=AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=")
    42  	test.Server.ServeHTTP(w, r)
    43  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    44  	assert.Check(t, is.Equal("{\"ID\":\"AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=\",\"CreateTime\":\"2015-12-01T01:57:09Z\",\"ExpireTime\":\"2015-12-01T02:57:09Z\",\"Index\":\"40424446484a4c4e50525456585a5c5e60626466686a6c6e70727476787a7c7e\",\"NameID\":\"\",\"NameIDFormat\":\"\",\"SubjectID\":\"\",\"Groups\":null,\"UserName\":\"alice\",\"UserEmail\":\"\",\"UserCommonName\":\"\",\"UserSurname\":\"\",\"UserGivenName\":\"\",\"UserScopedAffiliation\":\"\",\"CustomAttributes\":null}\n",
    45  		w.Body.String()))
    46  
    47  	w = httptest.NewRecorder()
    48  	r, _ = http.NewRequest("GET", "https://idp.example.com/sessions/AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=", nil)
    49  	test.Server.ServeHTTP(w, r)
    50  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    51  	assert.Check(t, is.Equal("{\"ID\":\"AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=\",\"CreateTime\":\"2015-12-01T01:57:09Z\",\"ExpireTime\":\"2015-12-01T02:57:09Z\",\"Index\":\"40424446484a4c4e50525456585a5c5e60626466686a6c6e70727476787a7c7e\",\"NameID\":\"\",\"NameIDFormat\":\"\",\"SubjectID\":\"\",\"Groups\":null,\"UserName\":\"alice\",\"UserEmail\":\"\",\"UserCommonName\":\"\",\"UserSurname\":\"\",\"UserGivenName\":\"\",\"UserScopedAffiliation\":\"\",\"CustomAttributes\":null}\n",
    52  		w.Body.String()))
    53  
    54  	w = httptest.NewRecorder()
    55  	r, _ = http.NewRequest("DELETE", "https://idp.example.com/sessions/AAIEBggKDA4QEhQWGBocHiAiJCYoKiwuMDI0Njg6PD4=", nil)
    56  	test.Server.ServeHTTP(w, r)
    57  	assert.Check(t, is.Equal(http.StatusNoContent, w.Code))
    58  
    59  	w = httptest.NewRecorder()
    60  	r, _ = http.NewRequest("GET", "https://idp.example.com/sessions/", nil)
    61  	test.Server.ServeHTTP(w, r)
    62  	assert.Check(t, is.Equal(http.StatusOK, w.Code))
    63  	assert.Check(t, is.Equal("{\"sessions\":[]}\n",
    64  		w.Body.String()))
    65  
    66  }