// Copyright (c) 2014, 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. import 'package:analysis_server/protocol/protocol.dart'; import 'package:analysis_server/protocol/protocol_constants.dart'; import 'package:analysis_server/protocol/protocol_generated.dart'; import 'package:analysis_server/src/analysis_server.dart'; import 'package:analysis_server/src/domain_server.dart'; import 'package:analysis_server/src/server/crash_reporting_attachments.dart'; import 'package:analysis_server/src/utilities/mocks.dart'; import 'package:analyzer/file_system/memory_file_system.dart'; import 'package:analyzer/instrumentation/instrumentation.dart'; import 'package:analyzer/src/generated/sdk.dart'; import 'package:test/test.dart'; import 'constants.dart'; import 'mocks.dart'; void main() { late AnalysisServer server; late ServerDomainHandler handler; late MockServerChannel serverChannel; setUp(() { serverChannel = MockServerChannel(); var resourceProvider = MemoryResourceProvider(); server = AnalysisServer( serverChannel, resourceProvider, AnalysisServerOptions(), DartSdkManager(''), CrashReportingAttachmentsBuilder.empty, InstrumentationService.NULL_SERVICE); handler = ServerDomainHandler(server); }); group('ServerDomainHandler', () { test('getVersion', () { var request = ServerGetVersionParams().toRequest('0'); var response = handler.handleRequest(request)!; expect( response.toJson(), equals({ Response.ID: '0', Response.RESULT: {VERSION: PROTOCOL_VERSION} })); }); group('setSubscriptions', () { test('invalid service name', () { var request = Request('0', SERVER_REQUEST_SET_SUBSCRIPTIONS, { SUBSCRIPTIONS: ['noSuchService'] }); var response = handler.handleRequest(request); expect(response, isResponseFailure('0')); }); test('success', () { expect(server.serverServices, isEmpty); // send request var request = ServerSetSubscriptionsParams([ServerService.STATUS]).toRequest('0'); var response = handler.handleRequest(request); expect(response, isResponseSuccess('0')); // set of services has been changed expect(server.serverServices, contains(ServerService.STATUS)); }); }); test('shutdown', () async { var request = ServerShutdownParams().toRequest('0'); var response = await serverChannel.sendRequest(request); expect(response, isResponseSuccess('0')); }); }); }