mirror of https://github.com/go-gitea/gitea.git
12 changed files with 131 additions and 72 deletions
@ -0,0 +1,68 @@
@@ -0,0 +1,68 @@
|
||||
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package session |
||||
|
||||
import ( |
||||
"bytes" |
||||
"encoding/gob" |
||||
"net/http" |
||||
|
||||
"gitea.com/go-chi/session" |
||||
) |
||||
|
||||
type mockMemRawStore struct { |
||||
s *session.MemStore |
||||
} |
||||
|
||||
var _ session.RawStore = (*mockMemRawStore)(nil) |
||||
|
||||
func (m *mockMemRawStore) Set(k, v any) error { |
||||
// We need to use gob to encode the value, to make it have the same behavior as other stores and catch abuses.
|
||||
// Because gob needs to "Register" the type before it can encode it, and it's unable to decode a struct to "any" so use a map to help to decode the value.
|
||||
var buf bytes.Buffer |
||||
if err := gob.NewEncoder(&buf).Encode(map[string]any{"v": v}); err != nil { |
||||
return err |
||||
} |
||||
return m.s.Set(k, buf.Bytes()) |
||||
} |
||||
|
||||
func (m *mockMemRawStore) Get(k any) (ret any) { |
||||
v, ok := m.s.Get(k).([]byte) |
||||
if !ok { |
||||
return nil |
||||
} |
||||
var w map[string]any |
||||
_ = gob.NewDecoder(bytes.NewBuffer(v)).Decode(&w) |
||||
return w["v"] |
||||
} |
||||
|
||||
func (m *mockMemRawStore) Delete(k any) error { |
||||
return m.s.Delete(k) |
||||
} |
||||
|
||||
func (m *mockMemRawStore) ID() string { |
||||
return m.s.ID() |
||||
} |
||||
|
||||
func (m *mockMemRawStore) Release() error { |
||||
return m.s.Release() |
||||
} |
||||
|
||||
func (m *mockMemRawStore) Flush() error { |
||||
return m.s.Flush() |
||||
} |
||||
|
||||
type mockMemStore struct { |
||||
*mockMemRawStore |
||||
} |
||||
|
||||
var _ Store = (*mockMemStore)(nil) |
||||
|
||||
func (m mockMemStore) Destroy(writer http.ResponseWriter, request *http.Request) error { |
||||
return nil |
||||
} |
||||
|
||||
func NewMockMemStore(sid string) Store { |
||||
return &mockMemStore{&mockMemRawStore{session.NewMemStore(sid)}} |
||||
} |
||||
@ -1,26 +0,0 @@
@@ -1,26 +0,0 @@
|
||||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package session |
||||
|
||||
import ( |
||||
"net/http" |
||||
|
||||
"gitea.com/go-chi/session" |
||||
) |
||||
|
||||
type MockStore struct { |
||||
*session.MemStore |
||||
} |
||||
|
||||
func (m *MockStore) Destroy(writer http.ResponseWriter, request *http.Request) error { |
||||
return nil |
||||
} |
||||
|
||||
type mockStoreContextKeyStruct struct{} |
||||
|
||||
var MockStoreContextKey = mockStoreContextKeyStruct{} |
||||
|
||||
func NewMockStore(sid string) *MockStore { |
||||
return &MockStore{session.NewMemStore(sid)} |
||||
} |
||||
Loading…
Reference in new issue