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 AssertValidActiveMedia(t *testing.T, media *models.ActiveMedia)
- func AssertValidActiveMediaOrNil(t *testing.T, media *models.ActiveMedia)
- 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 NewMockCommandExecutor() *mocks.MockCommandExecutor
- 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 NewTestDatabase(t *testing.T) (db *database.Database, cleanup func())
- 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 MockESAPIServer
- type MockKodiServer
- type MockMediaDBI
- func (m *MockMediaDBI) Allocate() error
- func (m *MockMediaDBI) BackgroundOperationDone()
- func (m *MockMediaDBI) BeginTransaction(batchEnabled bool) error
- func (m *MockMediaDBI) Close() error
- func (m *MockMediaDBI) CommitTransaction() error
- func (m *MockMediaDBI) EnableBatchInserts(enable bool)
- 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) FindSystemBySystemID(systemID string) (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) GetAllMedia() ([]database.Media, error)
- func (m *MockMediaDBI) GetAllMediaTitles() ([]database.MediaTitle, error)
- func (m *MockMediaDBI) GetAllSystems() ([]database.System, error)
- func (m *MockMediaDBI) GetAllTagTypes() ([]database.TagType, error)
- func (m *MockMediaDBI) GetAllTags() ([]database.Tag, error)
- func (m *MockMediaDBI) GetAllUsedTags(ctx context.Context) ([]database.TagInfo, error)
- func (m *MockMediaDBI) GetCachedSlugResolution(ctx context.Context, systemID, slug string, tagFilters []database.TagFilter) (mediaDBID int64, strategy string, found bool)
- func (m *MockMediaDBI) GetDBPath() string
- func (m *MockMediaDBI) GetIndexingStatus() (string, error)
- func (m *MockMediaDBI) GetIndexingSystems() ([]string, error)
- func (m *MockMediaDBI) GetLastGenerated() (time.Time, error)
- func (m *MockMediaDBI) GetLastIndexedSystem() (string, error)
- func (m *MockMediaDBI) GetLaunchCommandForMedia(ctx context.Context, systemID, path string) (string, error)
- func (m *MockMediaDBI) GetMaxMediaID() (int64, error)
- func (m *MockMediaDBI) GetMaxMediaTagID() (int64, error)
- func (m *MockMediaDBI) GetMaxSystemID() (int64, error)
- func (m *MockMediaDBI) GetMaxTagID() (int64, error)
- func (m *MockMediaDBI) GetMaxTagTypeID() (int64, error)
- func (m *MockMediaDBI) GetMaxTitleID() (int64, error)
- func (m *MockMediaDBI) GetMediaByDBID(ctx context.Context, mediaDBID int64) (database.SearchResultWithCursor, error)
- func (m *MockMediaDBI) GetMediaByText(query string) (database.Media, error)
- func (m *MockMediaDBI) GetMediaWithFullPath() ([]database.MediaWithFullPath, error)
- func (m *MockMediaDBI) GetMediaWithFullPathExcluding(excludeSystemIDs []string) ([]database.MediaWithFullPath, error)
- func (m *MockMediaDBI) GetOptimizationStatus() (string, error)
- func (m *MockMediaDBI) GetOptimizationStep() (string, error)
- func (m *MockMediaDBI) GetSystemTagsCached(ctx context.Context, systems []systemdefs.System) ([]database.TagInfo, error)
- func (m *MockMediaDBI) GetSystemsExcluding(excludeSystemIDs []string) ([]database.System, error)
- func (m *MockMediaDBI) GetTags(ctx context.Context, systems []systemdefs.System) ([]database.TagInfo, error)
- func (m *MockMediaDBI) GetTitlesWithPreFilter(ctx context.Context, systemID string, ...) ([]database.MediaTitle, error)
- func (m *MockMediaDBI) GetTitlesWithSystems() ([]database.TitleWithSystem, error)
- func (m *MockMediaDBI) GetTitlesWithSystemsExcluding(excludeSystemIDs []string) ([]database.TitleWithSystem, error)
- func (m *MockMediaDBI) GetTotalMediaCount() (int, 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) InvalidateCountCache() error
- func (m *MockMediaDBI) InvalidateSlugCache(ctx context.Context) error
- func (m *MockMediaDBI) InvalidateSlugCacheForSystems(ctx context.Context, systemIDs []string) error
- func (m *MockMediaDBI) InvalidateSystemTagsCache(ctx context.Context, systems []systemdefs.System) error
- func (m *MockMediaDBI) MigrateUp() error
- func (m *MockMediaDBI) Open() error
- func (m *MockMediaDBI) PopulateSystemTagsCache(ctx context.Context) error
- func (m *MockMediaDBI) RandomGame(systems []systemdefs.System) (database.SearchResult, error)
- func (m *MockMediaDBI) RandomGameWithQuery(query *database.MediaQuery) (database.SearchResult, error)
- func (m *MockMediaDBI) RollbackTransaction() error
- func (m *MockMediaDBI) RunBackgroundOptimization(statusCallback func(optimizing bool))
- func (m *MockMediaDBI) SearchMediaBySecondarySlug(ctx context.Context, systemID string, secondarySlug string, ...) ([]database.SearchResultWithCursor, error)
- func (m *MockMediaDBI) SearchMediaBySlug(ctx context.Context, systemID string, slug string, tags []database.TagFilter) ([]database.SearchResultWithCursor, error)
- func (m *MockMediaDBI) SearchMediaBySlugIn(ctx context.Context, systemID string, slugs []string, ...) ([]database.SearchResultWithCursor, error)
- func (m *MockMediaDBI) SearchMediaBySlugPrefix(ctx context.Context, systemID string, slugPrefix string, ...) ([]database.SearchResultWithCursor, 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) SearchMediaWithFilters(ctx context.Context, filters *database.SearchFilters) ([]database.SearchResultWithCursor, error)
- func (m *MockMediaDBI) SetBatchSize(size int)
- func (m *MockMediaDBI) SetCachedSlugResolution(ctx context.Context, systemID, slug string, tagFilters []database.TagFilter, ...) error
- func (m *MockMediaDBI) SetIndexingStatus(status string) error
- func (m *MockMediaDBI) SetIndexingSystems(systemIDs []string) error
- func (m *MockMediaDBI) SetLastIndexedSystem(systemID string) error
- func (m *MockMediaDBI) SetOptimizationStatus(status string) error
- func (m *MockMediaDBI) SetOptimizationStep(step string) error
- func (m *MockMediaDBI) SystemIndexed(system *systemdefs.System) bool
- func (m *MockMediaDBI) TrackBackgroundOperation()
- func (m *MockMediaDBI) Truncate() error
- func (m *MockMediaDBI) TruncateSystems(systemIDs []string) error
- func (m *MockMediaDBI) UnsafeGetSQLDb() *sql.DB
- func (m *MockMediaDBI) UpdateLastGenerated() error
- func (m *MockMediaDBI) Vacuum() error
- func (m *MockMediaDBI) WaitForBackgroundOperations()
- type MockUserDBI
- func (m *MockUserDBI) AddHistory(entry *database.HistoryEntry) error
- func (m *MockUserDBI) AddInboxMessage(msg *database.InboxMessage) (*database.InboxMessage, error)
- func (m *MockUserDBI) AddMapping(mapping *database.Mapping) error
- func (m *MockUserDBI) AddMediaHistory(entry *database.MediaHistoryEntry) (int64, error)
- func (m *MockUserDBI) Allocate() error
- func (m *MockUserDBI) CleanupHistory(retentionDays int) (int64, error)
- func (m *MockUserDBI) CleanupMediaHistory(retentionDays int) (int64, error)
- func (m *MockUserDBI) Close() error
- func (m *MockUserDBI) CloseHangingMediaHistory() error
- func (m *MockUserDBI) CloseMediaHistory(dbid int64, endTime time.Time, playTime int) error
- func (m *MockUserDBI) DeleteAllInboxMessages() (int64, error)
- func (m *MockUserDBI) DeleteInboxMessage(id int64) 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) GetInboxMessages() ([]database.InboxMessage, error)
- func (m *MockUserDBI) GetMapping(id int64) (database.Mapping, error)
- func (m *MockUserDBI) GetMediaHistory(lastID, limit int) ([]database.MediaHistoryEntry, error)
- func (m *MockUserDBI) GetSupportedZapLinkHosts() ([]string, error)
- func (m *MockUserDBI) GetZapLinkCache(url string) (string, error)
- func (m *MockUserDBI) GetZapLinkHost(host string) (found, zapScript bool, err error)
- func (m *MockUserDBI) HealTimestamps(bootUUID string, trueBootTime time.Time) (int64, error)
- func (m *MockUserDBI) MigrateUp() error
- func (m *MockUserDBI) Open() error
- func (m *MockUserDBI) PruneExpiredZapLinkHosts(olderThan time.Duration) (int64, 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) UpdateMediaHistoryTime(dbid int64, playTime int) 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 AssertValidActiveMedia ¶ added in v2.7.0
func AssertValidActiveMedia(t *testing.T, media *models.ActiveMedia)
AssertValidActiveMedia validates that an ActiveMedia struct has all required fields properly set. This helper catches common bugs like missing timestamps or empty required fields. Use this in tests that receive ActiveMedia from production code to ensure data integrity.
func AssertValidActiveMediaOrNil ¶ added in v2.7.0
func AssertValidActiveMediaOrNil(t *testing.T, media *models.ActiveMedia)
AssertValidActiveMediaOrNil validates ActiveMedia if non-nil, otherwise passes. Use this when ActiveMedia can legitimately be nil (e.g., no media playing).
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 NewMockCommandExecutor ¶ added in v2.7.0
func NewMockCommandExecutor() *mocks.MockCommandExecutor
NewMockCommandExecutor creates a MockCommandExecutor that succeeds by default. All Run(), Output(), and Start() calls will return success unless explicitly overridden with On().
This provides sensible defaults for tests where command execution details don't matter. Override specific commands in tests that need to verify exact behavior:
cmd := helpers.NewMockCommandExecutor()
// Clear defaults first
cmd.ExpectedCalls = nil
// Set specific expectations (note: args is []string not variadic in mock)
cmd.On("Run", mock.Anything, "systemctl", []string{"--user", "daemon-reload"}).Return(nil)
cmd.On("Output", mock.Anything, "xprop", mock.Anything).Return([]byte("output"), nil)
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 NewTestDatabase ¶ added in v2.7.0
NewTestDatabase creates both MediaDB and UserDB for comprehensive testing. Returns a Database wrapper and cleanup function that should be deferred.
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 MockESAPIServer ¶ added in v2.7.0
MockESAPIServer provides a test double for Batocera's EmulationStation API. It listens on localhost:1234 (the hardcoded ES API port) to intercept API calls during tests.
func NewMockESAPIServer ¶ added in v2.7.0
func NewMockESAPIServer(t *testing.T) *MockESAPIServer
NewMockESAPIServer creates a mock EmulationStation API server on localhost:1234. This server intercepts esapi.APIRunningGame() calls during tests.
func (*MockESAPIServer) WithNoRunningGame ¶ added in v2.7.0
func (m *MockESAPIServer) WithNoRunningGame() *MockESAPIServer
WithNoRunningGame configures the mock to return "no game running"
func (*MockESAPIServer) WithRunningGame ¶ added in v2.7.0
func (m *MockESAPIServer) WithRunningGame(game *esapi.RunningGameResponse) *MockESAPIServer
WithRunningGame configures the mock to return a running game
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 ¶
type MockMediaDBI struct {
mock.Mock
// Transaction tracking for tests
TransactionCount int // Total number of transactions begun
ActiveTransaction bool // Whether a transaction is currently active
OperationsOutsideTxn int // Count of operations performed outside transactions
}
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) BackgroundOperationDone ¶ added in v2.7.1
func (m *MockMediaDBI) BackgroundOperationDone()
func (*MockMediaDBI) BeginTransaction ¶
func (m *MockMediaDBI) BeginTransaction(batchEnabled bool) error
MediaDBI specific methods - Transaction handling
func (*MockMediaDBI) Close ¶
func (m *MockMediaDBI) Close() error
func (*MockMediaDBI) CommitTransaction ¶
func (m *MockMediaDBI) CommitTransaction() error
func (*MockMediaDBI) EnableBatchInserts ¶ added in v2.7.0
func (m *MockMediaDBI) EnableBatchInserts(enable bool)
Batch insert control methods
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) FindSystemBySystemID ¶ added in v2.7.0
func (m *MockMediaDBI) FindSystemBySystemID(systemID string) (database.System, error)
func (*MockMediaDBI) FindTagType ¶
TagType CRUD methods
func (*MockMediaDBI) GetAllMedia ¶ added in v2.7.0
func (m *MockMediaDBI) GetAllMedia() ([]database.Media, error)
func (*MockMediaDBI) GetAllMediaTitles ¶ added in v2.7.0
func (m *MockMediaDBI) GetAllMediaTitles() ([]database.MediaTitle, error)
func (*MockMediaDBI) GetAllSystems ¶ added in v2.7.0
func (m *MockMediaDBI) GetAllSystems() ([]database.System, error)
GetAll* methods for populating scan state maps
func (*MockMediaDBI) GetAllTagTypes ¶ added in v2.7.0
func (m *MockMediaDBI) GetAllTagTypes() ([]database.TagType, error)
func (*MockMediaDBI) GetAllTags ¶ added in v2.7.0
func (m *MockMediaDBI) GetAllTags() ([]database.Tag, error)
func (*MockMediaDBI) GetAllUsedTags ¶ added in v2.7.0
func (*MockMediaDBI) GetCachedSlugResolution ¶ added in v2.7.0
func (m *MockMediaDBI) GetCachedSlugResolution( ctx context.Context, systemID, slug string, tagFilters []database.TagFilter, ) (mediaDBID int64, strategy string, found bool)
Slug resolution cache methods
func (*MockMediaDBI) GetDBPath ¶
func (m *MockMediaDBI) GetDBPath() string
func (*MockMediaDBI) GetIndexingStatus ¶ added in v2.7.0
func (m *MockMediaDBI) GetIndexingStatus() (string, error)
func (*MockMediaDBI) GetIndexingSystems ¶ added in v2.7.0
func (m *MockMediaDBI) GetIndexingSystems() ([]string, error)
func (*MockMediaDBI) GetLastGenerated ¶
func (m *MockMediaDBI) GetLastGenerated() (time.Time, error)
func (*MockMediaDBI) GetLastIndexedSystem ¶ added in v2.7.0
func (m *MockMediaDBI) GetLastIndexedSystem() (string, error)
func (*MockMediaDBI) GetLaunchCommandForMedia ¶ added in v2.7.0
func (*MockMediaDBI) GetMaxMediaID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxMediaID() (int64, error)
func (*MockMediaDBI) GetMaxMediaTagID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxMediaTagID() (int64, error)
func (*MockMediaDBI) GetMaxSystemID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxSystemID() (int64, error)
GetMax*ID methods for resume functionality
func (*MockMediaDBI) GetMaxTagID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxTagID() (int64, error)
func (*MockMediaDBI) GetMaxTagTypeID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxTagTypeID() (int64, error)
func (*MockMediaDBI) GetMaxTitleID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMaxTitleID() (int64, error)
func (*MockMediaDBI) GetMediaByDBID ¶ added in v2.7.0
func (m *MockMediaDBI) GetMediaByDBID(ctx context.Context, mediaDBID int64) (database.SearchResultWithCursor, error)
func (*MockMediaDBI) GetMediaByText ¶
func (m *MockMediaDBI) GetMediaByText(query string) (database.Media, error)
GetMediaByText is a convenience method for testing - wraps SearchMediaPathExact
func (*MockMediaDBI) GetMediaWithFullPath ¶ added in v2.7.0
func (m *MockMediaDBI) GetMediaWithFullPath() ([]database.MediaWithFullPath, error)
GetMediaWithFullPath mock method for optimized JOIN query
func (*MockMediaDBI) GetMediaWithFullPathExcluding ¶ added in v2.7.0
func (m *MockMediaDBI) GetMediaWithFullPathExcluding(excludeSystemIDs []string) ([]database.MediaWithFullPath, error)
GetMediaWithFullPathExcluding mock method for optimized selective indexing
func (*MockMediaDBI) GetOptimizationStatus ¶ added in v2.7.0
func (m *MockMediaDBI) GetOptimizationStatus() (string, error)
func (*MockMediaDBI) GetOptimizationStep ¶ added in v2.7.0
func (m *MockMediaDBI) GetOptimizationStep() (string, error)
func (*MockMediaDBI) GetSystemTagsCached ¶ added in v2.7.0
func (m *MockMediaDBI) GetSystemTagsCached( ctx context.Context, systems []systemdefs.System, ) ([]database.TagInfo, error)
func (*MockMediaDBI) GetSystemsExcluding ¶ added in v2.7.0
func (m *MockMediaDBI) GetSystemsExcluding(excludeSystemIDs []string) ([]database.System, error)
GetSystemsExcluding mock method for optimized selective indexing
func (*MockMediaDBI) GetTags ¶ added in v2.7.0
func (m *MockMediaDBI) GetTags( ctx context.Context, systems []systemdefs.System, ) ([]database.TagInfo, error)
func (*MockMediaDBI) GetTitlesWithPreFilter ¶ added in v2.7.0
func (m *MockMediaDBI) GetTitlesWithPreFilter( ctx context.Context, systemID string, minLength, maxLength, minWordCount, maxWordCount int, ) ([]database.MediaTitle, error)
func (*MockMediaDBI) GetTitlesWithSystems ¶ added in v2.7.0
func (m *MockMediaDBI) GetTitlesWithSystems() ([]database.TitleWithSystem, error)
GetTitlesWithSystems mock method for optimized JOIN query
func (*MockMediaDBI) GetTitlesWithSystemsExcluding ¶ added in v2.7.0
func (m *MockMediaDBI) GetTitlesWithSystemsExcluding(excludeSystemIDs []string) ([]database.TitleWithSystem, error)
GetTitlesWithSystemsExcluding mock method for optimized selective indexing
func (*MockMediaDBI) GetTotalMediaCount ¶ added in v2.7.0
func (m *MockMediaDBI) GetTotalMediaCount() (int, error)
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) InvalidateCountCache ¶ added in v2.7.0
func (m *MockMediaDBI) InvalidateCountCache() error
func (*MockMediaDBI) InvalidateSlugCache ¶ added in v2.7.0
func (m *MockMediaDBI) InvalidateSlugCache(ctx context.Context) error
func (*MockMediaDBI) InvalidateSlugCacheForSystems ¶ added in v2.7.0
func (m *MockMediaDBI) InvalidateSlugCacheForSystems(ctx context.Context, systemIDs []string) error
func (*MockMediaDBI) InvalidateSystemTagsCache ¶ added in v2.7.0
func (m *MockMediaDBI) InvalidateSystemTagsCache( ctx context.Context, systems []systemdefs.System, ) error
func (*MockMediaDBI) MigrateUp ¶
func (m *MockMediaDBI) MigrateUp() error
func (*MockMediaDBI) PopulateSystemTagsCache ¶ added in v2.7.0
func (m *MockMediaDBI) PopulateSystemTagsCache(ctx context.Context) error
func (*MockMediaDBI) RandomGame ¶
func (m *MockMediaDBI) RandomGame(systems []systemdefs.System) (database.SearchResult, error)
func (*MockMediaDBI) RandomGameWithQuery ¶ added in v2.7.0
func (m *MockMediaDBI) RandomGameWithQuery(query *database.MediaQuery) (database.SearchResult, error)
func (*MockMediaDBI) RollbackTransaction ¶
func (m *MockMediaDBI) RollbackTransaction() error
func (*MockMediaDBI) RunBackgroundOptimization ¶ added in v2.7.0
func (m *MockMediaDBI) RunBackgroundOptimization(statusCallback func(optimizing bool))
func (*MockMediaDBI) SearchMediaBySecondarySlug ¶ added in v2.7.0
func (m *MockMediaDBI) SearchMediaBySecondarySlug( ctx context.Context, systemID string, secondarySlug string, tags []database.TagFilter, ) ([]database.SearchResultWithCursor, error)
func (*MockMediaDBI) SearchMediaBySlug ¶ added in v2.7.0
func (m *MockMediaDBI) SearchMediaBySlug( ctx context.Context, systemID string, slug string, tags []database.TagFilter, ) ([]database.SearchResultWithCursor, error)
func (*MockMediaDBI) SearchMediaBySlugIn ¶ added in v2.7.0
func (m *MockMediaDBI) SearchMediaBySlugIn( ctx context.Context, systemID string, slugs []string, tags []database.TagFilter, ) ([]database.SearchResultWithCursor, error)
func (*MockMediaDBI) SearchMediaBySlugPrefix ¶ added in v2.7.0
func (m *MockMediaDBI) SearchMediaBySlugPrefix( ctx context.Context, systemID string, slugPrefix string, tags []database.TagFilter, ) ([]database.SearchResultWithCursor, 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) SearchMediaWithFilters ¶ added in v2.7.0
func (m *MockMediaDBI) SearchMediaWithFilters( ctx context.Context, filters *database.SearchFilters, ) ([]database.SearchResultWithCursor, error)
func (*MockMediaDBI) SetBatchSize ¶ added in v2.7.0
func (m *MockMediaDBI) SetBatchSize(size int)
func (*MockMediaDBI) SetCachedSlugResolution ¶ added in v2.7.0
func (*MockMediaDBI) SetIndexingStatus ¶ added in v2.7.0
func (m *MockMediaDBI) SetIndexingStatus(status string) error
func (*MockMediaDBI) SetIndexingSystems ¶ added in v2.7.0
func (m *MockMediaDBI) SetIndexingSystems(systemIDs []string) error
func (*MockMediaDBI) SetLastIndexedSystem ¶ added in v2.7.0
func (m *MockMediaDBI) SetLastIndexedSystem(systemID string) error
func (*MockMediaDBI) SetOptimizationStatus ¶ added in v2.7.0
func (m *MockMediaDBI) SetOptimizationStatus(status string) error
func (*MockMediaDBI) SetOptimizationStep ¶ added in v2.7.0
func (m *MockMediaDBI) SetOptimizationStep(step string) error
func (*MockMediaDBI) SystemIndexed ¶
func (m *MockMediaDBI) SystemIndexed(system *systemdefs.System) bool
func (*MockMediaDBI) TrackBackgroundOperation ¶ added in v2.7.1
func (m *MockMediaDBI) TrackBackgroundOperation()
func (*MockMediaDBI) Truncate ¶
func (m *MockMediaDBI) Truncate() error
func (*MockMediaDBI) TruncateSystems ¶ added in v2.7.0
func (m *MockMediaDBI) TruncateSystems(systemIDs []string) 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
func (*MockMediaDBI) WaitForBackgroundOperations ¶ added in v2.7.0
func (m *MockMediaDBI) WaitForBackgroundOperations()
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) AddInboxMessage ¶ added in v2.8.0
func (m *MockUserDBI) AddInboxMessage(msg *database.InboxMessage) (*database.InboxMessage, error)
func (*MockUserDBI) AddMapping ¶
func (m *MockUserDBI) AddMapping(mapping *database.Mapping) error
func (*MockUserDBI) AddMediaHistory ¶ added in v2.7.0
func (m *MockUserDBI) AddMediaHistory(entry *database.MediaHistoryEntry) (int64, error)
func (*MockUserDBI) Allocate ¶
func (m *MockUserDBI) Allocate() error
func (*MockUserDBI) CleanupHistory ¶ added in v2.7.0
func (m *MockUserDBI) CleanupHistory(retentionDays int) (int64, error)
func (*MockUserDBI) CleanupMediaHistory ¶ added in v2.7.0
func (m *MockUserDBI) CleanupMediaHistory(retentionDays int) (int64, error)
func (*MockUserDBI) Close ¶
func (m *MockUserDBI) Close() error
func (*MockUserDBI) CloseHangingMediaHistory ¶ added in v2.7.0
func (m *MockUserDBI) CloseHangingMediaHistory() error
func (*MockUserDBI) CloseMediaHistory ¶ added in v2.7.0
func (*MockUserDBI) DeleteAllInboxMessages ¶ added in v2.8.0
func (m *MockUserDBI) DeleteAllInboxMessages() (int64, error)
func (*MockUserDBI) DeleteInboxMessage ¶ added in v2.8.0
func (m *MockUserDBI) DeleteInboxMessage(id int64) 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) GetInboxMessages ¶ added in v2.8.0
func (m *MockUserDBI) GetInboxMessages() ([]database.InboxMessage, error)
func (*MockUserDBI) GetMapping ¶
func (m *MockUserDBI) GetMapping(id int64) (database.Mapping, error)
func (*MockUserDBI) GetMediaHistory ¶ added in v2.7.0
func (m *MockUserDBI) GetMediaHistory(lastID, limit int) ([]database.MediaHistoryEntry, error)
func (*MockUserDBI) GetSupportedZapLinkHosts ¶ added in v2.8.0
func (m *MockUserDBI) GetSupportedZapLinkHosts() ([]string, error)
func (*MockUserDBI) GetZapLinkCache ¶
func (m *MockUserDBI) GetZapLinkCache(url string) (string, error)
func (*MockUserDBI) GetZapLinkHost ¶
func (m *MockUserDBI) GetZapLinkHost(host string) (found, zapScript bool, err error)
func (*MockUserDBI) HealTimestamps ¶ added in v2.7.0
func (*MockUserDBI) MigrateUp ¶
func (m *MockUserDBI) MigrateUp() error
func (*MockUserDBI) PruneExpiredZapLinkHosts ¶ added in v2.8.0
func (m *MockUserDBI) PruneExpiredZapLinkHosts(olderThan time.Duration) (int64, 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) UpdateMediaHistoryTime ¶ added in v2.7.0
func (m *MockUserDBI) UpdateMediaHistoryTime(dbid int64, playTime int) 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