From 62c551c7fe9b2fe1d40040a80f84447b160269b3 Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 30 Apr 2025 17:42:51 +0800 Subject: [PATCH] fix: tests --- internal/auth/userpass_test.go | 2 +- internal/jsonstore/jsonstore_test.go | 14 ++++++++------ internal/logging/accesslog/back_scanner_test.go | 12 +++++++----- internal/logging/accesslog/mock_file.go | 13 +++++++++++++ internal/utils/serialization_test.go | 12 +++++++++++- 5 files changed, 40 insertions(+), 13 deletions(-) diff --git a/internal/auth/userpass_test.go b/internal/auth/userpass_test.go index da3c841..02196be 100644 --- a/internal/auth/userpass_test.go +++ b/internal/auth/userpass_test.go @@ -98,7 +98,7 @@ func TestUserPassLoginCallbackHandler(t *testing.T) { Host: "app.example.com", Body: io.NopCloser(bytes.NewReader(Must(json.Marshal(tt.creds)))), } - auth.LoginHandler(w, req) + auth.PostAuthCallbackHandler(w, req) if tt.wantErr { ExpectEqual(t, w.Code, http.StatusUnauthorized) } else { diff --git a/internal/jsonstore/jsonstore_test.go b/internal/jsonstore/jsonstore_test.go index b3a82c7..f8c7f2c 100644 --- a/internal/jsonstore/jsonstore_test.go +++ b/internal/jsonstore/jsonstore_test.go @@ -13,15 +13,16 @@ func TestNewJSON(t *testing.T) { } func TestSaveLoadStore(t *testing.T) { + defer clear(stores) + storesPath = t.TempDir() store := Store[string]("test") store.Store("a", "1") if err := save(); err != nil { t.Fatal(err) } - if err := load(); err != nil { - t.Fatal(err) - } + // reload + clear(stores) loaded := Store[string]("test") v, ok := loaded.Load("a") if !ok { @@ -43,6 +44,8 @@ type testObject struct { func (*testObject) Initialize() {} func TestSaveLoadObject(t *testing.T) { + defer clear(stores) + storesPath = t.TempDir() obj := Object[*testObject]("test") obj.I = 1 @@ -50,9 +53,8 @@ func TestSaveLoadObject(t *testing.T) { if err := save(); err != nil { t.Fatal(err) } - if err := load(); err != nil { - t.Fatal(err) - } + // reload + clear(stores) loaded := Object[*testObject]("test") if loaded.I != 1 || loaded.S != "1" { t.Fatalf("expected 1, got %d, %s", loaded.I, loaded.S) diff --git a/internal/logging/accesslog/back_scanner_test.go b/internal/logging/accesslog/back_scanner_test.go index 02f0000..41a6580 100644 --- a/internal/logging/accesslog/back_scanner_test.go +++ b/internal/logging/accesslog/back_scanner_test.go @@ -67,7 +67,7 @@ func TestBackScanner(t *testing.T) { } // Create scanner with small chunk size to test chunking - scanner := NewBackScanner(mockFile, 10) + scanner := NewBackScanner(mockFile, mockFile.MustSize(), 10) // Collect all lines var lines [][]byte @@ -108,7 +108,7 @@ func TestBackScannerWithVaryingChunkSizes(t *testing.T) { t.Fatalf("failed to write to mock file: %v", err) } - scanner := NewBackScanner(mockFile, chunkSize) + scanner := NewBackScanner(mockFile, mockFile.MustSize(), chunkSize) var lines [][]byte for scanner.Scan() { @@ -170,7 +170,8 @@ func TestReset(t *testing.T) { } } linesRead := 0 - s := NewBackScanner(file, defaultChunkSize) + stat, _ := file.Stat() + s := NewBackScanner(file, stat.Size(), defaultChunkSize) for s.Scan() { linesRead++ } @@ -199,7 +200,7 @@ func BenchmarkBackScanner(b *testing.B) { } for i := range 14 { chunkSize := (2 << i) * kilobyte - scanner := NewBackScanner(mockFile, chunkSize) + scanner := NewBackScanner(mockFile, mockFile.MustSize(), chunkSize) name := strutils.FormatByteSize(chunkSize) b.ResetTimer() b.Run(name, func(b *testing.B) { @@ -226,7 +227,8 @@ func BenchmarkBackScannerRealFile(b *testing.B) { } } - scanner := NewBackScanner(file, 256*kilobyte) + stat, _ := file.Stat() + scanner := NewBackScanner(file, stat.Size(), 256*kilobyte) b.ResetTimer() for scanner.Scan() { } diff --git a/internal/logging/accesslog/mock_file.go b/internal/logging/accesslog/mock_file.go index acb2d10..6976aff 100644 --- a/internal/logging/accesslog/mock_file.go +++ b/internal/logging/accesslog/mock_file.go @@ -17,8 +17,11 @@ type MockFile struct { noLock } +var _ SupportRotate = (*MockFile)(nil) + func NewMockFile() *MockFile { f, _ := afero.TempFile(afero.NewMemMapFs(), "", "") + f.Seek(0, io.SeekEnd) return &MockFile{ File: f, } @@ -47,3 +50,13 @@ func (m *MockFile) NumLines() int { } return count } + +func (m *MockFile) Size() (int64, error) { + stat, _ := m.Stat() + return stat.Size(), nil +} + +func (m *MockFile) MustSize() int64 { + size, _ := m.Size() + return size +} diff --git a/internal/utils/serialization_test.go b/internal/utils/serialization_test.go index 9990095..2350deb 100644 --- a/internal/utils/serialization_test.go +++ b/internal/utils/serialization_test.go @@ -167,7 +167,17 @@ func TestConvertor(t *testing.T) { t.Run("invalid", func(t *testing.T) { m := new(testModel) - ExpectError(t, ErrUnsupportedConversion, MapUnmarshalValidate(map[string]any{"Test": struct{}{}}, m)) + err := MapUnmarshalValidate(map[string]any{"Test": struct{ a int }{1}}, m) + ExpectError(t, ErrUnsupportedConversion, err) + }) + + t.Run("set_empty", func(t *testing.T) { + m := testModel{ + Test: testType{1, "2"}, + Baz: "3", + } + ExpectNoError(t, MapUnmarshalValidate(map[string]any{"Test": nil, "Baz": nil}, &m)) + ExpectEqual(t, m, testModel{}) }) }