fix: serialize async state transitions

This commit is contained in:
edde746
2026-07-12 18:59:14 +02:00
parent d1c4ae83eb
commit cd88f73f05
16 changed files with 294 additions and 82 deletions
@@ -215,4 +215,22 @@ void main() {
expect(peerEvents, ['guest-1']);
expect(relay.messages.single.where((message) => message['type'] == 'create'), hasLength(1));
});
test('disconnect cancels an in-flight room announcement without timeout delay', () async {
final announcementSeen = Completer<void>();
final relay = await relayWith((_, _, message) {
if (message['type'] == 'create' && !announcementSeen.isCompleted) {
announcementSeen.complete();
}
});
final service = serviceFor(relay);
final pending = service.createSession(sessionId: 'cancel1');
await announcementSeen.future.timeout(const Duration(seconds: 1));
await service.disconnect();
await expectLater(pending, throwsStateError);
expect(service.sessionId, isNull);
expect(service.connectedPeers, isEmpty);
});
}