Explorar o código

use base64toBlob in selectFakeFile

Artur Paikin %!s(int64=6) %!d(string=hai) anos
pai
achega
27e3bde603
Modificáronse 2 ficheiros con 34 adicións e 6 borrados
  1. 9 2
      test/endtoend/transloadit/test.js
  2. 25 4
      test/endtoend/utils.js

+ 9 - 2
test/endtoend/transloadit/test.js

@@ -1,5 +1,6 @@
 /* global browser, expect, capabilities, $ */
 const path = require('path')
+const fs = require('fs')
 const { selectFakeFile, supportsChooseFile } = require('../utils')
 
 const testURL = 'http://localhost:4567/transloadit'
@@ -37,10 +38,16 @@ describe('Transloadit file processing', () => {
       browser.execute(unhideTheInput)
       browser.chooseFile(inputPath, path.join(__dirname, '../../resources/image.jpg'))
     } else {
+      const img = path.join(__dirname, '../../resources/image.jpg')
+      browser.execute(
+        selectFakeFile,
+        'uppyTransloadit',
+        path.basename(img), // name
+        `image/jpeg`, // type
+        fs.readFileSync(img, 'base64') // b64
+      )
       browser.execute(selectFakeFile, 'uppyTransloadit')
     }
-    // browser.pause(15000)
-    // $('.uppy-StatusBar-actionBtn--upload').click()
     $(resultPath).waitForExist(15000)
     const text = browser.getText(resultPath)
     expect(text).to.be.equal('ok')

+ 25 - 4
test/endtoend/utils.js

@@ -6,11 +6,32 @@ const { spawn } = require('child_process')
 // and IE10/IE11 do not support new syntax features
 function selectFakeFile (uppyID, name, type, b64) {
   if (!b64) b64 = 'PHN2ZyB2aWV3Qm94PSIwIDAgMTIwIDEyMCI+CiAgPGNpcmNsZSBjeD0iNjAiIGN5PSI2MCIgcj0iNTAiLz4KPC9zdmc+Cg=='
+  if (!type) type = 'image/svg+xml'
+
+  // https://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript
+  function base64toBlob (base64Data, contentType) {
+    contentType = contentType || ''
+    var sliceSize = 1024
+    var byteCharacters = atob(base64Data)
+    var bytesLength = byteCharacters.length
+    var slicesCount = Math.ceil(bytesLength / sliceSize)
+    var byteArrays = new Array(slicesCount)
+
+    for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
+      var begin = sliceIndex * sliceSize
+      var end = Math.min(begin + sliceSize, bytesLength)
+
+      var bytes = new Array(end - begin)
+      for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
+        bytes[i] = byteCharacters[offset].charCodeAt(0)
+      }
+      byteArrays[sliceIndex] = new Uint8Array(bytes)
+    }
+    return new Blob(byteArrays, { type: contentType })
+  }
+
+  var blob = base64toBlob(b64, type)
 
-  var blob = new Blob(
-    ['data:image/svg+xml;base64,' + b64],
-    { type: type || 'image/svg+xml' }
-  )
   window[uppyID].addFile({
     source: 'test',
     name: name || 'test-file',