Browse Source

Fix XMLHttpRequest blob response assign statement

Ben Hsieh 7 years ago
parent
commit
27c765c207
5 changed files with 72 additions and 18 deletions
  1. 0
    1
      src/index.js
  2. 1
    1
      src/polyfill/XMLHttpRequest.js
  3. 1
    1
      test-server/server.js
  4. 55
    0
      test/test-0.9.0.js
  5. 15
    15
      test/test-init.js

+ 0
- 1
src/index.js View File

@@ -257,7 +257,6 @@ class FetchBlobResponse {
257 257
             Blob.build(this.data, { type : cType + ';BASE64' }).then(resolve)
258 258
           break
259 259
           case 'path':
260
-            console.log('##', 'reading path')
261 260
             polyfill.Blob.build(wrap(this.data), { type : cType }).then(resolve)
262 261
           break
263 262
           default:

+ 1
- 1
src/polyfill/XMLHttpRequest.js View File

@@ -306,7 +306,7 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
306 306
         case 'blob' :
307 307
           resp.blob().then((b) => {
308 308
             this._responseText = resp.text()
309
-            this.response = b
309
+            this._response = b
310 310
             responseDataReady()
311 311
           })
312 312
         break;

+ 1
- 1
test-server/server.js View File

@@ -138,7 +138,7 @@ app.all('/xhr-code/:code', (req, res) => {
138 138
 
139 139
 app.all('/xhr-header', (req, res) => {
140 140
   console.log(req.headers)
141
-  res.header('Content-Type', 'application/json')
141
+  // res.header('Content-Type', 'application/json')
142 142
   res.send(req.headers)
143 143
 })
144 144
 

+ 55
- 0
test/test-0.9.0.js View File

@@ -32,6 +32,61 @@ const dirs = RNFetchBlob.fs.dirs
32 32
 
33 33
 let prefix = ((Platform.OS === 'android') ? 'file://' : '')
34 34
 
35
+describe('cache control header and range request test', (report, done) => {
36
+
37
+  let image = RNTest.prop('image')
38
+  let part = [
39
+    `${fs.dirs.DocumentDir}/cache-control-test-part1.png`,
40
+    `${fs.dirs.DocumentDir}/cache-control-test-part2.png`,
41
+    `${fs.dirs.DocumentDir}/cache-control-test-part3.png`
42
+  ]
43
+  let tmp = null
44
+
45
+  RNFetchBlob.fetch('POST', 'https://content.dropboxapi.com/2/files/upload', {
46
+    Authorization : `Bearer ${DROPBOX_TOKEN}`,
47
+    'Dropbox-API-Arg': '{\"path\": \"/rn-upload/'+FILENAME+'\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}',
48
+    'Content-Type' : 'application/octet-stream',
49
+  }, image)
50
+  .then((resp) => {
51
+    resp = resp.json()
52
+    report(
53
+      <Assert key="confirm the file has been uploaded" expect={FILENAME} actual={resp.name}/>
54
+    )
55
+    return RNFetchBlob.config({
56
+      path : part[0],
57
+    })
58
+    .fetch('GET', 'https://content.dropboxapi.com/1/files/auto/rn-upload/' + FILENAME, {
59
+      Authorization : `Bearer ${DROPBOX_TOKEN}`,
60
+      'Cache-Control' : 'no-store',
61
+      'Range' : 'bytes=0-23000'
62
+    })
63
+  })
64
+  .then((res) => {
65
+    let size = Math.floor(res.info().headers['Content-Length'])
66
+    report(<Assert key="part2 content length = 23001" expect={23001} actual={size}/>)
67
+    return RNFetchBlob.config({
68
+      path : part[2]
69
+    })
70
+    .fetch('GET', 'https://content.dropboxapi.com/1/files/auto/rn-upload/' + FILENAME, {
71
+      Authorization : `Bearer ${DROPBOX_TOKEN}`,
72
+      'Range' : 'bytes=23001-23975',
73
+      'Cache-Control' : 'no-store'
74
+    })
75
+  })
76
+  .then((res) => {
77
+    let size = Math.floor(res.info().headers['Content-Length'])
78
+    report(<Assert key="part3 content length = 975" expect={974} actual={size}/>)
79
+    return fs.appendFile(part[0], part[2], 'uri')
80
+  })
81
+  .then((written) => {
82
+    return fs.stat(part[0])
83
+  })
84
+  .then((stat) => {
85
+    report(<Assert key="combined file size check" expect="23975" actual={stat.size}/>)
86
+    done()
87
+  })
88
+})
89
+
35 90
 describe('#73 unicode response BASE64 content test', (report, done) => {
36 91
 
37 92
   fetch(`${TEST_SERVER_URL}/unicode`, {

+ 15
- 15
test/test-init.js View File

@@ -18,8 +18,8 @@ const { Assert, Comparer, Info, prop } = RNTest
18 18
 // test environment variables
19 19
 
20 20
 prop('FILENAME', `${Platform.OS}-0.8.0-${Date.now()}.png`)
21
-prop('TEST_SERVER_URL', 'http://192.168.16.70:8123')
22
-prop('TEST_SERVER_URL_SSL', 'https://192.168.16.70:8124')
21
+prop('TEST_SERVER_URL', 'http://192.168.0.11:8123')
22
+prop('TEST_SERVER_URL_SSL', 'https://192.168.0.11:8124')
23 23
 prop('DROPBOX_TOKEN', 'fsXcpmKPrHgAAAAAAAAAoXZhcXYWdgLpQMan6Tb_bzJ237DXhgQSev12hA-gUXt4')
24 24
 prop('styles', {
25 25
   image : {
@@ -59,19 +59,19 @@ describe('GET image from server', (report, done) => {
59 59
 })
60 60
 
61 61
 
62
-require('./test-0.1.x-0.4.x')
63
-require('./test-0.5.1')
64
-require('./test-0.5.2')
65
-require('./test-0.6.0')
66
-require('./test-0.6.2')
62
+// require('./test-0.1.x-0.4.x')
63
+// require('./test-0.5.1')
64
+// require('./test-0.5.2')
65
+// require('./test-0.6.0')
66
+// require('./test-0.6.2')
67 67
 // require('./test-0.6.3')
68
-require('./test-0.7.0')
69
-require('./test-0.8.0')
70
-require('./test-0.9.0')
71
-require('./test-fetch')
72
-require('./test-fs')
68
+// require('./test-0.7.0')
69
+// require('./test-0.8.0')
70
+// require('./test-0.9.0')
71
+// require('./test-fetch')
72
+// require('./test-fs')
73 73
 require('./test-xmlhttp')
74
-require('./test-blob')
75
-require('./test-firebase')
76
-require('./test-android')
74
+// require('./test-blob')
75
+// require('./test-firebase')
76
+// require('./test-android')
77 77
 // require('./benchmark')