mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
import fileUpload from '.'
|
|
|
|
describe('fileUpload', () => {
|
|
let params
|
|
let uploadCallback
|
|
|
|
beforeEach(() => {
|
|
params = {
|
|
uploadAttribute: {
|
|
filename: 'avatar.jpg',
|
|
mimetype: 'image/jpeg',
|
|
encoding: '7bit',
|
|
createReadStream: jest.fn(),
|
|
},
|
|
}
|
|
uploadCallback = jest.fn()
|
|
})
|
|
|
|
it('calls uploadCallback', async () => {
|
|
await fileUpload(params, { file: 'uploadAttribute', url: 'attribute' }, uploadCallback)
|
|
expect(uploadCallback).toHaveBeenCalled()
|
|
})
|
|
|
|
describe('file name', () => {
|
|
it('saves the upload url in params[url]', async () => {
|
|
await fileUpload(params, { file: 'uploadAttribute', url: 'attribute' }, uploadCallback)
|
|
expect(params.attribute).toMatch(/^\/uploads\/\d+-avatar$/)
|
|
})
|
|
|
|
it('uses the name without file ending', async () => {
|
|
params.uploadAttribute.filename = 'somePng.png'
|
|
await fileUpload(params, { file: 'uploadAttribute', url: 'attribute' }, uploadCallback)
|
|
expect(params.attribute).toMatch(/^\/uploads\/\d+-somePng/)
|
|
})
|
|
|
|
it('creates a url safe name', async () => {
|
|
params.uploadAttribute.filename =
|
|
'/path/to/awkward?/ file-location/?foo- bar-avatar.jpg?foo- bar'
|
|
await fileUpload(params, { file: 'uploadAttribute', url: 'attribute' }, uploadCallback)
|
|
expect(params.attribute).toMatch(/^\/uploads\/\d+-foo-bar-avatar$/)
|
|
})
|
|
|
|
describe('in case of duplicates', () => {
|
|
it('creates unique names to avoid overwriting existing files', async () => {
|
|
const { attribute: first } = await fileUpload(
|
|
{
|
|
...params,
|
|
},
|
|
{ file: 'uploadAttribute', url: 'attribute' },
|
|
uploadCallback,
|
|
)
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 1000))
|
|
const { attribute: second } = await fileUpload(
|
|
{
|
|
...params,
|
|
},
|
|
{ file: 'uploadAttribute', url: 'attribute' },
|
|
uploadCallback,
|
|
)
|
|
expect(first).not.toEqual(second)
|
|
})
|
|
})
|
|
})
|
|
})
|