| // Copyright (c) 2026, 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:dwds/src/utilities/fix_protocol.dart'; |
| import 'package:test/test.dart'; |
| |
| void main() { |
| group('fixProtocol', () { |
| group('when window location protocol is https:', () { |
| const windowProtocol = 'https:'; |
| |
| test('upgrades http to https for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'http://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'https://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('upgrades ws to wss for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'ws://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'wss://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('does not modify http on localhost', () { |
| expect( |
| fixProtocol( |
| 'http://localhost:8080/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'http://localhost:8080/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('does not modify ws on localhost', () { |
| expect( |
| fixProtocol( |
| 'ws://localhost:8080/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'ws://localhost:8080/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('leaves https unchanged for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'https://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'https://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('leaves wss unchanged for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'wss://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'wss://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| }); |
| |
| group('when window location protocol is http:', () { |
| const windowProtocol = 'http:'; |
| |
| test('does not modify http for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'http://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'http://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('does not modify ws for non-localhost hosts', () { |
| expect( |
| fixProtocol( |
| 'ws://example.com/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'ws://example.com/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('does not modify http on localhost', () { |
| expect( |
| fixProtocol( |
| 'http://localhost:8080/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'http://localhost:8080/foo/\$dwdsSseHandler', |
| ); |
| }); |
| |
| test('does not modify ws on localhost', () { |
| expect( |
| fixProtocol( |
| 'ws://localhost:8080/foo/\$dwdsSseHandler', |
| windowLocationProtocol: windowProtocol, |
| ), |
| 'ws://localhost:8080/foo/\$dwdsSseHandler', |
| ); |
| }); |
| }); |
| |
| group('when window location protocol is not https: (e.g. file:)', () { |
| test('does not modify urls', () { |
| expect( |
| fixProtocol( |
| 'http://example.com/foo', |
| windowLocationProtocol: 'file:', |
| ), |
| 'http://example.com/foo', |
| ); |
| expect( |
| fixProtocol('ws://example.com/foo', windowLocationProtocol: 'file:'), |
| 'ws://example.com/foo', |
| ); |
| }); |
| }); |
| }); |
| } |