Remove client-side isLoggedIn value
[ProtonMail-WebClient.git] / packages / shared / test / apps / helper.spec.ts
blob2bdbf715316fdaf6a67900c10bb5552b788e893d
1 import { getAppHref } from '../../lib/apps/helper';
2 import { APPS } from '../../lib/constants';
4 const location = {
5     hostname: 'calendar.protonmail.com',
6     protocol: 'https:',
7     port: '',
8 };
9 describe('sso app href', () => {
10     it('should produce links relative to the current second level domain', () => {
11         expect(getAppHref('/', APPS.PROTONACCOUNT, undefined, location)).toBe(`https://account.protonmail.com`);
12     });
14     it('should produce links relative to localhost', () => {
15         const location = {
16             hostname: 'localhost',
17             protocol: 'http:',
18             port: '',
19         };
20         expect(getAppHref('/', APPS.PROTONACCOUNT, undefined, location)).toBe(`http://account.localhost`);
21     });
23     it('should produce links relative to the current top domain', () => {
24         const location = {
25             hostname: 'protonmail.com',
26             protocol: 'https:',
27             port: '',
28         };
29         expect(getAppHref('/', APPS.PROTONACCOUNT, undefined, location)).toBe(`https://account.protonmail.com`);
30     });
32     it('should produce links relative to the current domain, with a local id', () => {
33         expect(getAppHref('/', APPS.PROTONACCOUNT, 1, location)).toBe(`https://account.protonmail.com/u/1`);
34     });
36     it('should produce links to other apps', () => {
37         expect(getAppHref('/', APPS.PROTONCALENDAR, 2, location)).toBe(`https://calendar.protonmail.com/u/2`);
38     });
40     it('should produce links to other apps with another location', () => {
41         const location = {
42             hostname: 'test.com',
43             protocol: 'https:',
44             port: '',
45         };
46         expect(getAppHref('/', APPS.PROTONCALENDAR, 2, location)).toBe(`https://calendar.test.com/u/2`);
47     });
49     it('should produce links respecting the port', () => {
50         const location = {
51             hostname: 'test.com',
52             protocol: 'https:',
53             port: '4443',
54         };
55         expect(getAppHref('/', APPS.PROTONCALENDAR, 2, location)).toBe(`https://calendar.test.com:4443/u/2`);
56     });
58     it('should produce links to other apps with another location', () => {
59         const location = {
60             hostname: 'test.com',
61             protocol: 'https:',
62             port: '',
63         };
64         expect(getAppHref('/', APPS.PROTONCALENDAR, 2, location)).toBe(`https://calendar.test.com/u/2`);
65     });
67     it('should override protonvpn hostname', () => {
68         const location = {
69             hostname: 'account.protonvpn.com',
70             protocol: 'https:',
71             port: '',
72         };
73         expect(getAppHref('/', APPS.PROTONCALENDAR, 2, location)).toBe(`https://calendar.proton.me/u/2`);
74     });
76     it('should produce links stripping previous local id basenames', () => {
77         const location = {
78             hostname: 'account.protonmail.com',
79             protocol: 'https:',
80             port: '',
81         };
82         expect(getAppHref('/u/0/mail', APPS.PROTONACCOUNT, 2, location)).toBe(
83             `https://account.protonmail.com/u/2/mail`
84         );
85         expect(getAppHref('/u/0/mail', APPS.PROTONACCOUNT, 0, location)).toBe(
86             `https://account.protonmail.com/u/0/mail`
87         );
88     });
89 });