Skip to content

Commit

Permalink
refactor: refactor codebase to improve readability and test structure
Browse files Browse the repository at this point in the history
- Remove unused variable declarations and comments
- Convert tests to use subtests with `t.Run`
- Inline variable initializations within subtests

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
  • Loading branch information
appleboy committed Jan 17, 2025
1 parent 6b6b4fc commit db15027
Showing 1 changed file with 57 additions and 140 deletions.
197 changes: 57 additions & 140 deletions redistore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,23 +94,9 @@ type FlashMessage struct {
}

func TestRediStore(t *testing.T) {
var (
req *http.Request
rsp *ResponseRecorder
hdr http.Header
ok bool
cookies []string
session *sessions.Session
flashes []interface{}
)

// Copyright 2012 The Gorilla Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Round 1 ----------------------------------------------------------------
{
// RedisStore
var cookies []string
var ok bool
t.Run("Round 1", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
if err != nil {
Expand All @@ -119,35 +105,29 @@ func TestRediStore(t *testing.T) {
defer store.Close()

req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
rsp = NewRecorder()
// Get a session.
if session, err = store.Get(req, "session-key"); err != nil {
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Get a flash.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 0 {
t.Errorf("Expected empty flashes; Got %v", flashes)
}
// Add some flashes.
session.AddFlash("foo")
session.AddFlash("bar")
// Custom key.
session.AddFlash("baz", "custom_key")
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
hdr = rsp.Header()
hdr := rsp.Header()
cookies, ok = hdr["Set-Cookie"]
if !ok || len(cookies) != 1 {
t.Fatalf("No cookies. Header: %s", hdr)
}
}

// Round 2 ----------------------------------------------------------------
{
})

t.Run("Round 2", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
if err != nil {
Expand All @@ -157,13 +137,12 @@ func TestRediStore(t *testing.T) {

req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
req.Header.Add("Cookie", cookies[0])
rsp = NewRecorder()
// Get a session.
if session, err = store.Get(req, "session-key"); err != nil {
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Check all saved values.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 2 {
t.Fatalf("Expected flashes; Got %v", flashes)
}
Expand All @@ -174,7 +153,6 @@ func TestRediStore(t *testing.T) {
if len(flashes) != 0 {
t.Errorf("Expected dumped flashes; Got %v", flashes)
}
// Custom key.
flashes = session.Flashes("custom_key")
if len(flashes) != 1 {
t.Errorf("Expected flashes; Got %v", flashes)
Expand All @@ -185,55 +163,42 @@ func TestRediStore(t *testing.T) {
if len(flashes) != 0 {
t.Errorf("Expected dumped flashes; Got %v", flashes)
}

// RediStore specific
// Set MaxAge to -1 to mark for deletion.
session.Options.MaxAge = -1
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
}

// Round 3 ----------------------------------------------------------------
// Custom type
})

// RedisStore
{
t.Run("Round 3", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
if err != nil {
t.Fatal(err.Error())
}
defer store.Close()

req, _ = http.NewRequest("GET", "http://localhost:8080/", nil)
rsp = NewRecorder()
// Get a session.
if session, err = store.Get(req, "session-key"); err != nil {
req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Get a flash.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 0 {
t.Errorf("Expected empty flashes; Got %v", flashes)
}
// Add some flashes.
session.AddFlash(&FlashMessage{42, "foo"})
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
hdr = rsp.Header()
cookies, ok = hdr["Set-Cookie"]
hdr := rsp.Header()
cookies, ok := hdr["Set-Cookie"]
if !ok || len(cookies) != 1 {
t.Fatalf("No cookies. Header: %s", hdr)
}
}
})

// Round 4 ----------------------------------------------------------------
// Custom type
{
t.Run("Round 4", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
if err != nil {
Expand All @@ -243,71 +208,38 @@ func TestRediStore(t *testing.T) {

req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
req.Header.Add("Cookie", cookies[0])
rsp = NewRecorder()
// Get a session.
if session, err = store.Get(req, "session-key"); err != nil {
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Check all saved values.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 1 {
t.Fatalf("Expected flashes; Got %v", flashes)
}
custom := flashes[0].(FlashMessage)
if custom.Type != 42 || custom.Message != "foo" {
t.Errorf("Expected %#v, got %#v", FlashMessage{42, "foo"}, custom)
}

// RediStore specific
// Set MaxAge to -1 to mark for deletion.
session.Options.MaxAge = -1
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
}
})

// Round 5 ----------------------------------------------------------------
// RediStore Delete session (deprecated)

//req, _ = http.NewRequest("GET", "http://localhost:8080/", nil)
//req.Header.Add("Cookie", cookies[0])
//rsp = NewRecorder()
//// Get a session.
//if session, err = store.Get(req, "session-key"); err != nil {
// t.Fatalf("Error getting session: %v", err)
//}
//// Delete session.
//if err = store.Delete(req, rsp, session); err != nil {
// t.Fatalf("Error deleting session: %v", err)
//}
//// Get a flash.
//flashes = session.Flashes()
//if len(flashes) != 0 {
// t.Errorf("Expected empty flashes; Got %v", flashes)
//}
//hdr = rsp.Header()
//cookies, ok = hdr["Set-Cookie"]
//if !ok || len(cookies) != 1 {
// t.Fatalf("No cookies. Header:", hdr)
//}

// Round 6 ----------------------------------------------------------------
// RediStore change MaxLength of session

{
t.Run("Round 6", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
if err != nil {
t.Fatal(err.Error())
}
req, err = http.NewRequest("GET", "http://www.example.com", nil)
req, err := http.NewRequest("GET", "http://www.example.com", nil)
if err != nil {
t.Fatal("failed to create request", err)
}
w := httptest.NewRecorder()

session, err = store.New(req, "my session")
session, err := store.New(req, "my session")
if err != nil {
t.Fatal("failed to create session", err)
}
Expand All @@ -317,67 +249,56 @@ func TestRediStore(t *testing.T) {
t.Fatal("expected an error, got nil")
}

store.SetMaxLength(4096 * 3) // A bit more than the value size to account for encoding overhead.
store.SetMaxLength(4096 * 3)
err = session.Save(req, w)
if err != nil {
t.Fatal("failed to Save:", err)
}
}

// Round 7 ----------------------------------------------------------------
})

// RedisStoreWithDB
{
t.Run("Round 7", func(t *testing.T) {
addr := setup()
store, err := NewRediStoreWithDB(10, "tcp", addr, "", "1", []byte("secret-key"))
if err != nil {
t.Fatal(err.Error())
}
defer store.Close()

req, _ = http.NewRequest("GET", "http://localhost:8080/", nil)
rsp = NewRecorder()
// Get a session. Using the same key as previously, but on different DB
if session, err = store.Get(req, "session-key"); err != nil {
req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Get a flash.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 0 {
t.Errorf("Expected empty flashes; Got %v", flashes)
}
// Add some flashes.
session.AddFlash("foo")
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
hdr = rsp.Header()
cookies, ok = hdr["Set-Cookie"]
hdr := rsp.Header()
cookies, ok := hdr["Set-Cookie"]
if !ok || len(cookies) != 1 {
t.Fatalf("No cookies. Header: %s", hdr)
}

// Get a session.
req.Header.Add("Cookie", cookies[0])
if session, err = store.Get(req, "session-key"); err != nil {
session, err = store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Check all saved values.
flashes = session.Flashes()
if len(flashes) != 1 {
t.Fatalf("Expected flashes; Got %v", flashes)
}
if flashes[0] != "foo" {
t.Errorf("Expected foo,bar; Got %v", flashes)
}
}
})

// Round 8 ----------------------------------------------------------------
// JSONSerializer

// RedisStore
{
t.Run("Round 8", func(t *testing.T) {
addr := setup()
store, err := NewRediStore(10, "tcp", addr, "", []byte("secret-key"))
store.SetSerializer(JSONSerializer{})
Expand All @@ -386,43 +307,39 @@ func TestRediStore(t *testing.T) {
}
defer store.Close()

req, _ = http.NewRequest("GET", "http://localhost:8080/", nil)
rsp = NewRecorder()
// Get a session.
if session, err = store.Get(req, "session-key"); err != nil {
req, _ := http.NewRequest("GET", "http://localhost:8080/", nil)
rsp := NewRecorder()
session, err := store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Get a flash.
flashes = session.Flashes()
flashes := session.Flashes()
if len(flashes) != 0 {
t.Errorf("Expected empty flashes; Got %v", flashes)
}
// Add some flashes.
session.AddFlash("foo")
// Save.
if err = sessions.Save(req, rsp); err != nil {
t.Fatalf("Error saving session: %v", err)
}
hdr = rsp.Header()
cookies, ok = hdr["Set-Cookie"]
hdr := rsp.Header()
cookies, ok := hdr["Set-Cookie"]
if !ok || len(cookies) != 1 {
t.Fatalf("No cookies. Header: %s", hdr)
}

// Get a session.
req.Header.Add("Cookie", cookies[0])
if session, err = store.Get(req, "session-key"); err != nil {
session, err = store.Get(req, "session-key")
if err != nil {
t.Fatalf("Error getting session: %v", err)
}
// Check all saved values.
flashes = session.Flashes()
if len(flashes) != 1 {
t.Fatalf("Expected flashes; Got %v", flashes)
}
if flashes[0] != "foo" {
t.Errorf("Expected foo,bar; Got %v", flashes)
}
}
})
}

func TestPingGoodPort(t *testing.T) {
Expand Down

0 comments on commit db15027

Please sign in to comment.