From d798ffd67f2d197a8a5d7e433177fad1280b06e7 Mon Sep 17 00:00:00 2001 From: DarkGopher Date: Wed, 4 Jun 2025 10:14:02 +0200 Subject: [PATCH] mmm --- tests/t_test.go | 99 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 18 deletions(-) diff --git a/tests/t_test.go b/tests/t_test.go index 1148e56..cd328ef 100644 --- a/tests/t_test.go +++ b/tests/t_test.go @@ -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) }