Merge branch 'pass-lifetime-fixes' into 'main'
[ProtonMail-WebClient.git] / packages / account / securityCheckup / helpers / getBackLink.test.ts
blobdca9a7011cc59384b9faea7486d3b044ab154887
1 import getBackLink from './getBackLink';
3 describe('getBackLink', () => {
4     test('throws error if href is not a valid url', () => {
5         expect(() => {
6             getBackLink({
7                 backHref: 'asdf',
8                 hostname: 'account.proton.me',
9             });
10         }).toThrow();
11     });
13     test('throws error if href hostname is not the same as hostname', () => {
14         expect(() => {
15             getBackLink({
16                 backHref: 'https://straightouttacrompton.dev',
17                 hostname: 'account.proton.me',
18             });
19         }).toThrow();
20     });
22     describe('href', () => {
23         test('returns href if backHref has the same hostname as provided hostname', () => {
24             const result = getBackLink({
25                 backHref: 'https://account.proton.me/asdf',
26                 hostname: 'account.proton.me',
27             });
29             expect(result.href).toEqual('https://account.proton.me/asdf');
30         });
31     });
33     describe('to', () => {
34         test('returns no empty to if pathname is empty', () => {
35             const result = getBackLink({
36                 backHref: 'https://account.proton.me',
37                 hostname: 'account.proton.me',
38             });
40             expect(result.to).toEqual('/');
41         });
43         test('returns to if backHref has the same hostname as provided hostname', () => {
44             const result = getBackLink({
45                 backHref: 'https://account.proton.me/asdf',
46                 hostname: 'account.proton.me',
47             });
49             expect(result.to).toEqual('/asdf');
50         });
52         test('strips local basename from path', () => {
53             const result = getBackLink({
54                 backHref: 'https://account.proton.me/u/0/asdf',
55                 hostname: 'account.proton.me',
56             });
58             expect(result.to).toEqual('/asdf');
59         });
60     });
62     describe('appNameFromHostname', () => {
63         test('returns undefined appNameFromHostname for account hostname', () => {
64             const result = getBackLink({
65                 backHref: 'https://account.proton.me',
66                 hostname: 'account.proton.me',
67             });
69             expect(result.appNameFromHostname).toEqual(undefined);
70         });
72         test('returns undefined appNameFromHostname if hostname application is not in ALLOWED_APPS', () => {
73             const result = getBackLink({
74                 backHref: 'https://verify.proton.me',
75                 hostname: 'verify.proton.me',
76             });
78             expect(result.appNameFromHostname).toEqual(undefined);
79         });
81         test('returns correct appNameFromHostname if hostname application is in ALLOWED_APPS', () => {
82             const result = getBackLink({
83                 backHref: 'https://mail.proton.me',
84                 hostname: 'mail.proton.me',
85             });
87             expect(result.appNameFromHostname).toEqual('proton-mail');
88         });
89     });
91     describe('appName', () => {
92         test('returns undefined appName for account hostname', () => {
93             const result = getBackLink({
94                 backHref: 'https://account.proton.me',
95                 hostname: 'account.proton.me',
96             });
98             expect(result.appName).toEqual(undefined);
99         });
101         test('returns undefined appName if hostname application is not in ALLOWED_APPS', () => {
102             const result = getBackLink({
103                 backHref: 'https://verify.proton.me',
104                 hostname: 'verify.proton.me',
105             });
107             expect(result.appName).toEqual(undefined);
108         });
110         test('returns correct appName if hostname application is in ALLOWED_APPS', () => {
111             const result = getBackLink({
112                 backHref: 'https://mail.proton.me',
113                 hostname: 'mail.proton.me',
114             });
116             expect(result.appName).toEqual('proton-mail');
117         });
119         test('prioritises hostname app over pathname app', () => {
120             const result = getBackLink({
121                 backHref: 'https://mail.proton.me/calendar',
122                 hostname: 'mail.proton.me',
123             });
125             expect(result.appName).toEqual('proton-mail');
126         });
128         test('returns undefined appName if pathname application is not in ALLOWED_APPS', () => {
129             const result = getBackLink({
130                 backHref: 'https://account.proton.me/verify',
131                 hostname: 'account.proton.me',
132             });
134             expect(result.appName).toEqual(undefined);
135         });
137         test('returns correct appName if hostname application is in ALLOWED_APPS', () => {
138             const result = getBackLink({
139                 backHref: 'https://account.proton.me/mail',
140                 hostname: 'account.proton.me',
141             });
143             expect(result.appName).toEqual('proton-mail');
144         });
146         test('returns correct appName if local basename included', () => {
147             const result = getBackLink({
148                 backHref: 'https://account.proton.me/u/0/mail',
149                 hostname: 'account.proton.me',
150             });
152             expect(result.appName).toEqual('proton-mail');
153         });
154     });