| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const fs = require('fs'); | 
					
						
							| 
									
										
										
										
											2020-10-27 11:27:17 +01:00
										 |  |  | const path = require('path'); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-29 11:11:46 +02:00
										 |  |  | const { createStrapiInstance } = require('../../../../test/helpers/strapi'); | 
					
						
							|  |  |  | const { createAuthRequest } = require('../../../../test/helpers/request'); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  | let strapi; | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | let rq; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-03 12:17:40 +02:00
										 |  |  | const data = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | describe('Upload plugin end to end tests', () => { | 
					
						
							|  |  |  |   beforeAll(async () => { | 
					
						
							| 
									
										
										
										
											2020-11-30 20:20:36 +01:00
										 |  |  |     strapi = await createStrapiInstance(); | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     rq = await createAuthRequest({ strapi }); | 
					
						
							| 
									
										
										
										
											2021-03-26 20:15:38 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |   afterAll(async () => { | 
					
						
							|  |  |  |     await strapi.destroy(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |   test('Upload a single file', async () => { | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     const formData = { | 
					
						
							|  |  |  |       operations: JSON.stringify({ | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation uploadFiles($file: Upload!) { | 
					
						
							|  |  |  |             upload(file: $file) { | 
					
						
							|  |  |  |               id | 
					
						
							|  |  |  |               name | 
					
						
							|  |  |  |               mime | 
					
						
							|  |  |  |               url | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           file: null, | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |       }), | 
					
						
							|  |  |  |       map: JSON.stringify({ | 
					
						
							|  |  |  |         nFile1: ['variables.file'], | 
					
						
							|  |  |  |       }), | 
					
						
							|  |  |  |       nFile1: fs.createReadStream(path.join(__dirname, '/rec.jpg')), | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     const res = await rq({ method: 'POST', url: '/graphql', formData }); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         upload: { | 
					
						
							|  |  |  |           id: expect.anything(), | 
					
						
							| 
									
										
										
										
											2020-06-25 11:13:42 +03:00
										 |  |  |           name: 'rec.jpg', | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-09-03 12:17:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     data.file = res.body.data.upload; | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('Upload multiple files', async () => { | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |     const formData = { | 
					
						
							|  |  |  |       operations: JSON.stringify({ | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation uploadFiles($files: [Upload]!) { | 
					
						
							|  |  |  |             multipleUpload(files: $files) { | 
					
						
							|  |  |  |               id | 
					
						
							|  |  |  |               name | 
					
						
							|  |  |  |               mime | 
					
						
							|  |  |  |               url | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           files: [null, null], | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2020-11-17 15:38:41 +01:00
										 |  |  |       }), | 
					
						
							|  |  |  |       map: JSON.stringify({ | 
					
						
							|  |  |  |         nFile0: ['variables.files.0'], | 
					
						
							|  |  |  |         nFile1: ['variables.files.1'], | 
					
						
							|  |  |  |       }), | 
					
						
							|  |  |  |       nFile0: fs.createReadStream(path.join(__dirname, '/rec.jpg')), | 
					
						
							|  |  |  |       nFile1: fs.createReadStream(path.join(__dirname, '/rec.jpg')), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ method: 'POST', url: '/graphql', formData }); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toEqual({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         multipleUpload: expect.arrayContaining([ | 
					
						
							|  |  |  |           expect.objectContaining({ | 
					
						
							|  |  |  |             id: expect.anything(), | 
					
						
							| 
									
										
										
										
											2020-06-25 11:13:42 +03:00
										 |  |  |             name: 'rec.jpg', | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  |           }), | 
					
						
							|  |  |  |         ]), | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2020-09-03 12:17:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   test('Update file information', async () => { | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: '/graphql', | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body: { | 
					
						
							|  |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation updateFileInfo($id: ID!, $info: FileInfoInput!) { | 
					
						
							|  |  |  |             updateFileInfo(id: $id, info: $info) { | 
					
						
							|  |  |  |               id | 
					
						
							|  |  |  |               name | 
					
						
							|  |  |  |               alternativeText | 
					
						
							|  |  |  |               caption | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           id: data.file.id, | 
					
						
							|  |  |  |           info: { | 
					
						
							|  |  |  |             name: 'test name', | 
					
						
							|  |  |  |             alternativeText: 'alternative text test', | 
					
						
							|  |  |  |             caption: 'caption test', | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         updateFileInfo: { | 
					
						
							|  |  |  |           id: data.file.id, | 
					
						
							|  |  |  |           name: 'test name', | 
					
						
							|  |  |  |           alternativeText: 'alternative text test', | 
					
						
							|  |  |  |           caption: 'caption test', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2020-10-05 11:34:15 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   test('Delete a file', async () => { | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: '/graphql', | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body: { | 
					
						
							|  |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation removeFile($id: ID!) { | 
					
						
							|  |  |  |             deleteFile(input: { where: { id: $id } }) { | 
					
						
							|  |  |  |               file { | 
					
						
							|  |  |  |                 id | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           id: data.file.id, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         deleteFile: { | 
					
						
							|  |  |  |           file: { | 
					
						
							|  |  |  |             id: data.file.id, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('Delete a file that dont exist', async () => { | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       url: '/graphql', | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       body: { | 
					
						
							|  |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation removeFile($id: ID!) { | 
					
						
							|  |  |  |             deleteFile(input: { where: { id: $id } }) { | 
					
						
							|  |  |  |               file { | 
					
						
							|  |  |  |                 id | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           id: '404', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         deleteFile: null, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2021-01-21 23:18:45 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |   test('Upload a single file with info', async () => { | 
					
						
							|  |  |  |     const formData = { | 
					
						
							|  |  |  |       operations: JSON.stringify({ | 
					
						
							|  |  |  |         query: /* GraphQL */ `
 | 
					
						
							|  |  |  |           mutation uploadFilesWithInfo($file: Upload!, $info: FileInfoInput) { | 
					
						
							|  |  |  |             upload(file: $file, info: $info) { | 
					
						
							|  |  |  |               id | 
					
						
							|  |  |  |               name | 
					
						
							|  |  |  |               alternativeText | 
					
						
							|  |  |  |               caption | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         `,
 | 
					
						
							|  |  |  |         variables: { | 
					
						
							|  |  |  |           file: null, | 
					
						
							|  |  |  |           info: { | 
					
						
							|  |  |  |             alternativeText: 'alternative text test', | 
					
						
							|  |  |  |             caption: 'caption test', | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }), | 
					
						
							|  |  |  |       map: JSON.stringify({ | 
					
						
							|  |  |  |         nFile1: ['variables.file'], | 
					
						
							|  |  |  |       }), | 
					
						
							|  |  |  |       nFile1: fs.createReadStream(path.join(__dirname, '/rec.jpg')), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const res = await rq({ method: 'POST', url: '/graphql', formData }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |     expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |       data: { | 
					
						
							|  |  |  |         upload: { | 
					
						
							|  |  |  |           id: expect.anything(), | 
					
						
							|  |  |  |           name: 'rec.jpg', | 
					
						
							|  |  |  |           alternativeText: 'alternative text test', | 
					
						
							|  |  |  |           caption: 'caption test', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2019-09-18 12:07:59 +02:00
										 |  |  | }); |