123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import RNTest from './react-native-testkit/'
- import React from 'react'
- import RNFetchBlob from 'react-native-fetch-blob'
- import {
- StyleSheet,
- Text,
- View,
- ScrollView,
- Platform,
- Dimensions,
- Image,
- } from 'react-native';
-
- window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
- window.Blob = RNFetchBlob.polyfill.Blob
- window.fetch = new RNFetchBlob.polyfill.Fetch({
- auto : true,
- binaryContentTypes : ['image/', 'video/', 'audio/']
- }).build()
-
- const fs = RNFetchBlob.fs
- const { Assert, Comparer, Info, prop } = RNTest
- const describe = RNTest.config({
- group : '0.9.2',
- run : true,
- expand : true,
- timeout : 20000,
- })
- const { TEST_SERVER_URL, TEST_SERVER_URL_SSL, FILENAME, DROPBOX_TOKEN, styles } = prop()
- const dirs = RNFetchBlob.fs.dirs
-
- let prefix = ((Platform.OS === 'android') ? 'file://' : '')
-
- describe('content-length header test', (report, done) => {
- RNFetchBlob.fetch('POST', `${TEST_SERVER_URL}/content-length`, {
- 'Content-Type' : 'text/plain',
- 'Content-Length' : '5'
- }, 'hello')
- .then((res) => {
- report(
- <Info key="response data">
- <Text>{res.text()}</Text>
- </Info>)
- done()
- })
- })
-
- describe('slice test', (report, done) => {
- let str = "PASSSTRING"
- let tmp = fs.dirs.DocumentDir + '/slice-tmp-'
- let testData = [
- {start: 4, contents: "STRING"},
- {start: 12, contents: ""},
- {start: 0, end: 4, contents: "PASS"},
- {start: 0, end: 12, contents: "PASSSTRING"},
- {start: 7, end: 4, contents: ""},
- {start: -6, contents: "STRING"},
- {start: -12, contents: "PASSSTRING"},
- {start: 0, end: -6, contents: "PASS"},
- {start: 0, end: -12, contents: ""},
- ]
- fs.writeFile(tmp, str, 'utf8')
- .then(() => {
- let promises = []
- for(let t in testData) {
- let p = fs.slice(tmp, tmp + t, testData[t].start, testData[t].end)
- .then(function(num) {
- console.log('slice finished', num)
- return fs.readFile(tmp + num, 'utf8')
- .then((data) => {
- report(<Assert key={`assertion-${num}`} expect={testData[num].contents} actual={data}/>)
- return Promise.resolve()
- })
- }.bind(this, t))
- promises.push(p)
- }
- Promise.all(promises).then((res) => {
- done()
- })
-
- })
- })
-
- describe('Upload multipart/form-data', (report, done) => {
- let image = RNTest.prop('image')
- RNFetchBlob.fetch('POST', `${TEST_SERVER_URL}/upload-form`, {
- Authorization : "Bearer fsXcpmKPrHgAAAAAAAAAEGxFXwhejXM_E8fznZoXPhHbhbNhA-Lytbe6etp1Jznz",
- 'Content-Type' : 'multipart/form-data',
- }, [
- { name : 'test-img', filename : 'test-img.png', data: image},
- { name : 'test-text', filename : 'test-text.txt', data: RNFetchBlob.base64.encode('hello.txt')},
- { name : 'field1', data : 'hello !!'},
- { name : 'field2', data : 'hello2 !!'}
- ])
- .then((resp) => {
- console.log(resp.json())
- resp = resp.json()
-
- report(
- <Assert key="check posted form data #1" expect="hello !!" actual={resp.fields.field1}/>,
- <Assert key="check posted form data #2" expect="hello2 !!" actual={resp.fields.field2}/>,
- )
- done()
- })
- })
-
- describe('app should not crash when sending formdata without data field', (report, done) => {
-
- RNFetchBlob.fetch('POST', `${TEST_SERVER_URL}/upload-form`, {
- Authorization : "Bearer fsXcpmKPrHgAAAAAAAAAEGxFXwhejXM_E8fznZoXPhHbhbNhA-Lytbe6etp1Jznz",
- 'Content-Type' : 'multipart/form-data',
- }, [
- { name : 'empty-file', filename : 'test-img.png'},
- { name : 'empty-data'},
- { name : 'field2', data : 'hello2 !!'}
- ])
- .then((resp) => {
- console.log(resp.json())
- resp = resp.json()
-
- report(
- <Assert key="check posted form data #1" expect={undefined} actual={resp.fields['empty-file']}/>,
- <Assert key="check posted form data #2" expect={undefined} actual={resp.fields['empty-data']}/>,
- <Assert key="check posted form data #3" expect="hello2 !!" actual={resp.fields.field2}/>,
- )
- done()
- })
- })
|