blob: 312f70f6583c102a42d01ea418a2ea8f6d72d7cc [file] [log] [blame] [edit]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@Timeout(Duration(minutes: 2))
import 'dart:async';
import 'package:async/src/stream_queue.dart';
import 'package:dwds/data/extension_request.dart';
import 'package:dwds/src/handlers/socket_connections.dart';
import 'package:dwds/src/servers/extension_backend.dart';
import 'package:http/http.dart' as http;
import 'package:shelf/src/request.dart';
import 'package:shelf/src/response.dart';
import 'package:test/test.dart';
class MockSocketHandler implements SocketHandler {
static const mockResponse = 'Returned from MockSocketHandler';
@override
StreamQueue<SocketConnection> get connections =>
StreamQueue(const Stream.empty());
@override
FutureOr<Response> handler(Request request) {
return Response.ok(mockResponse);
}
@override
void shutdown() {}
}
void main() {
late ExtensionBackend extensionBackend;
setUpAll(() async {
extensionBackend =
await ExtensionBackend.start(MockSocketHandler(), 'localhost');
});
test('returns success statusCode', () async {
final result = await http.get(
Uri.parse(
'http://localhost:${extensionBackend.port}/$authenticationPath',
),
);
expect(result.statusCode, 200);
});
test('returns expected authentication response', () async {
final result = await http.get(
Uri.parse(
'http://localhost:${extensionBackend.port}/$authenticationPath',
),
);
expect(result.body, authenticationResponse);
});
test('delegates to the underlying socket handler', () async {
final result = await http.get(
Uri.parse('http://localhost:${extensionBackend.port}/somedummypath'),
);
expect(result.body, MockSocketHandler.mockResponse);
});
}