Files
moonwell-launcher/test/features/launcher/data/launcher_api_client_test.dart
T

49 lines
1.5 KiB
Dart

import 'dart:convert';
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
import 'package:moonwell_launcher/features/launcher/data/launcher_api_client.dart';
void main() {
test('requests a Vanilla game ticket with bearer authentication', () async {
final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0);
addTearDown(() => server.close(force: true));
final client = _LocalLauncherApiClient(server.port);
final ticketFuture = client.issueGameTicket('test-launcher-token');
final request = await server.first;
expect(request.method, 'POST');
expect(request.uri.path, '/api/launcher/game-ticket');
expect(
request.headers.value(HttpHeaders.authorizationHeader),
'Bearer test-launcher-token',
);
expect(jsonDecode(await utf8.decoder.bind(request).join()), {
'client_build': 5875,
});
request.response.headers.contentType = ContentType.json;
request.response.write(
jsonEncode({
'account': 'PLAYERONE',
'ticket': 'A1B2C3D4E5F6G7H8',
'expires_at': DateTime.now()
.toUtc()
.add(const Duration(seconds: 60))
.toIso8601String(),
}),
);
await request.response.close();
final ticket = await ticketFuture;
expect(ticket.account, 'PLAYERONE');
expect(ticket.ticket, 'A1B2C3D4E5F6G7H8');
});
}
class _LocalLauncherApiClient extends LauncherApiClient {
_LocalLauncherApiClient(this.port);
final int port;
@override
String get apiBaseUrl => 'http://127.0.0.1:$port';
}