Açıklama Yok

test-firebase.js 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import RNTest from './react-native-testkit/'
  2. import React from 'react'
  3. import RNFetchBlob from 'react-native-fetch-blob'
  4. import Timer from 'react-timer-mixin'
  5. import firebase from 'firebase'
  6. import {
  7. StyleSheet,
  8. Text,
  9. View,
  10. ScrollView,
  11. CameraRoll,
  12. Platform,
  13. Dimensions,
  14. Image,
  15. } from 'react-native';
  16. const fs = RNFetchBlob.fs
  17. window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
  18. window.Blob = RNFetchBlob.polyfill.Blob
  19. const { Assert, Comparer, Info, prop } = RNTest
  20. const describe = RNTest.config({
  21. group : 'firebase',
  22. run : true,
  23. expand : true,
  24. timeout : 300000000,
  25. })
  26. const { TEST_SERVER_URL, TEST_SERVER_URL_SSL, DROPBOX_TOKEN, styles } = prop()
  27. const dirs = RNFetchBlob.fs.dirs
  28. let prefix = ((Platform.OS === 'android') ? 'file://' : '')
  29. let file = RNTest.prop('image')
  30. // Initialize Firebase
  31. var config = {
  32. apiKey: "AIzaSyCnoNvJu2tYYHe87Sm-FrW7j-G-c0MPWGQ",
  33. authDomain: "rnfb-test-app.firebaseapp.com",
  34. databaseURL: "https://rnfb-test-app.firebaseio.com",
  35. storageBucket: "rnfb-test-app.appspot.com",
  36. };
  37. describe('firebase login', (report, done) => {
  38. firebase.initializeApp(config);
  39. firebase.auth().signInWithEmailAndPassword('xeiyan@gmail.com', 'rnfbtest1024')
  40. .catch((err) => {
  41. console.log('firebase sigin failed', err)
  42. })
  43. firebase.auth().onAuthStateChanged((user) => {
  44. report(<Assert key="login status" uid="100"
  45. expect={true}
  46. actual={user !== null}/>,
  47. <Info key="user content" uid="user data">
  48. <Text>{JSON.stringify(user)}</Text>
  49. </Info>)
  50. done()
  51. })
  52. })
  53. // describe('upload file to firebase', (report, done) => {
  54. //
  55. // let testImage = `firebase-test-${Platform.OS}-${Date.now()}.png`
  56. // RNTest.prop('firebase-image', testImage)
  57. //
  58. // // create Blob from BASE64 data
  59. // Blob.build(RNTest.prop('image'), { type : 'image/png;BASE64'})
  60. // .then((blob) => {
  61. // let storage = firebase.storage().ref('rnfbtest')
  62. // let task = storage
  63. // .child(RNTest.prop('firebase-image'))
  64. // .put(blob, { contentType : 'image/png' })
  65. // .then((snapshot) => {
  66. // console.log(snapshot.metadata)
  67. // report(<Assert key="upload success"
  68. // expect={true}
  69. // actual={true}/>,
  70. // <Info key="uploaded file stat" >
  71. // <Text>{snapshot.totalBytes}</Text>
  72. // <Text>{JSON.stringify(snapshot.metadata)}</Text>
  73. // </Info>)
  74. // done()
  75. // })
  76. // })
  77. // })
  78. //
  79. // describe('download firebase storage item', (report, done) => {
  80. // let storage = firebase.storage().ref('rnfbtest/' + RNTest.prop('firebase-image'))
  81. // storage.getDownloadURL().then((url) => {
  82. // console.log(url)
  83. // report(<Info key="image viewer">
  84. // <Image style={styles.image} source={{uri : url}}/>
  85. // </Info>)
  86. // done()
  87. // })
  88. // })
  89. //
  90. // let tier2FileName = `firebase-test-${Platform.OS}-github2.jpg`
  91. //
  92. // describe('upload using file path', (report, done) => {
  93. // RNFetchBlob
  94. // .config({ fileCache : true, appendExt : 'jpg' })
  95. // .fetch('GET', `${TEST_SERVER_URL}/public/500k-img-dummy.jpg`)
  96. // .then((resp) => {
  97. // report(<Info key="test image">
  98. // <Image style={styles.image} source={{uri : prefix + resp.path()}}/>
  99. // </Info>)
  100. // let blob = new Blob(RNFetchBlob.wrap(resp.path()), { type : 'image/jpg' })
  101. // blob.onCreated(() => {
  102. // firebase.storage().ref('rnfbtest')
  103. // .child(tier2FileName)
  104. // .put(blob, { contentType : 'image/jpg' })
  105. // .then(() => {
  106. // report(<Assert key="upload finished" />)
  107. // done()
  108. // })
  109. // })
  110. // })
  111. // })
  112. //
  113. // let directURL = null
  114. //
  115. // describe('verify uploaded file', (report, done) => {
  116. // firebase.storage().ref('rnfbtest/' + tier2FileName)
  117. // .getDownloadURL()
  118. // .then((url) => {
  119. // directURL = url
  120. // report(
  121. // <Info key="image viewer">
  122. // <Image style={styles.image} source={{uri : url}}/>
  123. // </Info>)
  124. // done()
  125. // })
  126. // })
  127. //
  128. // describe('download to base64', (report, done) => {
  129. // RNFetchBlob.fetch('GET', directURL).then((resp) => {
  130. // report(
  131. // <Info key="image data">
  132. // <Image
  133. // style={styles.image}
  134. // source={{uri : 'data:image/jpg;base64 ,'+ resp.base64()}}/>
  135. // </Info>)
  136. // done()
  137. // })
  138. // })
  139. //
  140. // describe('upload from storage', (report, done) => {
  141. // try {
  142. // let file = fs.dirs.DocumentDir + '/tempimg.png'
  143. // fs.writeFile(file, RNTest.prop('image'), 'base64')
  144. // .then(() => Blob.build(RNFetchBlob.wrap(file), {type : 'image/png'}))
  145. // .then((blob) => {
  146. // let storage = firebase.storage().ref('rnfbtest')
  147. // let task = storage
  148. // .child(`image-from-storage-${Platform.OS}-${Date.now()}.png`)
  149. // .put(blob, { contentType : 'image/png' })
  150. // .then((snapshot) => {
  151. // console.log(snapshot.metadata)
  152. // report(<Assert key="upload success"
  153. // expect={true}
  154. // actual={true}/>,
  155. // <Info key="uploaded file stat" >
  156. // <Text>{snapshot.totalBytes}</Text>
  157. // <Text>{JSON.stringify(snapshot.metadata)}</Text>
  158. // </Info>)
  159. // done()
  160. // })
  161. // })
  162. // }
  163. // catch(err) {
  164. // console.log(err)
  165. // }
  166. // })
  167. describe('upload from CameraRoll', (report, done) => {
  168. let tmp = fs.dirs.DocumentDir + '/tmp'+Date.now()
  169. let blob
  170. CameraRoll.getPhotos({first : 10})
  171. .then((resp) => {
  172. let url = resp.edges[0].node.image.uri
  173. console.log('CameraRoll',url)
  174. return fs.cp(url, tmp)
  175. })
  176. .then(() => {
  177. console.log('cp', tmp)
  178. return Blob.build(RNFetchBlob.wrap(tmp), {type:'image/jpg'})
  179. })
  180. .then((b) => {
  181. blob = b
  182. return firebase.storage()
  183. .ref('rnfbtest').child('camra-roll.jpg')
  184. .put(b, {contentType : 'image/jpg'})
  185. })
  186. .then((snapshot) => {
  187. report(<Assert key="upload sucess" expect={true} actual={true}/>)
  188. blob.close()
  189. done()
  190. })
  191. })