url.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* global jest:false, test:false, expect:false, describe:false */
  2. jest.mock('tus-js-client')
  3. jest.mock('../../src/server/helpers/request', () => {
  4. return {
  5. getURLMeta: () => {
  6. return Promise.resolve({ size: 7580, type: 'image/jpg' })
  7. },
  8. }
  9. })
  10. const { getServer } = require('../mockserver')
  11. const mockServer = getServer()
  12. const request = require('supertest')
  13. const invalids = [
  14. // no url at all or unsupported protocol
  15. null, '', 'ftp://url.myendpoint.com/files',
  16. ]
  17. describe('url meta', () => {
  18. test('return a url\'s meta data', () => {
  19. return request(mockServer)
  20. .post('/url/meta')
  21. .set('Content-Type', 'application/json')
  22. .send({
  23. url: 'http://url.myendpoint.com/files',
  24. })
  25. .expect(200)
  26. .then((res) => {
  27. expect(res.body.size).toBe(7580)
  28. expect(res.body.type).toBe('image/jpg')
  29. })
  30. })
  31. test.each(invalids)('return 400 for invalid url', (urlCase) => {
  32. return request(mockServer)
  33. .post('/url/meta')
  34. .set('Content-Type', 'application/json')
  35. .send({
  36. url: urlCase,
  37. })
  38. .expect(400)
  39. .then((res) => expect(res.body.error).toBe('Invalid request body'))
  40. })
  41. })
  42. describe('url get', () => {
  43. test('url download gets instanitated', () => {
  44. return request(mockServer)
  45. .post('/url/get')
  46. .set('Content-Type', 'application/json')
  47. .send({
  48. url: 'http://url.myendpoint.com/files',
  49. endpoint: 'http://tusd.tusdemo.net/files',
  50. protocol: 'tus',
  51. })
  52. .expect(200)
  53. .then((res) => expect(res.body.token).toBeTruthy())
  54. })
  55. test.each(invalids)('downloads are not instantiated for invalid urls', (urlCase) => {
  56. return request(mockServer)
  57. .post('/url/get')
  58. .set('Content-Type', 'application/json')
  59. .send({
  60. url: urlCase,
  61. endpoint: 'http://tusd.tusdemo.net/files',
  62. protocol: 'tus',
  63. })
  64. .expect(400)
  65. .then((res) => expect(res.body.error).toBe('Invalid request body'))
  66. })
  67. })