Documentation
¶
Overview ¶
Package helpers provides testing utilities for API operations.
This package includes WebSocket test servers and helper functions for testing API endpoints, WebSocket communication, and JSON-RPC methods without requiring a full API server setup.
Example usage:
func TestWebSocketAPI(t *testing.T) {
// Create message handler
handler := func(session *melody.Session, msg []byte) {
session.Write([]byte(`{"response": "ok"}`))
}
// Create test WebSocket server
server := helpers.NewWebSocketTestServer(t, handler)
defer server.Close()
// Connect and test
client := server.NewClient(t)
defer client.Close()
err := client.SendMessage([]byte(`{"test": "message"}`))
require.NoError(t, err)
}
For complete examples, see pkg/testing/examples/api_example_test.go
Package helpers provides testing utilities for database operations.
This package includes mock implementations of database interfaces and helper functions for setting up test databases with sqlmock. It enables testing database operations without requiring a real SQLite database.
Example usage:
func TestDatabaseOperations(t *testing.T) {
// Create mock database interfaces
userDB := helpers.NewMockUserDBI()
mediaDB := helpers.NewMockMediaDBI()
// Set up expectations
userDB.On("AddHistory", helpers.HistoryEntryMatcher()).Return(nil)
// Use in your code
err := MyFunction(userDB)
// Verify expectations were met
require.NoError(t, err)
userDB.AssertExpectations(t)
}
For complete examples, see pkg/testing/examples/database_example_test.go
Package helpers provides testing utilities for filesystem operations.
This package includes in-memory filesystem implementations and helper functions for testing file operations without requiring real filesystem access. It uses afero for filesystem abstraction.
Example usage:
func TestFileOperations(t *testing.T) {
// Create in-memory filesystem
fs := helpers.NewMemoryFS()
// Create files and directories for testing
fs.WriteFile("test.txt", []byte("content"))
fs.MkdirAll("configs")
// Create test configuration
cfg, err := helpers.NewTestConfig(fs, "/tmp/config")
require.NoError(t, err)
// Use in your tests
content, err := fs.ReadFile("test.txt")
require.NoError(t, err)
assert.Equal(t, "content", string(content))
}
For complete examples, see pkg/testing/examples/filesystem_example_test.go
Index ¶
- func AssertJSONRPCError(t *testing.T, response *JSONRPCResponse, expectedCode int)
- func AssertJSONRPCSuccess(t *testing.T, response *JSONRPCResponse)
- func CreateTestContext(timeout time.Duration) (context.Context, context.CancelFunc)
- func ExpectHistoryInsert(mockDB sqlmock.Sqlmock, entry *database.HistoryEntry)
- func ExpectMappingInsert(mockDB sqlmock.Sqlmock, mapping *database.Mapping)
- func ExpectMappingQuery(mockDB sqlmock.Sqlmock, id int64, mapping *database.Mapping)
- func ExpectMediaSearch(mockDB sqlmock.Sqlmock, results []database.SearchResult)
- func ExpectTransactionBegin(mockDB sqlmock.Sqlmock)
- func ExpectTransactionCommit(mockDB sqlmock.Sqlmock)
- func ExpectTransactionRollback(mockDB sqlmock.Sqlmock)
- func GetBasicTestStructure() map[string]any
- func GetComplexTestStructure() map[string]any
- func HistoryEntryMatcher() any
- func MappingMatcher() any
- func MediaMatcher() any
- func NewInMemoryMediaDB(t *testing.T) (db *mediadb.MediaDB, cleanup func())
- func NewInMemoryUserDB(t *testing.T) (db *userdb.UserDB, cleanup func())
- func NewSQLMock() (*sql.DB, sqlmock.Sqlmock, error)
- func NewTestConfig(fs *FSHelper, configDir string) (*config.Instance, error)
- func NewTestConfigWithPort(_ *FSHelper, configDir string, port int) (*config.Instance, error)
- func SearchResultMatcher() any
- func SystemMatcher() any
- func TextMatcher() any
- type FSHelper
- func (h *FSHelper) CleanupDir(path string) error
- func (h *FSHelper) CreateAuthFile(path string, authData []byte) error
- func (h *FSHelper) CreateConfigFile(path string, cfg map[string]any) error
- func (h *FSHelper) CreateDirectoryStructure(structure map[string]any) error
- func (h *FSHelper) CreateMediaDirectory(basePath string) error
- func (h *FSHelper) FileExists(path string) bool
- func (h *FSHelper) ListFiles(path string) ([]string, error)
- func (h *FSHelper) ReadFile(path string) ([]byte, error)
- func (h *FSHelper) SetupTestConfigEnvironment(baseDir string) (map[string]any, error)
- func (h *FSHelper) WriteFile(path string, content []byte, _ int) error
- type HTTPTestHelper
- type JSONRPCRequest
- type JSONRPCResponse
- type MockKodiServer
- type MockMediaDBI
- func (m *MockMediaDBI) Allocate() error
- func (m *MockMediaDBI) BeginTransaction() error
- func (m *MockMediaDBI) Close() error
- func (m *MockMediaDBI) CommitTransaction() error
- func (m *MockMediaDBI) Exists() bool
- func (m *MockMediaDBI) FindMedia(row database.Media) (database.Media, error)
- func (m *MockMediaDBI) FindMediaTag(row database.MediaTag) (database.MediaTag, error)
- func (m *MockMediaDBI) FindMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
- func (m *MockMediaDBI) FindOrInsertMedia(row database.Media) (database.Media, error)
- func (m *MockMediaDBI) FindOrInsertMediaTag(row database.MediaTag) (database.MediaTag, error)
- func (m *MockMediaDBI) FindOrInsertMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
- func (m *MockMediaDBI) FindOrInsertSystem(row database.System) (database.System, error)
- func (m *MockMediaDBI) FindOrInsertTag(row database.Tag) (database.Tag, error)
- func (m *MockMediaDBI) FindOrInsertTagType(row database.TagType) (database.TagType, error)
- func (m *MockMediaDBI) FindSystem(row database.System) (database.System, error)
- func (m *MockMediaDBI) FindTag(row database.Tag) (database.Tag, error)
- func (m *MockMediaDBI) FindTagType(row database.TagType) (database.TagType, error)
- func (m *MockMediaDBI) GetDBPath() string
- func (m *MockMediaDBI) GetLastGenerated() (time.Time, error)
- func (m *MockMediaDBI) GetMediaByText(query string) (database.Media, error)
- func (m *MockMediaDBI) IndexedSystems() ([]string, error)
- func (m *MockMediaDBI) InsertMedia(row database.Media) (database.Media, error)
- func (m *MockMediaDBI) InsertMediaTag(row database.MediaTag) (database.MediaTag, error)
- func (m *MockMediaDBI) InsertMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
- func (m *MockMediaDBI) InsertSystem(row database.System) (database.System, error)
- func (m *MockMediaDBI) InsertTag(row database.Tag) (database.Tag, error)
- func (m *MockMediaDBI) InsertTagType(row database.TagType) (database.TagType, error)
- func (m *MockMediaDBI) MigrateUp() error
- func (m *MockMediaDBI) Open() error
- func (m *MockMediaDBI) RandomGame(systems []systemdefs.System) (database.SearchResult, error)
- func (m *MockMediaDBI) ReindexTables() error
- func (m *MockMediaDBI) RollbackTransaction() error
- func (m *MockMediaDBI) SearchMediaPathExact(systems []systemdefs.System, query string) ([]database.SearchResult, error)
- func (m *MockMediaDBI) SearchMediaPathGlob(systems []systemdefs.System, query string) ([]database.SearchResult, error)
- func (m *MockMediaDBI) SearchMediaPathWords(systems []systemdefs.System, query string) ([]database.SearchResult, error)
- func (m *MockMediaDBI) SystemIndexed(system systemdefs.System) bool
- func (m *MockMediaDBI) Truncate() error
- func (m *MockMediaDBI) UnsafeGetSQLDb() *sql.DB
- func (m *MockMediaDBI) UpdateLastGenerated() error
- func (m *MockMediaDBI) Vacuum() error
- type MockUserDBI
- func (m *MockUserDBI) AddHistory(entry *database.HistoryEntry) error
- func (m *MockUserDBI) AddMapping(mapping *database.Mapping) error
- func (m *MockUserDBI) Allocate() error
- func (m *MockUserDBI) Close() error
- func (m *MockUserDBI) DeleteMapping(id int64) error
- func (m *MockUserDBI) GetAllMappings() ([]database.Mapping, error)
- func (m *MockUserDBI) GetDBPath() string
- func (m *MockUserDBI) GetEnabledMappings() ([]database.Mapping, error)
- func (m *MockUserDBI) GetHistory(lastID int) ([]database.HistoryEntry, error)
- func (m *MockUserDBI) GetMapping(id int64) (database.Mapping, error)
- func (m *MockUserDBI) GetZapLinkCache(url string) (string, error)
- func (m *MockUserDBI) GetZapLinkHost(host string) (exists, zapscript bool, err error)
- func (m *MockUserDBI) MigrateUp() error
- func (m *MockUserDBI) Open() error
- func (m *MockUserDBI) Truncate() error
- func (m *MockUserDBI) UnsafeGetSQLDb() *sql.DB
- func (m *MockUserDBI) UpdateMapping(id int64, mapping *database.Mapping) error
- func (m *MockUserDBI) UpdateZapLinkCache(url, zapscript string) error
- func (m *MockUserDBI) UpdateZapLinkHost(host string, zapscript int) error
- func (m *MockUserDBI) Vacuum() error
- type MockWebSocketConnection
- func (m *MockWebSocketConnection) ClearSentMessages()
- func (m *MockWebSocketConnection) Close() error
- func (m *MockWebSocketConnection) GetSentMessages() [][]byte
- func (m *MockWebSocketConnection) QueueMessage(data []byte)
- func (m *MockWebSocketConnection) ReadMessage() (messageType int, data []byte, err error)
- func (m *MockWebSocketConnection) SetCloseError(err error)
- func (m *MockWebSocketConnection) SetReadError(err error)
- func (m *MockWebSocketConnection) SetWriteError(err error)
- func (m *MockWebSocketConnection) WriteMessage(_ int, data []byte) error
- type WebSocketMessage
- type WebSocketTestServer
- func (wsts *WebSocketTestServer) ClearMessages()
- func (wsts *WebSocketTestServer) Close()
- func (wsts *WebSocketTestServer) CreateWebSocketClient() (*websocket.Conn, error)
- func (wsts *WebSocketTestServer) GetMessages() []WebSocketMessage
- func (wsts *WebSocketTestServer) WaitForMessages(count int, timeout time.Duration) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertJSONRPCError ¶
func AssertJSONRPCError(t *testing.T, response *JSONRPCResponse, expectedCode int)
AssertJSONRPCError verifies a JSON-RPC response contains an error
func AssertJSONRPCSuccess ¶
func AssertJSONRPCSuccess(t *testing.T, response *JSONRPCResponse)
AssertJSONRPCSuccess verifies a JSON-RPC response was successful
func CreateTestContext ¶
CreateTestContext creates a context with timeout for testing
func ExpectHistoryInsert ¶
func ExpectHistoryInsert(mockDB sqlmock.Sqlmock, entry *database.HistoryEntry)
ExpectHistoryInsert sets up expectations for history insertion
func ExpectMappingInsert ¶
ExpectMappingInsert sets up expectations for mapping insertion
func ExpectMappingQuery ¶
ExpectMappingQuery sets up expectations for mapping query
func ExpectMediaSearch ¶
func ExpectMediaSearch(mockDB sqlmock.Sqlmock, results []database.SearchResult)
ExpectMediaSearch sets up expectations for media search queries
func ExpectTransactionBegin ¶
ExpectTransactionBegin sets up expectations for transaction begin
func ExpectTransactionCommit ¶
ExpectTransactionCommit sets up expectations for transaction commit
func ExpectTransactionRollback ¶
ExpectTransactionRollback sets up expectations for transaction rollback
func GetBasicTestStructure ¶
GetBasicTestStructure returns a basic directory structure for testing
func GetComplexTestStructure ¶
GetComplexTestStructure returns a more complex directory structure for integration testing
func HistoryEntryMatcher ¶
func HistoryEntryMatcher() any
HistoryEntryMatcher returns a testify matcher for database.HistoryEntry. This matcher can be used to verify that AddHistory is called with appropriate data.
Example usage:
userDB.On("AddHistory", helpers.HistoryEntryMatcher()).Return(nil)
func MappingMatcher ¶
func MappingMatcher() any
MappingMatcher returns a testify matcher for database.Mapping.
Example usage:
userDB.On("AddMapping", helpers.MappingMatcher()).Return(nil)
func MediaMatcher ¶
func MediaMatcher() any
MediaMatcher returns a testify matcher for database.Media.
Example usage:
mediaDB.On("InsertMedia", helpers.MediaMatcher()).Return(fixtures.SampleMedia()[0], nil)
func NewInMemoryMediaDB ¶
func NewSQLMock ¶
NewSQLMock creates a new sqlmock database and mock for raw SQL testing. This is an alias for SetupSQLMock for consistency with other constructor functions.
Example usage:
func TestRawSQL(t *testing.T) {
db, mock, err := helpers.NewSQLMock()
require.NoError(t, err)
defer db.Close()
mock.ExpectQuery("SELECT (.+) FROM users").
WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(1, "Test"))
// Test your SQL code
rows, err := db.Query("SELECT id, name FROM users")
require.NoError(t, err)
defer rows.Close()
assert.NoError(t, mock.ExpectationsWereMet())
}
func NewTestConfig ¶
NewTestConfig creates a config instance for testing using an in-memory filesystem
func NewTestConfigWithPort ¶
NewTestConfigWithPort creates a config instance for testing with a specific API port
func SearchResultMatcher ¶
func SearchResultMatcher() any
SearchResultMatcher returns a testify matcher for database.SearchResult.
Example usage:
mediaDB.On("SearchMedia", helpers.TextMatcher()).
Return([]database.SearchResult{fixtures.SampleSearchResults()[0]}, nil)
func SystemMatcher ¶
func SystemMatcher() any
SystemMatcher returns a testify matcher for database.System.
Example usage:
platform.On("LaunchMedia", helpers.MediaMatcher(), helpers.SystemMatcher()).Return(nil)
func TextMatcher ¶
func TextMatcher() any
TextMatcher returns a testify matcher for string text matching. Useful for matching media names, token text, etc.
Example usage:
mediaDB.On("GetMediaByText", helpers.TextMatcher()).Return(fixtures.SampleMedia()[0], nil)
Types ¶
type FSHelper ¶
FSHelper provides utilities for filesystem mocking in tests
func NewMemoryFS ¶
func NewMemoryFS() *FSHelper
NewMemoryFS creates a new in-memory filesystem for testing
func NewOSFS ¶
func NewOSFS() *FSHelper
NewOSFS creates a filesystem helper using the real filesystem (for integration tests)
func SetupMemoryFilesystem ¶
func SetupMemoryFilesystem() *FSHelper
SetupMemoryFilesystem creates a new in-memory filesystem helper with basic directory structure
func (*FSHelper) CleanupDir ¶
CleanupDir removes all contents from a directory
func (*FSHelper) CreateAuthFile ¶
CreateAuthFile creates an auth file with the provided content
func (*FSHelper) CreateConfigFile ¶
CreateConfigFile creates a config file with the provided configuration map
func (*FSHelper) CreateDirectoryStructure ¶
CreateDirectoryStructure creates a complex directory structure for testing
func (*FSHelper) CreateMediaDirectory ¶
CreateMediaDirectory creates a media directory structure with sample files
func (*FSHelper) FileExists ¶
FileExists checks if a file exists
func (*FSHelper) SetupTestConfigEnvironment ¶
SetupTestConfigEnvironment creates a complete test configuration environment
type HTTPTestHelper ¶
HTTPTestHelper provides utilities for testing HTTP API endpoints
func NewHTTPTestHelper ¶
func NewHTTPTestHelper(handler http.Handler) *HTTPTestHelper
NewHTTPTestHelper creates a new HTTP test helper with the given handler
func (*HTTPTestHelper) PostJSONRPC ¶
PostJSONRPC sends a JSON-RPC request via HTTP POST
type JSONRPCRequest ¶
type JSONRPCRequest struct {
Params any `json:"params,omitempty"`
Method string `json:"method"`
ID uuid.UUID `json:"id"`
}
JSONRPCRequest represents a JSON-RPC request for testing
type JSONRPCResponse ¶
type JSONRPCResponse struct {
Result any `json:"result,omitempty"`
Error *models.ErrorObject `json:"error,omitempty"`
ID uuid.UUID `json:"id"`
}
JSONRPCResponse represents a JSON-RPC response for testing
func SendJSONRPCRequest ¶
SendJSONRPCRequest sends a JSON-RPC request and returns the response
type MockKodiServer ¶
MockKodiServer provides a mock Kodi JSON-RPC server for integration testing
func NewMockKodiServer ¶
func NewMockKodiServer(_ *testing.T) *MockKodiServer
NewMockKodiServer creates a new mock Kodi server for testing
func (*MockKodiServer) GetURLForConfig ¶
func (m *MockKodiServer) GetURLForConfig() string
GetURLForConfig returns the mock server's URL formatted for Kodi client configuration
func (*MockKodiServer) URL ¶
func (m *MockKodiServer) URL() string
URL returns the mock server's URL for configuration
func (*MockKodiServer) WithActivePlayers ¶
func (m *MockKodiServer) WithActivePlayers() *MockKodiServer
WithActivePlayers configures the mock server to return active players
type MockMediaDBI ¶
MockMediaDBI is a mock implementation of the MediaDBI interface using testify/mock
func NewMockMediaDBI ¶
func NewMockMediaDBI() *MockMediaDBI
NewMockMediaDBI creates a new mock MediaDBI interface for testing.
Example usage:
func TestMediaOperations(t *testing.T) {
mediaDB := helpers.NewMockMediaDBI()
mediaDB.On("GetMediaByText", "Game Name").Return(fixtures.SampleMedia()[0], nil)
// Use mediaDB in your test
media, err := mediaDB.GetMediaByText("Game Name")
require.NoError(t, err)
assert.Equal(t, "Game Name", media.Name)
mediaDB.AssertExpectations(t)
}
func (*MockMediaDBI) Allocate ¶
func (m *MockMediaDBI) Allocate() error
func (*MockMediaDBI) BeginTransaction ¶
func (m *MockMediaDBI) BeginTransaction() error
MediaDBI specific methods - Transaction handling
func (*MockMediaDBI) Close ¶
func (m *MockMediaDBI) Close() error
func (*MockMediaDBI) CommitTransaction ¶
func (m *MockMediaDBI) CommitTransaction() error
func (*MockMediaDBI) Exists ¶
func (m *MockMediaDBI) Exists() bool
func (*MockMediaDBI) FindMediaTag ¶
MediaTag CRUD methods
func (*MockMediaDBI) FindMediaTitle ¶
func (m *MockMediaDBI) FindMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
MediaTitle CRUD methods
func (*MockMediaDBI) FindOrInsertMedia ¶
func (*MockMediaDBI) FindOrInsertMediaTag ¶
func (*MockMediaDBI) FindOrInsertMediaTitle ¶
func (m *MockMediaDBI) FindOrInsertMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
func (*MockMediaDBI) FindOrInsertSystem ¶
func (*MockMediaDBI) FindOrInsertTag ¶
func (*MockMediaDBI) FindOrInsertTagType ¶
func (*MockMediaDBI) FindSystem ¶
System CRUD methods
func (*MockMediaDBI) FindTagType ¶
TagType CRUD methods
func (*MockMediaDBI) GetDBPath ¶
func (m *MockMediaDBI) GetDBPath() string
func (*MockMediaDBI) GetLastGenerated ¶
func (m *MockMediaDBI) GetLastGenerated() (time.Time, error)
func (*MockMediaDBI) GetMediaByText ¶
func (m *MockMediaDBI) GetMediaByText(query string) (database.Media, error)
GetMediaByText is a convenience method for testing - wraps SearchMediaPathExact
func (*MockMediaDBI) IndexedSystems ¶
func (m *MockMediaDBI) IndexedSystems() ([]string, error)
func (*MockMediaDBI) InsertMedia ¶
func (*MockMediaDBI) InsertMediaTag ¶
func (*MockMediaDBI) InsertMediaTitle ¶
func (m *MockMediaDBI) InsertMediaTitle(row database.MediaTitle) (database.MediaTitle, error)
func (*MockMediaDBI) InsertSystem ¶
func (*MockMediaDBI) InsertTagType ¶
func (*MockMediaDBI) MigrateUp ¶
func (m *MockMediaDBI) MigrateUp() error
func (*MockMediaDBI) RandomGame ¶
func (m *MockMediaDBI) RandomGame(systems []systemdefs.System) (database.SearchResult, error)
func (*MockMediaDBI) ReindexTables ¶
func (m *MockMediaDBI) ReindexTables() error
func (*MockMediaDBI) RollbackTransaction ¶
func (m *MockMediaDBI) RollbackTransaction() error
func (*MockMediaDBI) SearchMediaPathExact ¶
func (m *MockMediaDBI) SearchMediaPathExact( systems []systemdefs.System, query string, ) ([]database.SearchResult, error)
Search methods
func (*MockMediaDBI) SearchMediaPathGlob ¶
func (m *MockMediaDBI) SearchMediaPathGlob(systems []systemdefs.System, query string) ([]database.SearchResult, error)
func (*MockMediaDBI) SearchMediaPathWords ¶
func (m *MockMediaDBI) SearchMediaPathWords( systems []systemdefs.System, query string, ) ([]database.SearchResult, error)
func (*MockMediaDBI) SystemIndexed ¶
func (m *MockMediaDBI) SystemIndexed(system systemdefs.System) bool
func (*MockMediaDBI) Truncate ¶
func (m *MockMediaDBI) Truncate() error
func (*MockMediaDBI) UnsafeGetSQLDb ¶
func (m *MockMediaDBI) UnsafeGetSQLDb() *sql.DB
func (*MockMediaDBI) UpdateLastGenerated ¶
func (m *MockMediaDBI) UpdateLastGenerated() error
func (*MockMediaDBI) Vacuum ¶
func (m *MockMediaDBI) Vacuum() error
type MockUserDBI ¶
MockUserDBI is a mock implementation of the UserDBI interface using testify/mock
func NewMockUserDBI ¶
func NewMockUserDBI() *MockUserDBI
NewMockUserDBI creates a new mock UserDBI interface for testing.
Example usage:
func TestUserOperations(t *testing.T) {
userDB := helpers.NewMockUserDBI()
userDB.On("AddHistory", mock.MatchedBy(func(he database.HistoryEntry) bool {
return he.TokenID != ""
})).Return(nil)
// Use userDB in your test
err := MyFunction(userDB)
require.NoError(t, err)
userDB.AssertExpectations(t)
}
func (*MockUserDBI) AddHistory ¶
func (m *MockUserDBI) AddHistory(entry *database.HistoryEntry) error
UserDBI specific methods
func (*MockUserDBI) AddMapping ¶
func (m *MockUserDBI) AddMapping(mapping *database.Mapping) error
func (*MockUserDBI) Allocate ¶
func (m *MockUserDBI) Allocate() error
func (*MockUserDBI) Close ¶
func (m *MockUserDBI) Close() error
func (*MockUserDBI) DeleteMapping ¶
func (m *MockUserDBI) DeleteMapping(id int64) error
func (*MockUserDBI) GetAllMappings ¶
func (m *MockUserDBI) GetAllMappings() ([]database.Mapping, error)
func (*MockUserDBI) GetDBPath ¶
func (m *MockUserDBI) GetDBPath() string
func (*MockUserDBI) GetEnabledMappings ¶
func (m *MockUserDBI) GetEnabledMappings() ([]database.Mapping, error)
func (*MockUserDBI) GetHistory ¶
func (m *MockUserDBI) GetHistory(lastID int) ([]database.HistoryEntry, error)
func (*MockUserDBI) GetMapping ¶
func (m *MockUserDBI) GetMapping(id int64) (database.Mapping, error)
func (*MockUserDBI) GetZapLinkCache ¶
func (m *MockUserDBI) GetZapLinkCache(url string) (string, error)
func (*MockUserDBI) GetZapLinkHost ¶
func (m *MockUserDBI) GetZapLinkHost(host string) (exists, zapscript bool, err error)
func (*MockUserDBI) MigrateUp ¶
func (m *MockUserDBI) MigrateUp() error
func (*MockUserDBI) Truncate ¶
func (m *MockUserDBI) Truncate() error
func (*MockUserDBI) UnsafeGetSQLDb ¶
func (m *MockUserDBI) UnsafeGetSQLDb() *sql.DB
func (*MockUserDBI) UpdateMapping ¶
func (m *MockUserDBI) UpdateMapping(id int64, mapping *database.Mapping) error
func (*MockUserDBI) UpdateZapLinkCache ¶
func (m *MockUserDBI) UpdateZapLinkCache(url, zapscript string) error
func (*MockUserDBI) UpdateZapLinkHost ¶
func (m *MockUserDBI) UpdateZapLinkHost(host string, zapscript int) error
func (*MockUserDBI) Vacuum ¶
func (m *MockUserDBI) Vacuum() error
type MockWebSocketConnection ¶
type MockWebSocketConnection struct {
CloseError error
WriteError error
ReadError error
SentMessages [][]byte
ReceivedMessages [][]byte
Closed bool
// contains filtered or unexported fields
}
MockWebSocketConnection provides a mock implementation for testing
func NewMockWebSocketConnection ¶
func NewMockWebSocketConnection() *MockWebSocketConnection
NewMockWebSocketConnection creates a new mock WebSocket connection
func (*MockWebSocketConnection) ClearSentMessages ¶
func (m *MockWebSocketConnection) ClearSentMessages()
ClearSentMessages clears all sent messages
func (*MockWebSocketConnection) Close ¶
func (m *MockWebSocketConnection) Close() error
Close simulates closing the connection
func (*MockWebSocketConnection) GetSentMessages ¶
func (m *MockWebSocketConnection) GetSentMessages() [][]byte
GetSentMessages returns all sent messages (thread-safe copy)
func (*MockWebSocketConnection) QueueMessage ¶
func (m *MockWebSocketConnection) QueueMessage(data []byte)
QueueMessage adds a message to the read queue
func (*MockWebSocketConnection) ReadMessage ¶
func (m *MockWebSocketConnection) ReadMessage() (messageType int, data []byte, err error)
ReadMessage simulates reading a message
func (*MockWebSocketConnection) SetCloseError ¶
func (m *MockWebSocketConnection) SetCloseError(err error)
SetCloseError sets an error to be returned on close operations
func (*MockWebSocketConnection) SetReadError ¶
func (m *MockWebSocketConnection) SetReadError(err error)
SetReadError sets an error to be returned on read operations
func (*MockWebSocketConnection) SetWriteError ¶
func (m *MockWebSocketConnection) SetWriteError(err error)
SetWriteError sets an error to be returned on write operations
func (*MockWebSocketConnection) WriteMessage ¶
func (m *MockWebSocketConnection) WriteMessage(_ int, data []byte) error
WriteMessage simulates writing a message
type WebSocketMessage ¶
type WebSocketMessage struct {
Timestamp time.Time `json:"timestamp"`
Error error `json:"error,omitempty"`
Type string `json:"type"`
SessionID string `json:"sessionId,omitempty"`
Data []byte `json:"data"`
}
WebSocketMessage captures a message sent or received during testing
type WebSocketTestServer ¶
type WebSocketTestServer struct {
Server *httptest.Server
Melody *melody.Melody
Messages []WebSocketMessage
// contains filtered or unexported fields
}
WebSocketTestServer provides utilities for testing WebSocket connections
func NewWebSocketTestServer ¶
func NewWebSocketTestServer(t *testing.T, handler func(*melody.Session, []byte)) *WebSocketTestServer
NewWebSocketTestServer creates a new WebSocket test server
func (*WebSocketTestServer) ClearMessages ¶
func (wsts *WebSocketTestServer) ClearMessages()
ClearMessages clears all recorded messages (thread-safe)
func (*WebSocketTestServer) Close ¶
func (wsts *WebSocketTestServer) Close()
Close shuts down the test server
func (*WebSocketTestServer) CreateWebSocketClient ¶
func (wsts *WebSocketTestServer) CreateWebSocketClient() (*websocket.Conn, error)
CreateWebSocketClient creates a WebSocket client connected to the test server
func (*WebSocketTestServer) GetMessages ¶
func (wsts *WebSocketTestServer) GetMessages() []WebSocketMessage
GetMessages returns all recorded messages (thread-safe)
func (*WebSocketTestServer) WaitForMessages ¶
func (wsts *WebSocketTestServer) WaitForMessages(count int, timeout time.Duration) error
WaitForMessages waits for a specific number of messages with timeout