diff options
Diffstat (limited to 'tests/functional/dashboard/transfer.spec.ts')
-rw-r--r-- | tests/functional/dashboard/transfer.spec.ts | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/tests/functional/dashboard/transfer.spec.ts b/tests/functional/dashboard/transfer.spec.ts new file mode 100644 index 0000000..0f8ee31 --- /dev/null +++ b/tests/functional/dashboard/transfer.spec.ts | |||
@@ -0,0 +1,222 @@ | |||
1 | import { test } from '@japa/runner'; | ||
2 | import UserFactory from 'Database/factories/UserFactory'; | ||
3 | |||
4 | test.group('Dashboard / Transfer page', () => { | ||
5 | test('redirects to /user/login when accessing /user/transfer as guest', async ({ | ||
6 | client, | ||
7 | }) => { | ||
8 | const response = await client.get('/user/transfer'); | ||
9 | |||
10 | response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL | ||
11 | }); | ||
12 | |||
13 | test('returns a 200 opening the transfer route while being logged in', async ({ | ||
14 | client, | ||
15 | }) => { | ||
16 | const user = await UserFactory.create(); | ||
17 | const response = await client.get('/user/transfer').loginAs(user); | ||
18 | |||
19 | response.assertStatus(200); | ||
20 | }); | ||
21 | |||
22 | // TODO: Fix the following tests | ||
23 | |||
24 | // test('returns a validation error when not uploading a file', async ({ | ||
25 | // client, | ||
26 | // }) => { | ||
27 | // const user = await UserFactory.create(); | ||
28 | // const response = await client.put('/user/transfer').loginAs(user); | ||
29 | |||
30 | // response.assertTextIncludes('File missing'); | ||
31 | // }); | ||
32 | |||
33 | // test('returns a validation error when trying to use anything but json', async ({ | ||
34 | // client, | ||
35 | // }) => { | ||
36 | // const user = await UserFactory.create(); | ||
37 | // const response = await client | ||
38 | // .put('/user/transfer') | ||
39 | // .loginAs(user) | ||
40 | // .file('file', 'tests/functional/dashboard/import-stubs/random-file.txt', { | ||
41 | // filename: 'random-file.txt', | ||
42 | // }); | ||
43 | |||
44 | // response.assertTextIncludes('File missing'); | ||
45 | // }); | ||
46 | |||
47 | // test('returns a validation error when trying to use anything valid json', async ({ | ||
48 | // client, | ||
49 | // }) => { | ||
50 | // const user = await UserFactory.create(); | ||
51 | // const response = await client | ||
52 | // .put('/user/transfer') | ||
53 | // .loginAs(user) | ||
54 | // .file('file', 'tests/functional/dashboard/import-stubs/invalid.json', { | ||
55 | // filename: 'invalid.json', | ||
56 | // }); | ||
57 | |||
58 | // response.assertTextIncludes('Invalid Ferdium account file'); | ||
59 | // }); | ||
60 | |||
61 | // test('returns a validation error when trying to use a json file with no ferdium structure', async ({ | ||
62 | // client, | ||
63 | // }) => { | ||
64 | // const user = await UserFactory.create(); | ||
65 | // const response = await client | ||
66 | // .put('/user/transfer') | ||
67 | // .loginAs(user) | ||
68 | // .file( | ||
69 | // 'file', | ||
70 | // 'tests/functional/dashboard/import-stubs/valid-no-data.json', | ||
71 | // { | ||
72 | // filename: 'valid-no-data.json', | ||
73 | // }, | ||
74 | // ); | ||
75 | |||
76 | // response.assertTextIncludes('Invalid Ferdium account file (2)'); | ||
77 | // }); | ||
78 | |||
79 | // test('correctly transfers data from json/ferdi-data and ferdium-data file with only workspaces', async ({ | ||
80 | // client, | ||
81 | // assert, | ||
82 | // }) => { | ||
83 | // // Repeat for all 3 file extension | ||
84 | // const files = [ | ||
85 | // 'workspaces-only.json', | ||
86 | // 'workspaces-only.ferdi-data', | ||
87 | // 'workspaces-only.ferdium-data', | ||
88 | // ]; | ||
89 | |||
90 | // for (const file of files) { | ||
91 | // // eslint-disable-next-line no-await-in-loop | ||
92 | // const user = await UserFactory.create(); | ||
93 | // // eslint-disable-next-line no-await-in-loop | ||
94 | // const response = await client | ||
95 | // .put('/user/transfer') | ||
96 | // .loginAs(user) | ||
97 | // .file('file', `tests/functional/dashboard/import-stubs/${file}`, { | ||
98 | // filename: file, | ||
99 | // }); | ||
100 | |||
101 | // response.assertTextIncludes( | ||
102 | // 'Your account has been imported, you can now login as usual!', | ||
103 | // ); | ||
104 | // // eslint-disable-next-line no-await-in-loop | ||
105 | // await user.refresh(); | ||
106 | |||
107 | // // eslint-disable-next-line no-await-in-loop | ||
108 | // const workspacesForUser = await user.related('workspaces').query(); | ||
109 | // assert.equal(workspacesForUser.length, 3); | ||
110 | // } | ||
111 | // }); | ||
112 | |||
113 | // test('correctly transfers data from json/ferdi-data and ferdium-data file with only services', async ({ | ||
114 | // client, | ||
115 | // assert, | ||
116 | // }) => { | ||
117 | // // Repeat for all 3 file extension | ||
118 | // const files = [ | ||
119 | // 'services-only.json', | ||
120 | // 'services-only.ferdi-data', | ||
121 | // 'services-only.ferdium-data', | ||
122 | // ]; | ||
123 | |||
124 | // for (const file of files) { | ||
125 | // // eslint-disable-next-line no-await-in-loop | ||
126 | // const user = await UserFactory.create(); | ||
127 | // // eslint-disable-next-line no-await-in-loop | ||
128 | // const response = await client | ||
129 | // .put('/user/transfer') | ||
130 | // .loginAs(user) | ||
131 | // .file('file', `tests/functional/dashboard/import-stubs/${file}`, { | ||
132 | // filename: file, | ||
133 | // }); | ||
134 | |||
135 | // response.assertTextIncludes( | ||
136 | // 'Your account has been imported, you can now login as usual!', | ||
137 | // ); | ||
138 | // // eslint-disable-next-line no-await-in-loop | ||
139 | // await user.refresh(); | ||
140 | |||
141 | // // eslint-disable-next-line no-await-in-loop | ||
142 | // const servicesForUser = await user.related('services').query(); | ||
143 | // assert.equal(servicesForUser.length, 3); | ||
144 | // } | ||
145 | // }); | ||
146 | |||
147 | // test('correctly transfers data from json/ferdi-data and ferdium-data file with workspaces and services', async ({ | ||
148 | // client, | ||
149 | // assert, | ||
150 | // }) => { | ||
151 | // // Repeat for all 3 file extension | ||
152 | // const files = [ | ||
153 | // 'services-workspaces.json', | ||
154 | // 'services-workspaces.ferdi-data', | ||
155 | // 'services-workspaces.ferdium-data', | ||
156 | // ]; | ||
157 | |||
158 | // for (const file of files) { | ||
159 | // // eslint-disable-next-line no-await-in-loop | ||
160 | // const user = await UserFactory.create(); | ||
161 | // // eslint-disable-next-line no-await-in-loop | ||
162 | // const response = await client | ||
163 | // .put('/user/transfer') | ||
164 | // .loginAs(user) | ||
165 | // .file('file', `tests/functional/dashboard/import-stubs/${file}`, { | ||
166 | // filename: file, | ||
167 | // }); | ||
168 | |||
169 | // response.assertTextIncludes( | ||
170 | // 'Your account has been imported, you can now login as usual!', | ||
171 | // ); | ||
172 | // // eslint-disable-next-line no-await-in-loop | ||
173 | // await user.refresh(); | ||
174 | |||
175 | // // eslint-disable-next-line no-await-in-loop | ||
176 | // const servicesForUser = await user.related('services').query(); | ||
177 | // // eslint-disable-next-line no-await-in-loop | ||
178 | // const workspacesForUser = await user.related('workspaces').query(); | ||
179 | // assert.equal(servicesForUser.length, 3); | ||
180 | // assert.equal(workspacesForUser.length, 3); | ||
181 | |||
182 | // const firstServiceUuid = servicesForUser.find( | ||
183 | // s => s.name === 'random-service-1', | ||
184 | // )?.serviceId; | ||
185 | // const secondServiceUuid = servicesForUser.find( | ||
186 | // s => s.name === 'random-service-2', | ||
187 | // )?.serviceId; | ||
188 | // const thirdServiceUUid = servicesForUser.find( | ||
189 | // s => s.name === 'random-service-3', | ||
190 | // )?.serviceId; | ||
191 | |||
192 | // // Assert the first workspace to not have any services | ||
193 | // const firstWorkspace = workspacesForUser.find( | ||
194 | // w => w.name === 'workspace1', | ||
195 | // ); | ||
196 | // if (firstWorkspace?.services) { | ||
197 | // assert.empty(JSON.parse(firstWorkspace.services)); | ||
198 | // } | ||
199 | |||
200 | // const secondWorkspace = workspacesForUser.find( | ||
201 | // w => w.name === 'workspace2', | ||
202 | // ); | ||
203 | // if (secondWorkspace?.services) { | ||
204 | // assert.deepEqual(JSON.parse(secondWorkspace.services), [ | ||
205 | // firstServiceUuid, | ||
206 | // secondServiceUuid, | ||
207 | // ]); | ||
208 | // } | ||
209 | |||
210 | // const thirdWorkspace = workspacesForUser.find( | ||
211 | // w => w.name === 'workspace3', | ||
212 | // ); | ||
213 | // if (thirdWorkspace?.services) { | ||
214 | // assert.deepEqual(JSON.parse(thirdWorkspace.services), [ | ||
215 | // firstServiceUuid, | ||
216 | // secondServiceUuid, | ||
217 | // thirdServiceUUid, | ||
218 | // ]); | ||
219 | // } | ||
220 | // } | ||
221 | // }); | ||
222 | }); | ||