mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
36 lines
1.4 KiB
Go
36 lines
1.4 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/cosmic-clash/cosmic-clash/server/domain"
|
|
)
|
|
|
|
func TestServerConnectionSQLBindsWorkloadParticipantAndLiveAssignment(t *testing.T) {
|
|
for _, fragment := range []string{
|
|
"connection_generation", "mp.disconnected_at", "mp.participation_active", "m.server_id = $2",
|
|
"a.allocation_id = $3", "a.state = 'ALLOCATED'", "assn.player_id = mp.player_id", "FOR UPDATE OF mp",
|
|
} {
|
|
if !strings.Contains(ServerConnectionLeaseSQL, fragment) {
|
|
t.Fatalf("connection SQL missing %q: %s", fragment, ServerConnectionLeaseSQL)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRecordPlayerConnectedRejectsInvalidArguments(t *testing.T) {
|
|
binding := domain.WorkloadBinding{AllocationID: "allocation-1", MatchID: "match-1", ServerID: "server-1"}
|
|
if _, err := ClaimPlayerConnection(context.Background(), (*sql.DB)(nil), binding, "player-1", 0, "connection-key-123456", time.Unix(1000, 0)); err == nil {
|
|
t.Fatal("nil database accepted")
|
|
}
|
|
if _, err := ClaimPlayerConnection(context.Background(), &sql.DB{}, domain.WorkloadBinding{}, "player-1", 0, "connection-key-123456", time.Unix(1000, 0)); err == nil {
|
|
t.Fatal("empty workload binding accepted")
|
|
}
|
|
if err := RecordPlayerDisconnected(context.Background(), &sql.DB{}, binding, "player-1", 0, "disconnect-key-123456", time.Unix(1000, 0)); err == nil {
|
|
t.Fatal("zero generation disconnect accepted")
|
|
}
|
|
}
|