fix(relay): harden lifecycle and protocol handling

This commit is contained in:
edde746
2026-07-12 17:31:15 +02:00
parent fe8d405a56
commit a9493f4f0e
15 changed files with 1123 additions and 289 deletions
@@ -4,6 +4,7 @@ import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/watch_together/services/watch_together_peer_service.dart';
import 'package:plezy/watch_together/models/sync_message.dart';
typedef _MessageHandler = FutureOr<void> Function(int connection, WebSocket socket, Map<String, dynamic> message);
@@ -72,6 +73,18 @@ void main() {
relays.clear();
});
test('invalid relay identifiers fail before network access', () async {
final service = WatchTogetherPeerService();
services.add(service);
await expectLater(service.createSession(sessionId: 'bad room'), throwsArgumentError);
await expectLater(service.joinSession('bad/room'), throwsArgumentError);
expect(
() => service.sendTo('bad peer', const SyncMessage(type: SyncMessageType.requestState, timestamp: 0)),
throwsArgumentError,
);
});
test('host connects, listens, and announces create with the existing wire format', () async {
late final _RelayServer relay;
relay = await relayWith((_, socket, message) {