|
@@ -0,0 +1,90 @@
|
|
|
+describe('WebClientService', function() {
|
|
|
+
|
|
|
+ let $service;
|
|
|
+
|
|
|
+ beforeEach(function() {
|
|
|
+
|
|
|
+ module(($provide) => {
|
|
|
+ // Provide configuration
|
|
|
+ $provide.constant('CONFIG', {
|
|
|
+ ICE_SERVERS: [
|
|
|
+ {
|
|
|
+ urls: [
|
|
|
+ 'turn:turn.threema.ch:443?transport=tcp',
|
|
|
+ 'turn:turn.threema.ch:443?transport=udp',
|
|
|
+ 'turns:turn.threema.ch:443?transport=tcp',
|
|
|
+ ],
|
|
|
+ username: 'user',
|
|
|
+ credential: 'credential',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ });
|
|
|
+
|
|
|
+ // Mock some dependencies that we don't really need
|
|
|
+ $provide.constant('PROTOCOL_VERSION', 1337);
|
|
|
+ $provide.constant('$state', null);
|
|
|
+ $provide.constant('$translate', null);
|
|
|
+ });
|
|
|
+
|
|
|
+ // Load modules
|
|
|
+ module('3ema.services');
|
|
|
+ module('3ema.container');
|
|
|
+
|
|
|
+ // Inject the service to be tested
|
|
|
+ inject(function(WebClientService) {
|
|
|
+ $service = WebClientService;
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ it('can skip ICE TLS hosts if a non-TLS TCP server is available', () => {
|
|
|
+ const allUrlsBefore = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsBefore.indexOf('turns:turn.threema.ch:443?transport=tcp')).not.toEqual(-1);
|
|
|
+
|
|
|
+ $service.skipIceTls();
|
|
|
+
|
|
|
+ const allUrlsAfter = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsAfter.length).toEqual(allUrlsBefore.length - 1);
|
|
|
+ expect(allUrlsAfter.indexOf('turns:turn.threema.ch:443?transport=tcp')).toEqual(-1);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('can skip ICE TLS hosts if a non-TLS TCP server is available in another server object', () => {
|
|
|
+ $service.config.ICE_SERVERS = [
|
|
|
+ {
|
|
|
+ urls: ['turn:turn.threema.ch:443?transport=udp', 'turns:turn.threema.ch:443?transport=tcp'],
|
|
|
+ username: 'user', credential: 'credential',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ urls: ['turn:turn.threema.ch:443?transport=tcp'],
|
|
|
+ username: 'user', credential: 'credential',
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ const allUrlsBefore = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsBefore.indexOf('turns:turn.threema.ch:443?transport=tcp')).not.toEqual(-1);
|
|
|
+
|
|
|
+ $service.skipIceTls();
|
|
|
+
|
|
|
+ const allUrlsAfter = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsAfter.length).toEqual(allUrlsBefore.length - 1);
|
|
|
+ expect(allUrlsAfter.indexOf('turns:turn.threema.ch:443?transport=tcp')).toEqual(-1);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('does not skip ICE TLS hosts if no non-TLS TCP server is available', () => {
|
|
|
+ $service.config.ICE_SERVERS = [
|
|
|
+ {
|
|
|
+ urls: ['turn:turn.threema.ch:443?transport=udp', 'turns:turn.threema.ch:443?transport=tcp'],
|
|
|
+ username: 'user',
|
|
|
+ credential: 'credential',
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ const allUrlsBefore = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsBefore.indexOf('turns:turn.threema.ch:443?transport=tcp')).not.toEqual(-1);
|
|
|
+
|
|
|
+ $service.skipIceTls();
|
|
|
+
|
|
|
+ const allUrlsAfter = [].concat(...$service.config.ICE_SERVERS.map((conf) => conf.urls));
|
|
|
+ expect(allUrlsAfter.length).toEqual(allUrlsBefore.length);
|
|
|
+ expect(allUrlsAfter.indexOf('turns:turn.threema.ch:443?transport=tcp')).not.toEqual(-1);
|
|
|
+ });
|
|
|
+
|
|
|
+});
|