PageRenderTime 51ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/src/components/ui/form/utils/dataURI.test.js

https://bitbucket.org/makeandship/makeandship-js-common
JavaScript | 78 lines | 68 code | 9 blank | 1 comment | 0 complexity | 43d86d16b96f2ad4f6d3736a2c7fe602 MD5 | raw file
Possible License(s): MIT
  1. /* @flow */
  2. import { parseDataURI } from './dataURI';
  3. describe('Form util parseDataURI', function spec() {
  4. it('handle bad input', () => {
  5. expect(parseDataURI()).toBeUndefined();
  6. expect(parseDataURI(null)).toBeUndefined();
  7. expect(parseDataURI('http://www.example.com')).toBeUndefined();
  8. expect(parseDataURI('/path/to/document.pdf')).toBeUndefined();
  9. });
  10. it('parse test data', () => {
  11. const parsed = parseDataURI(
  12. 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20baseProfile%3D%22full%22%20width%3D%22undefined%22%20height%3D%22undefined%22%3E%20%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22grey%22%2F%3E%20%20%3Ctext%20x%3D%220%22%20y%3D%2220%22%20font-size%3D%2220%22%20text-anchor%3D%22start%22%20fill%3D%22white%22%3Eundefinedxundefined%3C%2Ftext%3E%20%3C%2Fsvg%3E'
  13. );
  14. expect(parsed.type).toEqual('image/svg+xml');
  15. expect(parsed.encoding).toEqual('utf-8');
  16. expect(parsed.sizeInBytes).toEqual(411);
  17. expect(parsed.body).toMatchSnapshot();
  18. });
  19. it('parse data with media type', () => {
  20. const parsed = parseDataURI(
  21. 'data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E'
  22. );
  23. expect(parsed.type).toEqual('text/html');
  24. expect(parsed.encoding).toEqual('base64');
  25. expect(parsed.body).toMatchSnapshot();
  26. });
  27. it('parse base64 encoded data with simple media type', () => {
  28. const parsed = parseDataURI(
  29. 'data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D'
  30. );
  31. expect(parsed.type).toEqual('text/plain');
  32. expect(parsed.encoding).toEqual('base64');
  33. expect(parsed.body).toMatchSnapshot();
  34. });
  35. it('parse base64 encoded data with complex media type', () => {
  36. const parsed = parseDataURI(
  37. 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCBmaWxsPSIjMDBCMUZGIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIvPjwvc3ZnPg=='
  38. );
  39. expect(parsed.type).toEqual('image/svg+xml');
  40. expect(parsed.encoding).toEqual('base64');
  41. expect(parsed.body).toMatchSnapshot();
  42. });
  43. it('parse data with media types that contain .', () => {
  44. const parsed = parseDataURI(
  45. 'data:application/vnd.ms-excel;base64,PGh0bWw%2BPC9odG1sPg%3D%3D'
  46. );
  47. expect(parsed.type).toEqual('application/vnd.ms-excel');
  48. expect(parsed.encoding).toEqual('base64');
  49. expect(parsed.body).toMatchSnapshot();
  50. });
  51. it('parse data with complex media type and single attribute', () => {
  52. const parsed = parseDataURI(
  53. 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Crect%20fill%3D%22%2300B1FF%22%20width%3D%22100%22%20height%3D%22100%22%2F%3E%3C%2Fsvg%3E'
  54. );
  55. expect(parsed.type).toEqual('image/svg+xml');
  56. expect(parsed.encoding).toEqual('utf-8');
  57. expect(parsed.body).toMatchSnapshot();
  58. });
  59. it('parse data with media type and multiple attributes', () => {
  60. const parsed = parseDataURI(
  61. 'data:image/png;name=foo.bar;baz=quux;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIBAMAAAA2IaO4AAAAFVBMVEXk5OTn5+ft7e319fX29vb5+fn///++GUmVAAAALUlEQVQIHWNICnYLZnALTgpmMGYIFWYIZTA2ZFAzTTFlSDFVMwVyQhmAwsYMAKDaBy0axX/iAAAAAElFTkSuQmCC'
  62. );
  63. expect(parsed.type).toEqual('image/png');
  64. expect(parsed.name).toEqual('foo.bar');
  65. expect(parsed.baz).toEqual('quux');
  66. expect(parsed.encoding).toEqual('base64');
  67. expect(parsed.body).toMatchSnapshot();
  68. });
  69. });