forked from BasedHardware/omi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpure_socket_auth_test.dart
More file actions
46 lines (39 loc) · 1.6 KB
/
Copy pathpure_socket_auth_test.dart
File metadata and controls
46 lines (39 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import 'dart:async';
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:omi/backend/http/shared.dart';
import 'package:omi/services/auth/auth_token_result.dart';
import 'package:omi/services/sockets/pure_socket.dart';
void main() {
test('unavailable auth blocks a socket before opening the network', () async {
final socket = PureSocket(
'wss://example.invalid',
headersProvider: () async {
throw AuthTokenUnavailableException(const AuthTokenTransientFailure(failureClass: 'offline'));
},
);
expect(await socket.connect(), isFalse);
expect(socket.status, PureSocketStatus.notConnected);
});
test('merges extra headers with a custom provider', () async {
final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0);
final headersSeen = Completer<Map<String, String>>();
server.listen((request) async {
final webSocket = await WebSocketTransformer.upgrade(request);
headersSeen.complete({
'extra': request.headers.value('x-extra') ?? '',
'provider': request.headers.value('x-provider') ?? '',
});
await webSocket.close();
});
addTearDown(() => server.close(force: true));
final socket = PureSocket(
'ws://${InternetAddress.loopbackIPv4.address}:${server.port}',
headersProvider: () async => {'x-provider': 'provider'},
extraHeaders: const {'x-extra': 'extra', 'x-provider': 'override'},
);
expect(await socket.connect(), isTrue);
expect(await headersSeen.future, {'extra': 'extra', 'provider': 'override'});
await socket.disconnect();
});
}