瀏覽代碼

Change test case #70

Ben Hsieh 8 年之前
父節點
當前提交
0fcdf3c2c4
共有 1 個文件被更改,包括 154 次插入156 次删除
  1. 154
    156
      test/test-fetch.js

+ 154
- 156
test/test-fetch.js 查看文件

@@ -32,161 +32,160 @@ const dirs = RNFetchBlob.fs.dirs
32 32
 
33 33
 let prefix = ((Platform.OS === 'android') ? 'file://' : '')
34 34
 
35
-// describe('GET request test : unicode text -> any', (report, done) => {
36
-//
37
-//   function get(fn1, fn2) {
38
-//     return fetch(`${TEST_SERVER_URL}/unicode`, { method : 'GET'})
39
-//     .then((res) => fn1(res))
40
-//     .then((data) => fn2(data))
41
-//   }
42
-//
43
-//   let promises =
44
-//   [
45
-//     get((res) => res.json(), (json) => {
46
-//       report(<Assert key="json data correct" expect={'你好!'} actual={json.data}/>)
47
-//     }),
48
-//     get((res) => res.text(), (text) => {
49
-//       report(<Assert key="text data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
50
-//     }),
51
-//     get((res) => res.blob(), (blob) => {
52
-//       return blob.readBlob('utf8').then((text) => {
53
-//         report(<Assert key="blob data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
54
-//       })
55
-//     }),
56
-//     // get((res) => res.arrayBuffer(), (text) => {
57
-//     //   report(<Assert key="text data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
58
-//     // })
59
-//   ]
60
-//
61
-//   Promise.all(promises).then(() => {
62
-//     done()
63
-//   })
64
-//
65
-// })
66
-//
67
-// describe('GET request test : path -> any', (report, done) => {
68
-//
69
-//   function get(fn1, fn2, fn3) {
70
-//     fetch(`${TEST_SERVER_URL}/public/github.png`, { method : 'GET'})
71
-//       .then((res) => fn1(res))
72
-//       .then((data) => fn2(data))
73
-//       .catch((err) => fn3(err))
74
-//   }
75
-//   let contentLength = 0
76
-//   let isIOS = Platform.OS === 'ios'
77
-//   let promises = [
78
-//     // FIXME: IOS only
79
-//     // https://github.com/facebook/react-native/issues/9178
80
-//     get((res) => {
81
-//       if(isIOS)
82
-//         return res.json()
83
-//       return Promise.resolve()
84
-//     }, (data) => {
85
-//       report(<Assert key="should not convert blob to JSON (IOS only)" expect={true} actual={false} />)
86
-//     }, (err) => {
87
-//       report(<Assert key="should not convert blob to JSON (IOS only)" expect={true} actual={true} />)
88
-//     }),
89
-//     // FIXME: IOS only
90
-//     // https://github.com/facebook/react-native/issues/9178
91
-//     get((res) => {
92
-//       contentLength = res.headers['Content-Length']
93
-//       if(isIOS)
94
-//         return res.text()
95
-//       return Promise.resolve()
96
-//
97
-//     }, (data) => {
98
-//       try {
99
-//         report(<Assert key="content length should correct (IOS only)" expect={Math.floor(contentLength)} actual={data ? data.length : 0} />)
100
-//       } catch(e){}
101
-//     }, (err) => {
102
-//       console.warn(err, err.stack)
103
-//     }),
104
-//     get((res) => {
105
-//       console.log('##',res.headers['Content-Length'], res)
106
-//       contentLength = res.headers['Content-Length']
107
-//       return res.blob()
108
-//     }, (blob) => {
109
-//       return fs.stat(blob._ref).then((stat) => {
110
-//         report(<Assert key="stored file size correct" expect={contentLength} actual={stat.size} />)
111
-//         return blob.readBlob('base64')
112
-//       })
113
-//       .then((b64) => {
114
-//         report(<Info key="stored image">
115
-//           <Image style={styles.image} source={{uri : 'data:image/png;BASE64 ,' + b64}}/>
116
-//         </Info>)
117
-//       })
118
-//
119
-//     }, (err) => {
120
-//       console.warn(err, err.stack)
121
-//     })
122
-//   ]
123
-//   Promise.all(promises).then( () => done() )
124
-//
125
-// })
126
-//
127
-// describe('POST different kinds of body', (report, done) => {
128
-//
129
-//   let image = RNTest.prop('image')
130
-//   let tmpPath = dirs.DocumentDir + '/tmp-' + Date.now()
131
-//
132
-//   function upload(desc, pBody) {
133
-//     let name = `fetch-replacement-${Platform.OS}-${Date.now()}-${Math.random()}.png`
134
-//     return pBody.then((body) =>
135
-//       fetch('https://content.dropboxapi.com/2/files/upload', {
136
-//         method : 'post',
137
-//         headers : {
138
-//           Authorization : `Bearer ${DROPBOX_TOKEN}`,
139
-//           'Dropbox-API-Arg': '{\"path\": \"/rn-upload/'+name+'\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}',
140
-//           'Content-Type' : 'application/octet-stream'
141
-//         },
142
-//         body})
143
-//     )
144
-//     .then((res) => {
145
-//       return res.json()
146
-//     })
147
-//     .then((info) => {
148
-//       report(<Assert key={desc} expect={name} actual={info.name}/>)
149
-//     })
150
-//   }
151
-//
152
-//   fetch(`${TEST_SERVER_URL}/public/github2.jpg`)
153
-//     .then((res) => res.blob())
154
-//     .then((b) => b.readBlob('base64'))
155
-//     .then((image) => {
156
-//       let tests = [
157
-//         upload('upload base64 encoded body', Promise.resolve(image)),
158
-//         upload('upload Blob body', Blob.build(image, 'image/png;BASE64')),
159
-//         upload('upload file path body', fs.writeFile(tmpPath, image, 'base64').then(() => {
160
-//           Promise.resolve(RNFetchBlob.wrap(tmpPath))
161
-//         }))
162
-//       ]
163
-//       Promise.all(tests).then(() => done())
164
-//     })
165
-//
166
-// })
167
-//
168
-// describe('Request header correctness', (report, done) => {
169
-//
170
-//   let expect = {
171
-//     'hello' : 'world',
172
-//     'Content-Type' : 'application/json',
173
-//     'foo' : encodeURIComponent('福' + Date.now())
174
-//   }
175
-//
176
-//   fetch(`${TEST_SERVER_URL}/xhr-header`, {
177
-//     method : 'GET',
178
-//     headers : expect
179
-//   })
180
-//   .then((res) => res.json())
181
-//   .then((actual) => {
182
-//     report(<Info key={JSON.stringify(actual)}/>)
183
-//     report(<Assert key="header field test #1" expect={expect.hello} actual={actual.hello}/>)
184
-//     report(<Assert key="header field test #2" expect={expect['content-type']} actual={actual['content-type']}/>)
185
-//     report(<Assert key="header field test #3" expect={expect.foo} actual={actual.foo}/>)
186
-//     done()
187
-//   })
188
-//
189
-// })
35
+describe('GET request test : unicode text -> any', (report, done) => {
36
+
37
+  function get(fn1, fn2) {
38
+    return fetch(`${TEST_SERVER_URL}/unicode`, { method : 'GET'})
39
+    .then((res) => fn1(res))
40
+    .then((data) => fn2(data))
41
+  }
42
+
43
+  let promises =
44
+  [
45
+    get((res) => res.json(), (json) => {
46
+      report(<Assert key="json data correct" expect={'你好!'} actual={json.data}/>)
47
+    }),
48
+    get((res) => res.text(), (text) => {
49
+      report(<Assert key="text data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
50
+    }),
51
+    get((res) => res.blob(), (blob) => {
52
+      return blob.readBlob('utf8').then((text) => {
53
+        report(<Assert key="blob data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
54
+      })
55
+    }),
56
+    // get((res) => res.arrayBuffer(), (text) => {
57
+    //   report(<Assert key="text data correct" expect={'你好!'} actual={JSON.parse(text).data}/>)
58
+    // })
59
+  ]
60
+
61
+  Promise.all(promises).then(() => {
62
+    done()
63
+  })
64
+
65
+})
66
+
67
+describe('GET request test : path -> any', (report, done) => {
68
+
69
+  function get(fn1, fn2, fn3) {
70
+    fetch(`${TEST_SERVER_URL}/public/github.png`, { method : 'GET'})
71
+      .then((res) => fn1(res))
72
+      .then((data) => fn2(data))
73
+      .catch((err) => fn3(err))
74
+  }
75
+  let contentLength = 0
76
+  let isIOS = Platform.OS === 'ios'
77
+  let promises = [
78
+    // FIXME: IOS only
79
+    // https://github.com/facebook/react-native/issues/9178
80
+    get((res) => {
81
+      if(isIOS)
82
+        return res.json()
83
+      return Promise.resolve()
84
+    }, (data) => {
85
+      report(<Assert key="should not convert blob to JSON (IOS only)" expect={true} actual={false} />)
86
+    }, (err) => {
87
+      report(<Assert key="should not convert blob to JSON (IOS only)" expect={true} actual={true} />)
88
+    }),
89
+    // FIXME: IOS only
90
+    // https://github.com/facebook/react-native/issues/9178
91
+    get((res) => {
92
+      contentLength = res.headers['Content-Length']
93
+      if(isIOS)
94
+        return res.text()
95
+      return Promise.resolve()
96
+
97
+    }, (data) => {
98
+      try {
99
+        report(<Assert key="content length should correct (IOS only)" expect={Math.floor(contentLength)} actual={data ? data.length : 0} />)
100
+      } catch(e){}
101
+    }, (err) => {
102
+      console.warn(err, err.stack)
103
+    }),
104
+    get((res) => {
105
+      contentLength = res.headers['Content-Length']
106
+      return res.blob()
107
+    }, (blob) => {
108
+      return fs.stat(blob._ref).then((stat) => {
109
+        report(<Assert key="stored file size correct" expect={contentLength} actual={stat.size} />)
110
+        return blob.readBlob('base64')
111
+      })
112
+      .then((b64) => {
113
+        report(<Info key="stored image">
114
+          <Image style={styles.image} source={{uri : 'data:image/png;BASE64 ,' + b64}}/>
115
+        </Info>)
116
+      })
117
+
118
+    }, (err) => {
119
+      console.warn(err, err.stack)
120
+    })
121
+  ]
122
+  Promise.all(promises).then( () => done() )
123
+
124
+})
125
+
126
+describe('POST different kinds of body', (report, done) => {
127
+
128
+  let image = RNTest.prop('image')
129
+  let tmpPath = dirs.DocumentDir + '/tmp-' + Date.now()
130
+
131
+  function upload(desc, pBody) {
132
+    let name = `fetch-replacement-${Platform.OS}-${Date.now()}-${Math.random()}.png`
133
+    return pBody.then((body) =>
134
+      fetch('https://content.dropboxapi.com/2/files/upload', {
135
+        method : 'post',
136
+        headers : {
137
+          Authorization : `Bearer ${DROPBOX_TOKEN}`,
138
+          'Dropbox-API-Arg': '{\"path\": \"/rn-upload/'+name+'\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}',
139
+          'Content-Type' : 'application/octet-stream'
140
+        },
141
+        body})
142
+    )
143
+    .then((res) => {
144
+      return res.json()
145
+    })
146
+    .then((info) => {
147
+      report(<Assert key={desc} expect={name} actual={info.name}/>)
148
+    })
149
+  }
150
+
151
+  fetch(`${TEST_SERVER_URL}/public/github2.jpg`)
152
+    .then((res) => res.blob())
153
+    .then((b) => b.readBlob('base64'))
154
+    .then((image) => {
155
+      let tests = [
156
+        upload('upload base64 encoded body', Promise.resolve(image)),
157
+        upload('upload Blob body', Blob.build(image, 'image/png;BASE64')),
158
+        upload('upload file path body', fs.writeFile(tmpPath, image, 'base64').then(() => {
159
+          Promise.resolve(RNFetchBlob.wrap(tmpPath))
160
+        }))
161
+      ]
162
+      Promise.all(tests).then(() => done())
163
+    })
164
+
165
+})
166
+
167
+describe('Request header correctness', (report, done) => {
168
+
169
+  let expect = {
170
+    'hello' : 'world',
171
+    'Content-Type' : 'application/json',
172
+    'foo' : encodeURIComponent('福' + Date.now())
173
+  }
174
+
175
+  fetch(`${TEST_SERVER_URL}/xhr-header`, {
176
+    method : 'GET',
177
+    headers : expect
178
+  })
179
+  .then((res) => res.json())
180
+  .then((actual) => {
181
+    report(<Info key={JSON.stringify(actual)}/>)
182
+    report(<Assert key="header field test #1" expect={expect.hello} actual={actual.hello}/>)
183
+    report(<Assert key="header field test #2" expect={expect['content-type']} actual={actual['content-type']}/>)
184
+    report(<Assert key="header field test #3" expect={expect.foo} actual={actual.foo}/>)
185
+    done()
186
+  })
187
+
188
+})
190 189
 
191 190
 describe('Upload form data ', (report, done) => {
192 191
 
@@ -214,5 +213,4 @@ describe('Upload form data ', (report, done) => {
214 213
     done()
215 214
   })
216 215
 
217
-
218 216
 })