mmm
This commit is contained in:
parent
c255491b9c
commit
d798ffd67f
1 changed files with 81 additions and 18 deletions
|
@ -14,6 +14,7 @@ import (
|
|||
"net/http"
|
||||
"net/http/cookiejar"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
@ -29,7 +30,8 @@ const lifet = 180
|
|||
|
||||
var sm *session.Manager //current session impl.
|
||||
var testserver *httptest.Server //httptest server h2
|
||||
var testclient *http.Client
|
||||
var testclient *http.Client //httptest client h2
|
||||
var cursid string
|
||||
|
||||
type TestServer struct{}
|
||||
|
||||
|
@ -40,9 +42,9 @@ func (ts *TestServer) Serve() {
|
|||
mux.HandleFunc("/setsessionvar", ts.setSessionVar)
|
||||
mux.HandleFunc("/getsessionvar", ts.getSessionVar)
|
||||
mux.HandleFunc("/updatesessionvar", ts.updateSessionVar)
|
||||
mux.HandleFunc("/validateupdatedvalue", ts.validateUpdatedValue)
|
||||
mux.HandleFunc("/deletesessionvalue", ts.deleteSessionValue)
|
||||
mux.HandleFunc("/validatedeletedvalue", ts.validateDeletedValue)
|
||||
mux.HandleFunc("/validateupdatedvar", ts.validateUpdatedValue)
|
||||
mux.HandleFunc("/deletesessionvar", ts.deleteSessionValue)
|
||||
mux.HandleFunc("/validatedeletedvar", ts.validateDeletedValue)
|
||||
mux.HandleFunc("/sessionGC", ts.sessionGC) //ck
|
||||
testserver = httptest.NewUnstartedServer(mux)
|
||||
testserver.EnableHTTP2 = true
|
||||
|
@ -98,15 +100,19 @@ func (ts *TestServer) getSessionVar(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
if v, err = sess.Get("Pes"); err != nil {
|
||||
io.WriteString(w, err.Error())
|
||||
return
|
||||
}
|
||||
if n, err = sess.Get("Vek"); err != nil {
|
||||
io.WriteString(w, err.Error())
|
||||
return
|
||||
}
|
||||
if v.(string) != "Minule" {
|
||||
fmt.Fprintf(w, "Value of session key: 'Pes' must be 'Minule', not: %s", v)
|
||||
return
|
||||
}
|
||||
if n.(int) != 10 {
|
||||
if n.(int) != 16 {
|
||||
fmt.Fprintf(w, "Value of session key: 'Vek' must be '16', not: %d", n)
|
||||
return
|
||||
}
|
||||
io.WriteString(w, "OK")
|
||||
}
|
||||
|
@ -191,27 +197,84 @@ func MkRequest(method, path string) (body []byte, err error) {
|
|||
return io.ReadAll(res.Body)
|
||||
}
|
||||
|
||||
func t1(t *testing.T) {
|
||||
func CheckRequest(path string) (err error) {
|
||||
var res []byte
|
||||
var err error
|
||||
if res, err = MkRequest("GET", "/startsession"); err != nil {
|
||||
t.Error(err)
|
||||
if res, err = MkRequest("GET", path); err != nil {
|
||||
return fmt.Errorf("Make request: %s failed: %v", path, err)
|
||||
}
|
||||
if string(res) != "OK" {
|
||||
t.Errorf("Response from test request not OK, but: %s", res)
|
||||
return fmt.Errorf("Response from test request not OK, but: %s", res)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func t1(t *testing.T) {
|
||||
if err := CheckRequest("/startsession"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
uri, _ := url.Parse(testserver.URL + "/startsession")
|
||||
cks := testclient.Jar.Cookies(uri)
|
||||
if len(cks) != 1 && cks[0].Name != sid {
|
||||
t.Errorf("After session start must be set 1 cookie named: '%s'", sid)
|
||||
}
|
||||
}
|
||||
|
||||
func t2(t *testing.T) {}
|
||||
func t3(t *testing.T) {}
|
||||
func t4(t *testing.T) {}
|
||||
func t5(t *testing.T) {}
|
||||
func t6(t *testing.T) {}
|
||||
func t7(t *testing.T) {}
|
||||
func t2(t *testing.T) {
|
||||
if err := CheckRequest("/destroysession"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
uri, _ := url.Parse(testserver.URL + "/destroysession")
|
||||
cks := testclient.Jar.Cookies(uri)
|
||||
if len(cks) != 0 {
|
||||
t.Errorf("After session destroy musoyt be 0 cookies in jar")
|
||||
}
|
||||
}
|
||||
|
||||
func t3(t *testing.T) {
|
||||
if err := CheckRequest("/setsessionvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t4(t *testing.T) {
|
||||
if err := CheckRequest("/getsessionvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t5(t *testing.T) {
|
||||
if err := CheckRequest("/updatesessionvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t6(t *testing.T) {
|
||||
if err := CheckRequest("/validateupdatedvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t7(t *testing.T) {
|
||||
if err := CheckRequest("/deletesessionvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t8(t *testing.T) {
|
||||
if err := CheckRequest("/validatedeletedvar"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func t9(t *testing.T) {
|
||||
if err := CheckRequest("/sessionGC"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
//TODO check ck invalidation
|
||||
}
|
||||
|
||||
// iterate all session storage impls. and run t1 - t7
|
||||
func TestRunAll(t *testing.T) {
|
||||
|
||||
ts := &TestServer{}
|
||||
ts.Serve()
|
||||
//all impls. subtests
|
||||
|
@ -222,7 +285,7 @@ func TestRunAll(t *testing.T) {
|
|||
if sm, err = session.NewManager(pn, sid, lifet, true); err != nil {
|
||||
t.Errorf("Session provider %s failed initialize err: %v", pn, err)
|
||||
}
|
||||
fns := []func(t *testing.T){t1, t2, t3, t4, t5, t6, t7}
|
||||
fns := []func(t *testing.T){t1, t2, t3, t4, t5, t6, t7, t8, t9}
|
||||
for idx, fn := range fns {
|
||||
t.Run(fmt.Sprintf("Test%d", idx+1), fn)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue