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 }