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