import RNTest from './react-native-testkit/' import React from 'react' import RNFetchBlob from 'react-native-fetch-blob' import Timer from 'react-timer-mixin' import { StyleSheet, Text, View, ScrollView, CameraRoll, Platform, Dimensions, Image, } from 'react-native'; const fs = RNFetchBlob.fs const Blob = RNFetchBlob.polyfill.Blob window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest window.Blob = Blob window.ProgressEvent = RNFetchBlob.polyfill.ProgressEvent const { Assert, Comparer, Info, prop } = RNTest const describe = RNTest.config({ group : 'XMLHttpRequest', run : true, expand : false, timeout : 20000, }) const { TEST_SERVER_URL, TEST_SERVER_URL_SSL, DROPBOX_TOKEN, styles } = prop() const dirs = RNFetchBlob.fs.dirs let prefix = ((Platform.OS === 'android') ? 'file://' : '') let file = RNTest.prop('image') /** * Test cases are based on W3C github repository. * {@link https://github.com/w3c/web-platform-tests/blob/master/XMLHttpRequest/} */ // describe('unsent state test', (report, done) => { // // let xhr = new XMLHttpRequest() // // try { // xhr.setRequestHeader('x-test', 'test') // } catch(err) { // report( // ) // } // // try { // let xhr = new XMLHttpRequest() // xhr.send(null) // } catch(err) { // report( // ) // } // try { // report( // , // , // , // , // // ) // done() // } catch(err) { // console.log(err.stack) // } // }) // // describe('HTTP error should not throw error event', (report, done) => { // // onError('GET', 200) // onError('GET', 400) // onError('GET', 401) // onError('GET', 404) // onError('GET', 410) // onError('GET', 500) // onError('GET', 699) // // onError('HEAD', 200) // onError('HEAD', 404) // onError('HEAD', 500) // onError('HEAD', 699) // // onError('POST', 200) // onError('POST', 404) // onError('POST', 500) // onError('POST', 699) // // onError('PUT', 200) // onError('PUT', 404) // onError('PUT', 500) // onError('PUT', 699) // // done() // // let count = 0 // function onError(method, code) { // let xhr = new XMLHttpRequest() // xhr.open(method, `${TEST_SERVER_URL}/xhr-code/${code}`) // xhr.onreadystatechange = function() { // count++ // if(this.readyState == XMLHttpRequest.DONE) { // report( // , // // ) // } // } // xhr.onerror = function() { // report( // ) // } // xhr.send() // } // // }) // // describe('request headers records should be cleared by open()', (report, done) => { // let xhr = new XMLHttpRequest() // xhr.open('GET', `${TEST_SERVER_URL}/xhr-header`) // xhr.setRequestHeader('value', '100') // xhr.open('GET', `${TEST_SERVER_URL}/xhr-header`) // xhr.setRequestHeader('value', '200') // xhr.send() // xhr.onreadystatechange = function() { // if(this.readyState == 4) { // report() // done() // } // } // }) // // /** // * {@link https://github.com/w3c/web-platform-tests/blob/master/XMLHttpRequest/setrequestheader-bogus-name.htm} // */ // describe('invalid characters should not exists in header field', (report, done) => { // function try_name(name) { // try { // let client = new XMLHttpRequest() // client.open("GET", `${TEST_SERVER_URL}/public/github.png`) // client.setRequestHeader(name, '123') // } catch(err) { // report( // ) // } // } // function try_byte_string(name) { // try { // let client = new XMLHttpRequest() // client.open("GET", `${TEST_SERVER_URL}/public/github.png`) // client.setRequestHeader(name, '123') // } catch(err) { // report( // ) // } // } // var invalid_headers = ["(", ")", "<", ">", "@", ",", ";", ":", "\\", // "\"", "/", "[", "]", "?", "=", "{", "}", " ", // "\u007f", "", "t\rt", "t\nt", "t: t", "t:t", // "t { // try { // let xhr = new XMLHttpRequest() // xhr.setRequestHeader('foo', 'bar') // } catch(err) { // report( // // {err} // , // ) // done() // } // }) // // describe('upload progress event test', (report, done) => { // let xhr = new XMLHttpRequest() // let time = Date.now() // let msg = `time=${time}` // xhr.upload.onprogress = function(e) { // report( // ) // } // xhr.onreadystatechange = function() { // if(this.readyState == XMLHttpRequest.DONE) { // console.log(xhr) // report( // , // ) // done() // } // } // xhr.open('POST', `${TEST_SERVER_URL}/upload`) // xhr.overrideMimeType('application/x-www-form-urlencoded') // xhr.send(msg) // // }) // // describe('timeout event catchable', (report, done) => { // let xhr = new XMLHttpRequest() // let count = 0 // xhr.timeout = 1 // xhr.ontimeout = function() { // report( // // {count} // , // ) // done() // } // xhr.open('GET', `${TEST_SERVER_URL}/timeout/`) // xhr.send() // // }) describe('upload progress event should not be triggered when body is empty', (report, done) => { let xhr = new XMLHttpRequest() let count = 0 xhr.upload.onloadstart = function() { report( ) } xhr.upload.onprogress = function() { report( ) } xhr.onreadystatechange = function() { if(this.readyState == XMLHttpRequest.DONE) { count++ report( , ) done() } } xhr.open('GET', `${TEST_SERVER_URL}/public/github.png`) xhr.send() })