// Copyright 2022 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. import 'package:devtools_shared/src/service_utils.dart'; import 'package:test/test.dart'; void main() { group('normalizeVmServiceUri', () { test('normalizes simple URIs', () { expect( normalizeVmServiceUri('http://127.0.0.1:60667/72K34Xmq0X0=').toString(), equals('http://127.0.0.1:60667/72K34Xmq0X0='), ); expect( normalizeVmServiceUri('http://127.0.0.1:60667/72K34Xmq0X0=/ ') .toString(), equals('http://127.0.0.1:60667/72K34Xmq0X0=/'), ); expect( normalizeVmServiceUri('http://127.0.0.1:60667').toString(), equals('http://127.0.0.1:60667'), ); expect( normalizeVmServiceUri('http://127.0.0.1:60667/').toString(), equals('http://127.0.0.1:60667/'), ); }); test('properly strips leading whitespace and trailing URI fragments', () { expect( normalizeVmServiceUri(' http://127.0.0.1:60667/72K34Xmq0X0=/#/vm') .toString(), equals('http://127.0.0.1:60667/72K34Xmq0X0=/'), ); expect( normalizeVmServiceUri(' http://127.0.0.1:60667/72K34Xmq0X0=/#/vm ') .toString(), equals('http://127.0.0.1:60667/72K34Xmq0X0=/'), ); }); test('properly handles encoded urls', () { expect( normalizeVmServiceUri('http%3A%2F%2F127.0.0.1%3A58824%2FCnvgRrQJG7w%3D') .toString(), equals('http://127.0.0.1:58824/CnvgRrQJG7w='), ); expect( normalizeVmServiceUri( 'http%3A%2F%2F127.0.0.1%3A58824%2FCnvgRrQJG7w%3D ', ).toString(), equals('http://127.0.0.1:58824/CnvgRrQJG7w='), ); expect( normalizeVmServiceUri( ' http%3A%2F%2F127.0.0.1%3A58824%2FCnvgRrQJG7w%3D ', ).toString(), equals('http://127.0.0.1:58824/CnvgRrQJG7w='), ); }); test('handles prefixed devtools server uris', () { expect( normalizeVmServiceUri( 'http://127.0.0.1:9101?uri=http%3A%2F%2F127.0.0.1%3A56142%2FHOwgrxalK00%3D%2F', ).toString(), equals('http://127.0.0.1:56142/HOwgrxalK00=/'), ); }); test('Returns null when given a non-absolute url', () { expect(normalizeVmServiceUri('my/page'), null); }); }); }