// 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)) library; 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 get connections => StreamQueue(const Stream.empty()); @override FutureOr 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); }); }