Files
Erupe/server/api/repo_mocks_test.go
Houmgaor 7ff26f4980 feat(api): add v2 routes, auth middleware, structured errors, and server status endpoint
Introduces incremental API improvements for custom launcher support
(mhf-iel, stratic-dev's Rust launcher):

- Standardize all error responses to JSON envelopes with error/message
- Add Bearer token auth middleware for v2 routes (legacy body-token preserved)
- Add `returning` (>90d inactive) and `courses` fields to auth response
- Add /v2/ route prefix with HTTP method enforcement
- Add GET /v2/server/status for MezFes, featured weapon, and event status
- Add APIEventRepo for read-only event data access

Closes #44
2026-02-27 12:46:23 +01:00

142 lines
3.5 KiB
Go

package api
import (
"context"
"time"
)
// mockAPIUserRepo implements APIUserRepo for testing.
type mockAPIUserRepo struct {
registerID uint32
registerRights uint32
registerErr error
credentialsID uint32
credentialsPassword string
credentialsRights uint32
credentialsErr error
lastLogin time.Time
lastLoginErr error
returnExpiry time.Time
returnExpiryErr error
updateReturnExpiryErr error
updateLastLoginErr error
}
func (m *mockAPIUserRepo) Register(_ context.Context, _, _ string, _ time.Time) (uint32, uint32, error) {
return m.registerID, m.registerRights, m.registerErr
}
func (m *mockAPIUserRepo) GetCredentials(_ context.Context, _ string) (uint32, string, uint32, error) {
return m.credentialsID, m.credentialsPassword, m.credentialsRights, m.credentialsErr
}
func (m *mockAPIUserRepo) GetLastLogin(_ uint32) (time.Time, error) {
return m.lastLogin, m.lastLoginErr
}
func (m *mockAPIUserRepo) GetReturnExpiry(_ uint32) (time.Time, error) {
return m.returnExpiry, m.returnExpiryErr
}
func (m *mockAPIUserRepo) UpdateReturnExpiry(_ uint32, _ time.Time) error {
return m.updateReturnExpiryErr
}
func (m *mockAPIUserRepo) UpdateLastLogin(_ uint32, _ time.Time) error {
return m.updateLastLoginErr
}
// mockAPICharacterRepo implements APICharacterRepo for testing.
type mockAPICharacterRepo struct {
newCharacter Character
newCharacterErr error
countForUser int
countForUserErr error
createChar Character
createCharErr error
isNewResult bool
isNewErr error
hardDeleteErr error
softDeleteErr error
characters []Character
charactersErr error
exportResult map[string]interface{}
exportErr error
}
func (m *mockAPICharacterRepo) GetNewCharacter(_ context.Context, _ uint32) (Character, error) {
return m.newCharacter, m.newCharacterErr
}
func (m *mockAPICharacterRepo) CountForUser(_ context.Context, _ uint32) (int, error) {
return m.countForUser, m.countForUserErr
}
func (m *mockAPICharacterRepo) Create(_ context.Context, _ uint32, _ uint32) (Character, error) {
return m.createChar, m.createCharErr
}
func (m *mockAPICharacterRepo) IsNew(_ uint32) (bool, error) {
return m.isNewResult, m.isNewErr
}
func (m *mockAPICharacterRepo) HardDelete(_ uint32) error {
return m.hardDeleteErr
}
func (m *mockAPICharacterRepo) SoftDelete(_ uint32) error {
return m.softDeleteErr
}
func (m *mockAPICharacterRepo) GetForUser(_ context.Context, _ uint32) ([]Character, error) {
return m.characters, m.charactersErr
}
func (m *mockAPICharacterRepo) ExportSave(_ context.Context, _, _ uint32) (map[string]interface{}, error) {
return m.exportResult, m.exportErr
}
// mockAPIEventRepo implements APIEventRepo for testing.
type mockAPIEventRepo struct {
featureWeapon *FeatureWeaponRow
featureWeaponErr error
events []EventRow
eventsErr error
}
func (m *mockAPIEventRepo) GetFeatureWeapon(_ context.Context, _ time.Time) (*FeatureWeaponRow, error) {
return m.featureWeapon, m.featureWeaponErr
}
func (m *mockAPIEventRepo) GetActiveEvents(_ context.Context, _ string) ([]EventRow, error) {
return m.events, m.eventsErr
}
// mockAPISessionRepo implements APISessionRepo for testing.
type mockAPISessionRepo struct {
createTokenID uint32
createTokenErr error
userID uint32
userIDErr error
}
func (m *mockAPISessionRepo) CreateToken(_ context.Context, _ uint32, _ string) (uint32, error) {
return m.createTokenID, m.createTokenErr
}
func (m *mockAPISessionRepo) GetUserIDByToken(_ context.Context, _ string) (uint32, error) {
return m.userID, m.userIDErr
}