@corellium/corellium-cli 1.0.3 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (490) hide show
  1. package/README.md +5 -17
  2. package/docs/OVERVIEW.md +1 -1
  3. package/jenkinsbuild/build.sh +1 -1
  4. package/package.json +3 -3
  5. package/src/TrialAccount.js +76 -0
  6. package/src/commands/Client.js +2 -2
  7. package/src/commands/agent/Agent.js +10 -19
  8. package/src/commands/agent/apps.js +2 -1
  9. package/src/commands/agent/file.js +2 -1
  10. package/src/commands/agent/index.js +1 -0
  11. package/src/commands/agent/ready.js +43 -0
  12. package/src/commands/extensions/delete.js +2 -1
  13. package/src/commands/extensions/list.js +2 -1
  14. package/src/commands/extensions/load.js +2 -1
  15. package/src/commands/extensions/validate.js +2 -1
  16. package/src/commands/firmware/list.js +2 -1
  17. package/src/commands/firmware/load.js +2 -1
  18. package/src/commands/images/create.js +2 -1
  19. package/src/commands/images/delete.js +2 -1
  20. package/src/commands/images/list.js +2 -1
  21. package/src/commands/instances/Instance.js +27 -0
  22. package/src/commands/instances/create.js +11 -4
  23. package/src/commands/instances/delete.js +20 -5
  24. package/src/commands/instances/index.js +2 -1
  25. package/src/commands/instances/list.js +11 -5
  26. package/src/commands/instances/start.js +2 -1
  27. package/src/commands/instances/stop.js +2 -1
  28. package/src/commands/instances/upgrade.js +90 -0
  29. package/src/commands/login.js +14 -2
  30. package/src/commands/logout.js +2 -1
  31. package/src/commands/projects/create.js +2 -1
  32. package/src/commands/projects/delete.js +2 -1
  33. package/src/commands/projects/list.js +2 -1
  34. package/src/commands/signup.js +14 -5
  35. package/src/commands/webplayer/WebPlayer.js +2 -1
  36. package/src/commands/webplayer/create.js +8 -1
  37. package/src/commands/webplayer/destroy.js +2 -1
  38. package/src/commands/webplayer/list.js +19 -17
  39. package/src/commands/webplayer/login.js +2 -1
  40. package/src/error.js +14 -1
  41. package/src/logging.js +1 -1
  42. package/src/profile.js +12 -9
  43. package/src/resumable.js +1314 -0
  44. package/src/table.js +7 -2
  45. package/src/upload.js +64 -2
  46. package/src/utils.js +11 -4
  47. package/test/test.js +89 -0
  48. package/example/WebPlayerSample.js +0 -263
  49. package/node_modules/@corellium/corellium-api/README.md +0 -1210
  50. package/node_modules/@corellium/corellium-api/node_modules/form-data/License +0 -19
  51. package/node_modules/@corellium/corellium-api/node_modules/form-data/README.md.bak +0 -356
  52. package/node_modules/@corellium/corellium-api/node_modules/form-data/Readme.md +0 -356
  53. package/node_modules/@corellium/corellium-api/node_modules/form-data/index.d.ts +0 -62
  54. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/browser.js +0 -2
  55. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/form_data.js +0 -498
  56. package/node_modules/@corellium/corellium-api/node_modules/form-data/lib/populate.js +0 -10
  57. package/node_modules/@corellium/corellium-api/node_modules/form-data/package.json +0 -104
  58. package/node_modules/@corellium/corellium-api/node_modules/uuid/AUTHORS +0 -5
  59. package/node_modules/@corellium/corellium-api/node_modules/uuid/CHANGELOG.md +0 -119
  60. package/node_modules/@corellium/corellium-api/node_modules/uuid/LICENSE.md +0 -21
  61. package/node_modules/@corellium/corellium-api/node_modules/uuid/README.md +0 -276
  62. package/node_modules/@corellium/corellium-api/node_modules/uuid/bin/uuid +0 -65
  63. package/node_modules/@corellium/corellium-api/node_modules/uuid/index.js +0 -8
  64. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/bytesToUuid.js +0 -26
  65. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5-browser.js +0 -216
  66. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/md5.js +0 -25
  67. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng-browser.js +0 -34
  68. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/rng.js +0 -8
  69. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1-browser.js +0 -89
  70. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/sha1.js +0 -25
  71. package/node_modules/@corellium/corellium-api/node_modules/uuid/lib/v35.js +0 -57
  72. package/node_modules/@corellium/corellium-api/node_modules/uuid/package.json +0 -103
  73. package/node_modules/@corellium/corellium-api/node_modules/uuid/v1.js +0 -109
  74. package/node_modules/@corellium/corellium-api/node_modules/uuid/v3.js +0 -4
  75. package/node_modules/@corellium/corellium-api/node_modules/uuid/v4.js +0 -29
  76. package/node_modules/@corellium/corellium-api/node_modules/uuid/v5.js +0 -3
  77. package/node_modules/@corellium/corellium-api/package.json +0 -106
  78. package/node_modules/@corellium/corellium-api/resumable.js +0 -1312
  79. package/node_modules/@corellium/corellium-api/src/agent.js +0 -962
  80. package/node_modules/@corellium/corellium-api/src/corellium.js +0 -444
  81. package/node_modules/@corellium/corellium-api/src/images.js +0 -131
  82. package/node_modules/@corellium/corellium-api/src/input.js +0 -178
  83. package/node_modules/@corellium/corellium-api/src/instance-updater.js +0 -56
  84. package/node_modules/@corellium/corellium-api/src/instance.js +0 -1031
  85. package/node_modules/@corellium/corellium-api/src/netmon.js +0 -308
  86. package/node_modules/@corellium/corellium-api/src/project.js +0 -393
  87. package/node_modules/@corellium/corellium-api/src/role.js +0 -65
  88. package/node_modules/@corellium/corellium-api/src/snapshot.js +0 -77
  89. package/node_modules/@corellium/corellium-api/src/team.js +0 -29
  90. package/node_modules/@corellium/corellium-api/src/user.js +0 -51
  91. package/node_modules/@corellium/corellium-api/src/util/fetch.js +0 -62
  92. package/node_modules/@corellium/corellium-api/src/util/sleep.js +0 -7
  93. package/node_modules/@corellium/corellium-api/test/integration-tests.js +0 -1292
  94. package/node_modules/@corellium/corellium-api/test/root-hook-set-flag-if-test-failed.js +0 -7
  95. package/node_modules/async-limiter/.eslintignore +0 -2
  96. package/node_modules/async-limiter/.nycrc +0 -10
  97. package/node_modules/async-limiter/.travis.yml +0 -9
  98. package/node_modules/async-limiter/LICENSE +0 -8
  99. package/node_modules/async-limiter/index.js +0 -67
  100. package/node_modules/async-limiter/package.json +0 -72
  101. package/node_modules/async-limiter/readme.md +0 -132
  102. package/node_modules/buffer-crc32/LICENSE +0 -19
  103. package/node_modules/buffer-crc32/README.md +0 -47
  104. package/node_modules/buffer-crc32/index.js +0 -111
  105. package/node_modules/buffer-crc32/package.json +0 -72
  106. package/node_modules/cross-fetch/LICENSE +0 -21
  107. package/node_modules/cross-fetch/README.md +0 -169
  108. package/node_modules/cross-fetch/dist/browser-polyfill.js +0 -532
  109. package/node_modules/cross-fetch/dist/browser-ponyfill.js +0 -554
  110. package/node_modules/cross-fetch/dist/cross-fetch.js +0 -2
  111. package/node_modules/cross-fetch/dist/cross-fetch.js.map +0 -1
  112. package/node_modules/cross-fetch/dist/node-polyfill.js +0 -11
  113. package/node_modules/cross-fetch/dist/node-ponyfill.js +0 -22
  114. package/node_modules/cross-fetch/dist/react-native-polyfill.js +0 -12
  115. package/node_modules/cross-fetch/dist/react-native-ponyfill.js +0 -6
  116. package/node_modules/cross-fetch/index.d.ts +0 -14
  117. package/node_modules/cross-fetch/package.json +0 -160
  118. package/node_modules/cross-fetch/polyfill/package.json +0 -8
  119. package/node_modules/duplexify/.travis.yml +0 -6
  120. package/node_modules/duplexify/LICENSE +0 -21
  121. package/node_modules/duplexify/README.md +0 -97
  122. package/node_modules/duplexify/example.js +0 -21
  123. package/node_modules/duplexify/index.js +0 -234
  124. package/node_modules/duplexify/package.json +0 -69
  125. package/node_modules/duplexify/test.js +0 -295
  126. package/node_modules/end-of-stream/LICENSE +0 -21
  127. package/node_modules/end-of-stream/README.md +0 -54
  128. package/node_modules/end-of-stream/index.js +0 -94
  129. package/node_modules/end-of-stream/package.json +0 -69
  130. package/node_modules/fast-stable-stringify/.npmignore +0 -4
  131. package/node_modules/fast-stable-stringify/.travis.yml +0 -10
  132. package/node_modules/fast-stable-stringify/LICENSE +0 -21
  133. package/node_modules/fast-stable-stringify/README.md +0 -81
  134. package/node_modules/fast-stable-stringify/cli/files-to-comparison-results.js +0 -67
  135. package/node_modules/fast-stable-stringify/cli/format-table.js +0 -70
  136. package/node_modules/fast-stable-stringify/cli/index.js +0 -19
  137. package/node_modules/fast-stable-stringify/fixtures/index.js +0 -5
  138. package/node_modules/fast-stable-stringify/fixtures/input-data-types.js +0 -191
  139. package/node_modules/fast-stable-stringify/fixtures/log-result.json +0 -22
  140. package/node_modules/fast-stable-stringify/fixtures/log.txt +0 -24
  141. package/node_modules/fast-stable-stringify/index.js +0 -73
  142. package/node_modules/fast-stable-stringify/karma.conf.js +0 -124
  143. package/node_modules/fast-stable-stringify/karma.conf.travis.js +0 -95
  144. package/node_modules/fast-stable-stringify/package.json +0 -77
  145. package/node_modules/fast-stable-stringify/results/escape-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
  146. package/node_modules/fast-stable-stringify/results/escape-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
  147. package/node_modules/fast-stable-stringify/results/escape-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
  148. package/node_modules/fast-stable-stringify/results/escape-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
  149. package/node_modules/fast-stable-stringify/results/escape-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
  150. package/node_modules/fast-stable-stringify/results/escape-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
  151. package/node_modules/fast-stable-stringify/results/escape-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
  152. package/node_modules/fast-stable-stringify/results/escape-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
  153. package/node_modules/fast-stable-stringify/results/escape-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
  154. package/node_modules/fast-stable-stringify/results/escape-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -57
  155. package/node_modules/fast-stable-stringify/results/escape-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -57
  156. package/node_modules/fast-stable-stringify/results/escape-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -57
  157. package/node_modules/fast-stable-stringify/results/escape-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -57
  158. package/node_modules/fast-stable-stringify/results/escape-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -57
  159. package/node_modules/fast-stable-stringify/results/escape-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -57
  160. package/node_modules/fast-stable-stringify/results/escape-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -57
  161. package/node_modules/fast-stable-stringify/results/escape-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -57
  162. package/node_modules/fast-stable-stringify/results/escape-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -57
  163. package/node_modules/fast-stable-stringify/results/escape.md +0 -20
  164. package/node_modules/fast-stable-stringify/results/itar-long/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  165. package/node_modules/fast-stable-stringify/results/itar-long/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  166. package/node_modules/fast-stable-stringify/results/itar-long/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  167. package/node_modules/fast-stable-stringify/results/itar-long/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  168. package/node_modules/fast-stable-stringify/results/itar-long/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  169. package/node_modules/fast-stable-stringify/results/itar-long/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  170. package/node_modules/fast-stable-stringify/results/itar-long/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  171. package/node_modules/fast-stable-stringify/results/itar-long/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  172. package/node_modules/fast-stable-stringify/results/itar-long/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  173. package/node_modules/fast-stable-stringify/results/itar-short/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  174. package/node_modules/fast-stable-stringify/results/itar-short/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  175. package/node_modules/fast-stable-stringify/results/itar-short/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  176. package/node_modules/fast-stable-stringify/results/itar-short/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  177. package/node_modules/fast-stable-stringify/results/itar-short/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  178. package/node_modules/fast-stable-stringify/results/itar-short/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  179. package/node_modules/fast-stable-stringify/results/itar-short/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  180. package/node_modules/fast-stable-stringify/results/itar-short/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  181. package/node_modules/fast-stable-stringify/results/itar-short/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  182. package/node_modules/fast-stable-stringify/results/itar.md +0 -20
  183. package/node_modules/fast-stable-stringify/results/iter/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -35
  184. package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 39.0.0 (Android 5.1.1).json +0 -35
  185. package/node_modules/fast-stable-stringify/results/iter/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -35
  186. package/node_modules/fast-stable-stringify/results/iter/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -35
  187. package/node_modules/fast-stable-stringify/results/iter/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -35
  188. package/node_modules/fast-stable-stringify/results/iter/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  189. package/node_modules/fast-stable-stringify/results/iter/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  190. package/node_modules/fast-stable-stringify/results/iter/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  191. package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -35
  192. package/node_modules/fast-stable-stringify/results/iter/Mobile Safari 9.0.0 (iOS 9.2.0).json +0 -35
  193. package/node_modules/fast-stable-stringify/results/iter/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -35
  194. package/node_modules/fast-stable-stringify/results/iter/Safari 9.1.2 (Mac OS X 10.11.6).json +0 -35
  195. package/node_modules/fast-stable-stringify/results/iter.md +0 -14
  196. package/node_modules/fast-stable-stringify/results/libs/Chrome 60.0.3112 (Windows 7 0.0.0).json +0 -46
  197. package/node_modules/fast-stable-stringify/results/libs/Chrome Mobile 55.0.2883 (Android 6.0.0).json +0 -46
  198. package/node_modules/fast-stable-stringify/results/libs/Edge 14.14393.0 (Windows 10 0.0.0).json +0 -46
  199. package/node_modules/fast-stable-stringify/results/libs/Firefox 54.0.0 (Windows 7 0.0.0).json +0 -46
  200. package/node_modules/fast-stable-stringify/results/libs/IE 10.0.0 (Windows 7 0.0.0).json +0 -35
  201. package/node_modules/fast-stable-stringify/results/libs/IE 11.0.0 (Windows 7 0.0.0).json +0 -35
  202. package/node_modules/fast-stable-stringify/results/libs/IE 9.0.0 (Windows 7 0.0.0).json +0 -35
  203. package/node_modules/fast-stable-stringify/results/libs/Mobile Safari 10.0.0 (iOS 10.3.0).json +0 -46
  204. package/node_modules/fast-stable-stringify/results/libs/Safari 10.0.1 (Mac OS X 10.12.1).json +0 -46
  205. package/node_modules/fast-stable-stringify/results/libs.md +0 -15
  206. package/node_modules/fast-stable-stringify/test/escape-long.js +0 -147
  207. package/node_modules/fast-stable-stringify/test/escape-short.js +0 -147
  208. package/node_modules/fast-stable-stringify/test/index.js +0 -6
  209. package/node_modules/fast-stable-stringify/test/itar-long.js +0 -52
  210. package/node_modules/fast-stable-stringify/test/itar-short.js +0 -52
  211. package/node_modules/fast-stable-stringify/test/iter.js +0 -84
  212. package/node_modules/fast-stable-stringify/test/libs.js +0 -57
  213. package/node_modules/fast-stable-stringify/test/travis.js +0 -43
  214. package/node_modules/fast-stable-stringify/test/validate.js +0 -24
  215. package/node_modules/fast-stable-stringify/util/eachRecursive.js +0 -9
  216. package/node_modules/fast-stable-stringify/util/get-git-hash-sync.js +0 -21
  217. package/node_modules/fast-stable-stringify/util/get-lib-info.js +0 -22
  218. package/node_modules/fast-stable-stringify/util/object-path.js +0 -47
  219. package/node_modules/fast-stable-stringify/v8-profile/bench.js +0 -8
  220. package/node_modules/fast-stable-stringify/v8-profile/run.sh +0 -2
  221. package/node_modules/fast-stable-stringify/zuul-local.sh +0 -2
  222. package/node_modules/hkdf/.npmignore +0 -2
  223. package/node_modules/hkdf/README.md +0 -23
  224. package/node_modules/hkdf/hkdf.py +0 -171
  225. package/node_modules/hkdf/hkdf.pyc +0 -0
  226. package/node_modules/hkdf/index.js +0 -1
  227. package/node_modules/hkdf/lib/hkdf.js +0 -55
  228. package/node_modules/hkdf/package.json +0 -55
  229. package/node_modules/hkdf/scripts/run_all_tests.sh +0 -19
  230. package/node_modules/hkdf/test/all-test.js +0 -79
  231. package/node_modules/hkdf/test.py +0 -11
  232. package/node_modules/immediate/LICENSE.txt +0 -20
  233. package/node_modules/immediate/README.md +0 -93
  234. package/node_modules/immediate/dist/immediate.js +0 -75
  235. package/node_modules/immediate/dist/immediate.min.js +0 -1
  236. package/node_modules/immediate/lib/browser.js +0 -69
  237. package/node_modules/immediate/lib/index.js +0 -73
  238. package/node_modules/immediate/package.json +0 -86
  239. package/node_modules/isarray/.npmignore +0 -1
  240. package/node_modules/isarray/.travis.yml +0 -4
  241. package/node_modules/isarray/Makefile +0 -6
  242. package/node_modules/isarray/README.md +0 -60
  243. package/node_modules/isarray/component.json +0 -19
  244. package/node_modules/isarray/index.js +0 -5
  245. package/node_modules/isarray/package.json +0 -77
  246. package/node_modules/isarray/test.js +0 -20
  247. package/node_modules/jszip/.codeclimate.yml +0 -16
  248. package/node_modules/jszip/.editorconfig +0 -8
  249. package/node_modules/jszip/.github/workflows/pr.yaml +0 -41
  250. package/node_modules/jszip/.jshintignore +0 -1
  251. package/node_modules/jszip/.jshintrc +0 -21
  252. package/node_modules/jszip/.travis.yml +0 -17
  253. package/node_modules/jszip/CHANGES.md +0 -192
  254. package/node_modules/jszip/LICENSE.markdown +0 -651
  255. package/node_modules/jszip/README.markdown +0 -33
  256. package/node_modules/jszip/dist/jszip.js +0 -11583
  257. package/node_modules/jszip/dist/jszip.min.js +0 -13
  258. package/node_modules/jszip/index.d.ts +0 -335
  259. package/node_modules/jszip/lib/base64.js +0 -106
  260. package/node_modules/jszip/lib/compressedObject.js +0 -74
  261. package/node_modules/jszip/lib/compressions.js +0 -14
  262. package/node_modules/jszip/lib/crc32.js +0 -77
  263. package/node_modules/jszip/lib/defaults.js +0 -11
  264. package/node_modules/jszip/lib/external.js +0 -19
  265. package/node_modules/jszip/lib/flate.js +0 -85
  266. package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -540
  267. package/node_modules/jszip/lib/generate/index.js +0 -57
  268. package/node_modules/jszip/lib/index.js +0 -55
  269. package/node_modules/jszip/lib/license_header.js +0 -11
  270. package/node_modules/jszip/lib/load.js +0 -88
  271. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
  272. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
  273. package/node_modules/jszip/lib/nodejsUtils.js +0 -57
  274. package/node_modules/jszip/lib/object.js +0 -389
  275. package/node_modules/jszip/lib/readable-stream-browser.js +0 -9
  276. package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
  277. package/node_modules/jszip/lib/reader/DataReader.js +0 -116
  278. package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
  279. package/node_modules/jszip/lib/reader/StringReader.js +0 -38
  280. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
  281. package/node_modules/jszip/lib/reader/readerFor.js +0 -28
  282. package/node_modules/jszip/lib/signature.js +0 -7
  283. package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
  284. package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
  285. package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
  286. package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
  287. package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
  288. package/node_modules/jszip/lib/stream/StreamHelper.js +0 -212
  289. package/node_modules/jszip/lib/support.js +0 -38
  290. package/node_modules/jszip/lib/utf8.js +0 -275
  291. package/node_modules/jszip/lib/utils.js +0 -501
  292. package/node_modules/jszip/lib/zipEntries.js +0 -262
  293. package/node_modules/jszip/lib/zipEntry.js +0 -294
  294. package/node_modules/jszip/lib/zipObject.js +0 -133
  295. package/node_modules/jszip/package.json +0 -99
  296. package/node_modules/jszip/tsconfig.json +0 -101
  297. package/node_modules/jszip/vendor/FileSaver.js +0 -247
  298. package/node_modules/lie/README.md +0 -62
  299. package/node_modules/lie/dist/lie.js +0 -350
  300. package/node_modules/lie/dist/lie.min.js +0 -1
  301. package/node_modules/lie/dist/lie.polyfill.js +0 -358
  302. package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
  303. package/node_modules/lie/lib/browser.js +0 -273
  304. package/node_modules/lie/lib/index.js +0 -298
  305. package/node_modules/lie/license.md +0 -7
  306. package/node_modules/lie/lie.d.ts +0 -244
  307. package/node_modules/lie/package.json +0 -98
  308. package/node_modules/lie/polyfill.js +0 -4
  309. package/node_modules/p-finally/index.js +0 -15
  310. package/node_modules/p-finally/license +0 -21
  311. package/node_modules/p-finally/package.json +0 -77
  312. package/node_modules/p-finally/readme.md +0 -47
  313. package/node_modules/p-retry/index.js +0 -52
  314. package/node_modules/p-retry/license +0 -9
  315. package/node_modules/p-retry/package.json +0 -83
  316. package/node_modules/p-retry/readme.md +0 -109
  317. package/node_modules/p-timeout/index.d.ts +0 -72
  318. package/node_modules/p-timeout/index.js +0 -57
  319. package/node_modules/p-timeout/license +0 -9
  320. package/node_modules/p-timeout/package.json +0 -80
  321. package/node_modules/p-timeout/readme.md +0 -87
  322. package/node_modules/pako/CHANGELOG.md +0 -164
  323. package/node_modules/pako/LICENSE +0 -21
  324. package/node_modules/pako/README.md +0 -191
  325. package/node_modules/pako/dist/pako.js +0 -6818
  326. package/node_modules/pako/dist/pako.min.js +0 -1
  327. package/node_modules/pako/dist/pako_deflate.js +0 -3997
  328. package/node_modules/pako/dist/pako_deflate.min.js +0 -1
  329. package/node_modules/pako/dist/pako_inflate.js +0 -3300
  330. package/node_modules/pako/dist/pako_inflate.min.js +0 -1
  331. package/node_modules/pako/index.js +0 -14
  332. package/node_modules/pako/lib/deflate.js +0 -400
  333. package/node_modules/pako/lib/inflate.js +0 -423
  334. package/node_modules/pako/lib/utils/common.js +0 -105
  335. package/node_modules/pako/lib/utils/strings.js +0 -187
  336. package/node_modules/pako/lib/zlib/README +0 -59
  337. package/node_modules/pako/lib/zlib/adler32.js +0 -51
  338. package/node_modules/pako/lib/zlib/constants.js +0 -68
  339. package/node_modules/pako/lib/zlib/crc32.js +0 -59
  340. package/node_modules/pako/lib/zlib/deflate.js +0 -1874
  341. package/node_modules/pako/lib/zlib/gzheader.js +0 -58
  342. package/node_modules/pako/lib/zlib/inffast.js +0 -345
  343. package/node_modules/pako/lib/zlib/inflate.js +0 -1556
  344. package/node_modules/pako/lib/zlib/inftrees.js +0 -343
  345. package/node_modules/pako/lib/zlib/messages.js +0 -32
  346. package/node_modules/pako/lib/zlib/trees.js +0 -1222
  347. package/node_modules/pako/lib/zlib/zstream.js +0 -47
  348. package/node_modules/pako/package.json +0 -94
  349. package/node_modules/process-nextick-args/index.js +0 -45
  350. package/node_modules/process-nextick-args/license.md +0 -19
  351. package/node_modules/process-nextick-args/package.json +0 -53
  352. package/node_modules/process-nextick-args/readme.md +0 -18
  353. package/node_modules/readable-stream/.travis.yml +0 -34
  354. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  355. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  356. package/node_modules/readable-stream/LICENSE +0 -47
  357. package/node_modules/readable-stream/README.md +0 -58
  358. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  359. package/node_modules/readable-stream/duplex-browser.js +0 -1
  360. package/node_modules/readable-stream/duplex.js +0 -1
  361. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  362. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  363. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  364. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  365. package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  366. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  367. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  368. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  369. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  370. package/node_modules/readable-stream/package.json +0 -86
  371. package/node_modules/readable-stream/passthrough.js +0 -1
  372. package/node_modules/readable-stream/readable-browser.js +0 -7
  373. package/node_modules/readable-stream/readable.js +0 -19
  374. package/node_modules/readable-stream/transform.js +0 -1
  375. package/node_modules/readable-stream/writable-browser.js +0 -1
  376. package/node_modules/readable-stream/writable.js +0 -8
  377. package/node_modules/retry/.npmignore +0 -3
  378. package/node_modules/retry/.travis.yml +0 -15
  379. package/node_modules/retry/License +0 -21
  380. package/node_modules/retry/Makefile +0 -18
  381. package/node_modules/retry/README.md +0 -227
  382. package/node_modules/retry/equation.gif +0 -0
  383. package/node_modules/retry/example/dns.js +0 -31
  384. package/node_modules/retry/example/stop.js +0 -40
  385. package/node_modules/retry/index.js +0 -1
  386. package/node_modules/retry/lib/retry.js +0 -100
  387. package/node_modules/retry/lib/retry_operation.js +0 -158
  388. package/node_modules/retry/package.json +0 -67
  389. package/node_modules/retry/test/common.js +0 -10
  390. package/node_modules/retry/test/integration/test-forever.js +0 -24
  391. package/node_modules/retry/test/integration/test-retry-operation.js +0 -258
  392. package/node_modules/retry/test/integration/test-retry-wrap.js +0 -101
  393. package/node_modules/retry/test/integration/test-timeouts.js +0 -69
  394. package/node_modules/setimmediate/LICENSE.txt +0 -20
  395. package/node_modules/setimmediate/package.json +0 -77
  396. package/node_modules/setimmediate/setImmediate.js +0 -186
  397. package/node_modules/split/.npmignore +0 -3
  398. package/node_modules/split/.travis.yml +0 -3
  399. package/node_modules/split/LICENCE +0 -22
  400. package/node_modules/split/examples/pretty.js +0 -26
  401. package/node_modules/split/index.js +0 -63
  402. package/node_modules/split/package.json +0 -65
  403. package/node_modules/split/readme.markdown +0 -72
  404. package/node_modules/split/test/options.asynct.js +0 -46
  405. package/node_modules/split/test/partitioned_unicode.js +0 -34
  406. package/node_modules/split/test/split.asynct.js +0 -137
  407. package/node_modules/split/test/try_catch.asynct.js +0 -51
  408. package/node_modules/stream-shift/.travis.yml +0 -6
  409. package/node_modules/stream-shift/LICENSE +0 -21
  410. package/node_modules/stream-shift/README.md +0 -25
  411. package/node_modules/stream-shift/index.js +0 -20
  412. package/node_modules/stream-shift/package.json +0 -56
  413. package/node_modules/stream-shift/test.js +0 -48
  414. package/node_modules/ultron/LICENSE +0 -22
  415. package/node_modules/ultron/README.md +0 -113
  416. package/node_modules/ultron/index.js +0 -136
  417. package/node_modules/ultron/package.json +0 -71
  418. package/node_modules/websocket-stream/LICENSE +0 -8
  419. package/node_modules/websocket-stream/collaborators.md +0 -11
  420. package/node_modules/websocket-stream/echo-server.js +0 -51
  421. package/node_modules/websocket-stream/index.d.ts +0 -27
  422. package/node_modules/websocket-stream/index.js +0 -6
  423. package/node_modules/websocket-stream/package.json +0 -82
  424. package/node_modules/websocket-stream/readme.md +0 -148
  425. package/node_modules/websocket-stream/server.js +0 -29
  426. package/node_modules/websocket-stream/stream.js +0 -189
  427. package/node_modules/websocket-stream/test-client.js +0 -74
  428. package/node_modules/websocket-stream/test-server.js +0 -56
  429. package/node_modules/websocket-stream/test.js +0 -338
  430. package/node_modules/websocket-stream/ts-tests.ts +0 -69
  431. package/node_modules/websocket-stream/ws-fallback.js +0 -12
  432. package/node_modules/ws/LICENSE +0 -21
  433. package/node_modules/ws/README.md +0 -341
  434. package/node_modules/ws/index.js +0 -15
  435. package/node_modules/ws/lib/.DS_Store +0 -0
  436. package/node_modules/ws/lib/BufferUtil.js +0 -71
  437. package/node_modules/ws/lib/Constants.js +0 -10
  438. package/node_modules/ws/lib/ErrorCodes.js +0 -28
  439. package/node_modules/ws/lib/EventTarget.js +0 -151
  440. package/node_modules/ws/lib/Extensions.js +0 -203
  441. package/node_modules/ws/lib/PerMessageDeflate.js +0 -507
  442. package/node_modules/ws/lib/Receiver.js +0 -553
  443. package/node_modules/ws/lib/Sender.js +0 -412
  444. package/node_modules/ws/lib/Validation.js +0 -17
  445. package/node_modules/ws/lib/WebSocket.js +0 -717
  446. package/node_modules/ws/lib/WebSocketServer.js +0 -326
  447. package/node_modules/ws/package.json +0 -83
  448. package/node_modules/xhr2/CONTRIBUTING.md +0 -33
  449. package/node_modules/xhr2/Cakefile +0 -131
  450. package/node_modules/xhr2/LICENSE.txt +0 -19
  451. package/node_modules/xhr2/README.md +0 -142
  452. package/node_modules/xhr2/lib/browser.js +0 -1
  453. package/node_modules/xhr2/lib/xhr2.js +0 -1244
  454. package/node_modules/xhr2/package.json +0 -103
  455. package/node_modules/xhr2/src/000-xml_http_request_event_target.coffee +0 -89
  456. package/node_modules/xhr2/src/001-xml_http_request.coffee +0 -781
  457. package/node_modules/xhr2/src/errors.coffee +0 -31
  458. package/node_modules/xhr2/src/progress_event.coffee +0 -39
  459. package/node_modules/xhr2/src/xml_http_request_upload.coffee +0 -95
  460. package/node_modules/xhr2/test/fixtures/hello.json +0 -1
  461. package/node_modules/xhr2/test/fixtures/hello.txt +0 -1
  462. package/node_modules/xhr2/test/fixtures/xhr2.png +0 -0
  463. package/node_modules/xhr2/test/html/browser_test.html +0 -30
  464. package/node_modules/xhr2/test/src/event_target_test.coffee +0 -85
  465. package/node_modules/xhr2/test/src/events_test.coffee +0 -204
  466. package/node_modules/xhr2/test/src/headers_test.coffee +0 -168
  467. package/node_modules/xhr2/test/src/helpers/browser_mocha_runner.coffee +0 -10
  468. package/node_modules/xhr2/test/src/helpers/browser_mocha_setup.coffee +0 -1
  469. package/node_modules/xhr2/test/src/helpers/setup.coffee +0 -38
  470. package/node_modules/xhr2/test/src/helpers/xhr_server.coffee +0 -156
  471. package/node_modules/xhr2/test/src/nodejs_set_test.coffee +0 -162
  472. package/node_modules/xhr2/test/src/redirect_test.coffee +0 -57
  473. package/node_modules/xhr2/test/src/response_type_test.coffee +0 -88
  474. package/node_modules/xhr2/test/src/responseurl_test.coffee +0 -18
  475. package/node_modules/xhr2/test/src/send_test.coffee +0 -89
  476. package/node_modules/xhr2/test/src/status_test.coffee +0 -47
  477. package/node_modules/xhr2/test/src/xhr_test.coffee +0 -102
  478. package/node_modules/xtend/.jshintrc +0 -30
  479. package/node_modules/xtend/LICENSE +0 -20
  480. package/node_modules/xtend/README.md +0 -32
  481. package/node_modules/xtend/immutable.js +0 -19
  482. package/node_modules/xtend/mutable.js +0 -17
  483. package/node_modules/xtend/package.json +0 -89
  484. package/node_modules/xtend/test.js +0 -103
  485. package/node_modules/yazl/LICENSE +0 -21
  486. package/node_modules/yazl/README.md +0 -389
  487. package/node_modules/yazl/index.js +0 -749
  488. package/node_modules/yazl/package.json +0 -69
  489. package/src/commands/CorelliumAPI.js +0 -76
  490. package/src/subscriberInvite.js +0 -140
@@ -1,1292 +0,0 @@
1
- "use strict";
2
-
3
- const assert = require("assert");
4
- const fs = require("fs");
5
- const path = require("path");
6
- const stream = require("stream");
7
-
8
- const wtfnode = require("wtfnode");
9
-
10
- const Corellium = require("../src/corellium").Corellium;
11
- const { Input } = require("../src/input");
12
-
13
- const CONFIGURATION = require("./config.json");
14
-
15
- /** @typedef {import('../src/instance.js')} Instance */
16
- /** @typedef {import('../src/project.js')} Project */
17
-
18
- process.title = "integration-tests";
19
- process.on("SIGUSR2", () => wtfnode.dump());
20
-
21
- global.hookOrTestFailed = false;
22
-
23
- function setFlagIfHookFailedDecorator(fn) {
24
- return function () {
25
- return Promise.resolve(fn.apply(this, arguments)).catch((error) => {
26
- global.hookOrTestFailed = true;
27
- throw error;
28
- });
29
- };
30
- }
31
-
32
- async function turnOff(instance) {
33
- await instance.stop();
34
- await instance.waitForState("off");
35
- assert.strictEqual(instance.state, "off");
36
- assert.notEqual(instance.stateChanged, null);
37
- }
38
-
39
- async function turnOn(instance) {
40
- await instance.start();
41
- await instance.waitForState("on");
42
- assert.strictEqual(instance.state, "on");
43
- assert.notEqual(instance.stateChanged, null);
44
- }
45
-
46
- describe("Corellium API", function () {
47
- let BASE_LIFECYCLE_TIMEOUT = 0;
48
- let BASE_SNAPSHOT_TIMEOUT = 0;
49
- let INSTANCE_VERSIONS = [];
50
- if (CONFIGURATION.testFlavor === "ranchu") {
51
- this.slow(10000);
52
- this.timeout(20000);
53
-
54
- BASE_LIFECYCLE_TIMEOUT = 40000;
55
- BASE_SNAPSHOT_TIMEOUT = 20000;
56
- INSTANCE_VERSIONS = ["7.1.2", "8.1.0", "9.0.0", "10.0.0", "11.0.0", "12.0.0"];
57
- } else {
58
- this.slow(40000);
59
- this.timeout(50000);
60
-
61
- BASE_LIFECYCLE_TIMEOUT = 700000;
62
- BASE_SNAPSHOT_TIMEOUT = 300000;
63
- INSTANCE_VERSIONS = ["10.3.3", "11.4.1", "12.4.1", "13.7", "14.1"];
64
- }
65
-
66
- const instanceMap = new Map();
67
- let corellium = null;
68
- let loggedIn = false;
69
-
70
- before(
71
- "should have a configuration",
72
- setFlagIfHookFailedDecorator(function () {
73
- if (
74
- !CONFIGURATION.endpoint ||
75
- !CONFIGURATION.project ||
76
- !CONFIGURATION.testFlavor ||
77
- (!(CONFIGURATION.username && CONFIGURATION.password) && !CONFIGURATION.apiToken)
78
- ) {
79
- throw new Error(
80
- "The configuration must include endpoint, project and testFlavor as well as username and password or apiToken properties.",
81
- );
82
- }
83
- }),
84
- );
85
-
86
- before(
87
- "should log in",
88
- setFlagIfHookFailedDecorator(async function () {
89
- corellium = new Corellium(CONFIGURATION);
90
- await corellium.login();
91
-
92
- const token = await corellium.token;
93
- assert(token && token.token, "Token was never set, login must have silently failed");
94
-
95
- loggedIn = true;
96
- }),
97
- );
98
-
99
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
100
- after(
101
- setFlagIfHookFailedDecorator(async function () {
102
- this.timeout(80000);
103
-
104
- const instance = instanceMap.get(instanceVersion);
105
- if (!instance) {
106
- return;
107
- }
108
-
109
- // To facilitate debugging, don't destroy instances if a test or hook failed.
110
- if (global.hookOrTestFailed) {
111
- // Stop updating the instance. Otherwise the updater keeps at it and the
112
- // integration tests don't terminate.
113
- instance.project.updater.remove(instance);
114
- return;
115
- }
116
-
117
- await instance.destroy();
118
- await instance.waitForState("deleted");
119
- }),
120
- );
121
- });
122
-
123
- describe("projects", function () {
124
- let project = /** @type {Project} */ (null);
125
-
126
- before(
127
- "should be logged in",
128
- setFlagIfHookFailedDecorator(function () {
129
- assert(loggedIn, "All tests will fail as login failed");
130
- }),
131
- );
132
-
133
- it("lists projects", async function () {
134
- project = await corellium.projects().then((projects) => {
135
- const foundProject = projects.find(
136
- (project) => project.info.name === CONFIGURATION.project,
137
- );
138
- assert(
139
- foundProject !== undefined,
140
- new Error(
141
- `Your test configuration specifies a project named "${CONFIGURATION.project}", but no such project was found on ${CONFIGURATION.endpoint}`,
142
- ),
143
- );
144
- return foundProject;
145
- });
146
- });
147
-
148
- it("lists files", async function () {
149
- const files = await corellium.files();
150
- assert(Array.isArray(files));
151
- });
152
-
153
- it(`has room for ${INSTANCE_VERSIONS.length} new VMs (get quota / quotasUsed)`, async function () {
154
- assert(project, "Unable to test as no project was returned from previous tests");
155
- assert(project.quotas !== project.quotasUsed);
156
- if (project.quotas.cores - project.quotasUsed.cores < 2 * INSTANCE_VERSIONS.length)
157
- throw new Error(
158
- `no room for an extra device to be made, please free at least ${
159
- 2 * INSTANCE_VERSIONS.length
160
- } cores`,
161
- );
162
- });
163
-
164
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
165
- it(`can start create ${instanceVersion}`, async function () {
166
- assert(project, "Unable to test as no project was returned from previous tests");
167
- const name = `API Test ${instanceVersion}`;
168
- let instanceConfig = {};
169
- if (CONFIGURATION.testFlavor === "ranchu") {
170
- instanceConfig = {
171
- flavor: CONFIGURATION.testFlavor,
172
- name: name,
173
- os: instanceVersion,
174
- };
175
- } else {
176
- instanceConfig = {
177
- flavor: CONFIGURATION.testFlavor,
178
- name: name,
179
- os: instanceVersion,
180
- bootOptions: {
181
- udid: "9564a02c6255d8c449a3f691aeb8296dd352f3d6",
182
- },
183
- };
184
- }
185
- const instance = await project.createInstance(instanceConfig);
186
-
187
- instanceMap.set(instanceVersion, instance);
188
-
189
- await instance.waitForState("creating");
190
- assert.strictEqual(instance.flavor, CONFIGURATION.testFlavor);
191
- assert.strictEqual(instance.name, name);
192
- });
193
- });
194
-
195
- it("can list supported devices", async function () {
196
- const supportedDevices = await corellium.supported();
197
- const firmware = supportedDevices.find(
198
- (device) => device.name === CONFIGURATION.testFlavor,
199
- );
200
- assert(firmware);
201
- });
202
-
203
- it("can get teams and users", async function () {
204
- let teamsAndUsers = await corellium.getTeamsAndUsers();
205
- teamsAndUsers.users.forEach((value, key) => {
206
- assert.strictEqual(value, corellium._users.get(key));
207
- });
208
-
209
- teamsAndUsers.teams.forEach((value, key) => {
210
- assert.strictEqual(value, corellium._teams.get(key));
211
- });
212
- });
213
-
214
- it("can get roles", async function () {
215
- const roles = await corellium.roles();
216
- assert(roles, "Roles should not be undefined, even if there have been no roles");
217
- });
218
-
219
- // Not visible to cloud users with one project:
220
- it("can add and remove keys", async function () {
221
- let keyInfo = await project
222
- .addKey(
223
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqpvRmc/JQoH9P6XVlHnod0wRCg+7iSGfpyoBoe+nWwp2iEqPyM7A2RzW7ZIX2FZmlD5ldR6Oj5Z+LUR/GXfCFQvpQkidL5htzGMoI59SwntpSMvHlFLOcbyS7VmI4MKbdIF+UrelPCcCJjOaZIFOJfNtuLWDx0L14jW/4wflzcj6Fd1rBTVh2SB3mvhsraOuv9an74zr/PMSHtpFnt5m4SYWpE4HLTf0FJksEe/Qda9jQu5i86Mhu6ewSAVccUDLzgz6E4i8hvSqfctcYGT7asqxsubPTpTPfuOkc3WOxlqZYnnAbpGh8NvCu9uC+5gfWRcLoyRBE4J2Y3wcfOueP example-key",
224
- )
225
- .then((projectKey) => {
226
- assert(
227
- projectKey.label === "example-key",
228
- "label defaults to public key comment",
229
- );
230
- assert(
231
- projectKey.fingerprint ===
232
- "9c:71:e5:40:08:fb:cd:88:1b:6d:8e:4f:c0:4c:0f:dd",
233
- );
234
- return projectKey;
235
- })
236
- .catch((error) => {
237
- throw error;
238
- });
239
-
240
- const keys = await project.keys();
241
- assert(!!keys.find((key) => key.identifier === keyInfo.identifier));
242
-
243
- await project.deleteKey(keyInfo.identifier);
244
- });
245
-
246
- it("can refresh", async function () {
247
- let tempName = project.info.name;
248
- await project.refresh();
249
- assert(tempName === project.info.name);
250
- });
251
-
252
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
253
- it(`can getInstance ${instanceVersion}`, async function () {
254
- const instanceFromMap = instanceMap.get(instanceVersion);
255
- assert(instanceFromMap, "Instance failed to create, test will fail");
256
- const instance = await project.getInstance(instanceFromMap.id);
257
- assert(instance.id === instanceFromMap.id);
258
- });
259
- });
260
-
261
- it("can get openvpn profile", async function () {
262
- let expected = Buffer.from("client");
263
-
264
- await project
265
- .vpnConfig("ovpn", undefined)
266
- .then((profile) => {
267
- assert(profile.length > expected.length);
268
- assert(profile.compare(expected, 0, expected.length, 0, expected.length) === 0);
269
- return profile;
270
- })
271
- .catch((error) => {
272
- // Hack to ignore onsite installs for this test
273
- if (!error.toString().includes("500 Internal Server Error")) {
274
- throw error;
275
- }
276
- console.log(
277
- "Forcing pass, this does not appear to be a server which supports vpns",
278
- );
279
- return undefined;
280
- });
281
- });
282
-
283
- it("can get tunnelblick profile", async function () {
284
- let expected = Buffer.from("504b0304", "hex");
285
-
286
- await project
287
- .vpnConfig("tblk", undefined)
288
- .then((profile) => {
289
- assert(profile.length > expected.length);
290
- assert(profile.compare(expected, 0, expected.length, 0, expected.length) === 0);
291
- return profile;
292
- })
293
- .catch((error) => {
294
- // Hack to ignore onsite installs for this test
295
- if (!error.toString().includes("500 Internal Server Error")) {
296
- throw error;
297
- }
298
- console.log(
299
- "Forcing pass, this does not appear to be a server which supports vpns",
300
- );
301
- return undefined;
302
- });
303
- });
304
-
305
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
306
- it(`can finish create ${instanceVersion}`, async function () {
307
- this.slow(BASE_LIFECYCLE_TIMEOUT);
308
- this.timeout(BASE_LIFECYCLE_TIMEOUT + 30000);
309
-
310
- const instance = instanceMap.get(instanceVersion);
311
- assert(instance, "Instance failed to create, test will fail");
312
- await instance.finishRestore();
313
- });
314
- });
315
- });
316
-
317
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
318
- describe(`panics ${instanceVersion}`, function () {
319
- before(
320
- "should have an instance",
321
- setFlagIfHookFailedDecorator(function () {
322
- assert(
323
- instanceMap.get(instanceVersion),
324
- "No instances available for testing, tests will fail",
325
- );
326
- }),
327
- );
328
-
329
- it("can request panics", async function () {
330
- const instance = instanceMap.get(instanceVersion);
331
- const panics = instance.panics();
332
- assert(panics, "Panics should not be undefined, even if there have been no panics");
333
- });
334
-
335
- it("can clear panics", async function () {
336
- const instance = instanceMap.get(instanceVersion);
337
- instance.clearPanics();
338
- });
339
- });
340
- });
341
-
342
- INSTANCE_VERSIONS.forEach((instanceVersion) => {
343
- describe(`instances ${instanceVersion}`, function () {
344
- before(
345
- "should have an instance",
346
- setFlagIfHookFailedDecorator(async function () {
347
- assert(
348
- instanceMap.get(instanceVersion),
349
- "No instances available for testing, tests will fail",
350
- );
351
- const instance = instanceMap.get(instanceVersion);
352
- await instance.waitForState("on");
353
- }),
354
- );
355
-
356
- describe(`billing ${instanceVersion}`, function () {
357
- it("can get rate information", async function () {
358
- const instance = instanceMap.get(instanceVersion);
359
- const rate = await instance.rate();
360
-
361
- assert.strictEqual(
362
- ((rate.onRateMicrocents * (60 * 60 * 24)) / 1000000 / 100).toFixed(2) > 0,
363
- true,
364
- `'On' rate should be larger than 0`,
365
- );
366
- assert.strictEqual(
367
- ((rate.offRateMicrocents * (60 * 60 * 24)) / 1000000 / 100).toFixed(2) > 0,
368
- true,
369
- `'Off' rate should be larger than 0`,
370
- );
371
- });
372
- });
373
-
374
- describe(`device lifecycle ${instanceVersion}`, function () {
375
- this.slow(BASE_LIFECYCLE_TIMEOUT / 2);
376
- this.timeout(BASE_LIFECYCLE_TIMEOUT);
377
-
378
- beforeEach(async function () {
379
- const instance = instanceMap.get(instanceVersion);
380
- await instance.update();
381
- });
382
-
383
- it("can pause", async function () {
384
- const instance = instanceMap.get(instanceVersion);
385
- await instance.waitForState("on");
386
- await instance.pause();
387
- await instance.waitForState("paused");
388
- });
389
-
390
- it("can unpause", async function () {
391
- const instance = instanceMap.get(instanceVersion);
392
- if (instance.state !== "paused") {
393
- await instance.pause();
394
- await instance.waitForState("paused");
395
- }
396
-
397
- await instance.unpause();
398
- await instance.waitForState("on");
399
- });
400
-
401
- it("can reboot", async function () {
402
- const instance = instanceMap.get(instanceVersion);
403
- await instance.reboot();
404
- });
405
-
406
- it("can stop", async function () {
407
- const instance = instanceMap.get(instanceVersion);
408
- if (instance.state !== "on") {
409
- await turnOn(instance);
410
- }
411
- await turnOff(instance);
412
- });
413
-
414
- it("can start", async function () {
415
- const instance = instanceMap.get(instanceVersion);
416
- if (instance.state !== "off") {
417
- await turnOff(instance);
418
- }
419
- await turnOn(instance);
420
- });
421
- });
422
-
423
- describe(`snapshots ${instanceVersion}`, function () {
424
- this.slow(BASE_SNAPSHOT_TIMEOUT);
425
- this.timeout(BASE_SNAPSHOT_TIMEOUT * 2);
426
-
427
- before(
428
- "should have an up-to-date instance",
429
- setFlagIfHookFailedDecorator(async function () {
430
- const instance = instanceMap.get(instanceVersion);
431
- await instance.update();
432
- }),
433
- );
434
-
435
- it("has a fresh snapshot", async function () {
436
- const instance = instanceMap.get(instanceVersion);
437
- const snapshots = await instance.snapshots();
438
- const fresh = snapshots.find((snap) => snap.fresh);
439
- assert(fresh.status.created === true);
440
- // MIDDLEWARE-672 : Ensure snapshot has an actual date object
441
- assert(isNaN(fresh.created.getDate()) === false);
442
- });
443
-
444
- let latestSnapshot;
445
- if (CONFIGURATION.testFlavor === "ranchu") {
446
- it("refuses to take snapshot if instance is on", async function () {
447
- const instance = instanceMap.get(instanceVersion);
448
- if (instance.state !== "on") {
449
- await turnOn(instance);
450
- }
451
- await assert.rejects(() => instance.takeSnapshot());
452
- });
453
-
454
- it("can take snapshot if instance is off", async function () {
455
- const instance = instanceMap.get(instanceVersion);
456
- if (instance.state !== "off") {
457
- await turnOff(instance);
458
- }
459
-
460
- latestSnapshot = await instance.takeSnapshot();
461
-
462
- while (latestSnapshot.status.created !== true) {
463
- await latestSnapshot.update();
464
- }
465
- });
466
- } else {
467
- it("can take snapshot if instance is on", async function () {
468
- const instance = instanceMap.get(instanceVersion);
469
- latestSnapshot = await instance.takeSnapshot();
470
-
471
- while (latestSnapshot.status.created !== true) {
472
- await latestSnapshot.update();
473
- }
474
- });
475
- }
476
-
477
- it("can restore a snapshot", async function () {
478
- assert(
479
- latestSnapshot,
480
- "This test cannot run because there is no latestSnapshot to use",
481
- );
482
- const instance = instanceMap.get(instanceVersion);
483
- if (CONFIGURATION.testFlavor === "ranchu") {
484
- await latestSnapshot.restore();
485
- } else {
486
- await instance.pause();
487
- await instance.waitForState("paused");
488
- await latestSnapshot.restore();
489
- await instance.waitForAgentReady();
490
- }
491
- });
492
-
493
- it("can delete a snapshot", async function () {
494
- assert(
495
- latestSnapshot,
496
- "This test cannot run because there is no latestSnapshot to use",
497
- );
498
-
499
- const instance = instanceMap.get(instanceVersion);
500
- assert(
501
- (await instance.snapshots()).some(
502
- (snapshot) => snapshot.id === latestSnapshot.id,
503
- ),
504
- );
505
-
506
- await latestSnapshot.delete();
507
-
508
- while (
509
- (await instance.snapshots()).some(
510
- (snapshot) => snapshot.id === latestSnapshot.id,
511
- )
512
- );
513
- });
514
-
515
- after("should be on", async function () {
516
- const instance = instanceMap.get(instanceVersion);
517
- await instance.update();
518
- await turnOn(instance);
519
- });
520
- });
521
-
522
- it("can take a screenshot", async function () {
523
- const expected = Buffer.from("89504E470D0A1A0A", "hex");
524
- const instance = instanceMap.get(instanceVersion);
525
- await instance.takeScreenshot().then((png) => {
526
- assert(png.length > expected.length);
527
- assert(png.compare(expected, 0, expected.length, 0, expected.length) === 0);
528
- });
529
- });
530
-
531
- it("can rename", async function () {
532
- const instance = instanceMap.get(instanceVersion);
533
- const instanceName = instance.name;
534
- async function rename(name) {
535
- await instance.rename(name);
536
- await instance.update();
537
- assert.strictEqual(instance.name, name);
538
- }
539
- await rename("test rename foo");
540
- await rename(instanceName);
541
- });
542
-
543
- it("has a console log", async function () {
544
- const instance = instanceMap.get(instanceVersion);
545
- const log = await instance.consoleLog();
546
- if (log === undefined) {
547
- throw new Error("Unable to acquire any console log");
548
- }
549
- });
550
-
551
- it("has a console", async function () {
552
- const instance = instanceMap.get(instanceVersion);
553
- const consoleStream = await instance.console();
554
- // Wait for the socket to open before killing it,
555
- // otherwise this will throw an error
556
- consoleStream.socket.on("open", function () {
557
- consoleStream.socket.close();
558
- });
559
- // When the socket closes, it will be safe to destroy the console duplexify object
560
- consoleStream.socket.on("close", function () {
561
- consoleStream.destroy();
562
- });
563
- });
564
-
565
- it("can send input", async function () {
566
- const input = new Input();
567
- const instance = instanceMap.get(instanceVersion);
568
- instance.sendInput(input.pressRelease("home"));
569
- });
570
-
571
- if (CONFIGURATION.testFlavor === "ranchu") {
572
- // Peripherals/sensor are only supported for android currently
573
- describe(`peripherals ${instanceVersion}`, function () {
574
- before(
575
- setFlagIfHookFailedDecorator(async function () {
576
- this.timeout(BASE_LIFECYCLE_TIMEOUT + 60000);
577
-
578
- const instance = instanceMap.get(instanceVersion);
579
- await instance.waitForState("on");
580
- }),
581
- );
582
-
583
- it("can get peripheral data", async function () {
584
- const instance = instanceMap.get(instanceVersion);
585
- let peripheralData = await instance.getPeripherals();
586
- assert(
587
- peripheralData !== undefined && Object.keys(peripheralData).length > 0,
588
- );
589
- });
590
-
591
- it("can set and get updated peripheral data", async function () {
592
- const instance = instanceMap.get(instanceVersion);
593
- await instance.modifyPeripherals({ batteryCapacity: "42" });
594
- let peripheralData = await instance.getPeripherals();
595
- assert(
596
- peripheralData !== undefined &&
597
- parseInt(peripheralData.batteryCapacity) === 42,
598
- );
599
- });
600
- });
601
- }
602
-
603
- describe(`agent ${instanceVersion}`, function () {
604
- let agent;
605
- let installSuccess = false;
606
-
607
- before(
608
- setFlagIfHookFailedDecorator(async function () {
609
- this.timeout(BASE_LIFECYCLE_TIMEOUT + 60000);
610
-
611
- const instance = instanceMap.get(instanceVersion);
612
- await instance.waitForState("on");
613
- await instance.waitForAgentReady();
614
- }),
615
- );
616
-
617
- beforeEach(async function () {
618
- const instance = instanceMap.get(instanceVersion);
619
- if (agent === undefined || !agent.connected) {
620
- agent = await instance.agent();
621
- await agent.ready();
622
- }
623
- });
624
-
625
- after(
626
- setFlagIfHookFailedDecorator(async function () {
627
- if (agent !== undefined && agent.connected) agent.disconnect();
628
- }),
629
- );
630
-
631
- it("can list device apps", async function () {
632
- let appList = await agent.appList();
633
- assert(appList !== undefined && appList.length > 0);
634
- });
635
-
636
- it("can use shellExec", async function () {
637
- let uname = await agent.shellExec("uname");
638
- assert(uname.output !== undefined && uname.output.length > 0);
639
- assert(uname["success"], true);
640
- });
641
-
642
- describe(`Files ${instanceVersion}`, function () {
643
- let expectedData = Buffer.from("D1FF", "hex");
644
- let testPath;
645
-
646
- it("can get temp file", async function () {
647
- testPath = await agent.tempFile();
648
- });
649
-
650
- it("can upload a file", async function () {
651
- let rs = stream.Readable.from(expectedData);
652
-
653
- let lastStatus;
654
- try {
655
- await agent.upload(testPath, rs, (_progress, status) => {
656
- lastStatus = status;
657
- });
658
- } catch (err) {
659
- assert(
660
- false,
661
- `Error uploading file during '${lastStatus} stage: ${err}`,
662
- );
663
- }
664
- });
665
-
666
- it("can stat a file", async function () {
667
- let stat = await agent.stat(testPath);
668
- assert.strictEqual(stat.name, testPath);
669
- });
670
-
671
- it("can change a files attributes", async function () {
672
- await agent.changeFileAttributes(testPath, { mode: 511 });
673
- let stat = await agent.stat(testPath);
674
- assert.strictEqual(stat.mode, 33279);
675
- });
676
-
677
- it("can download files", async function () {
678
- try {
679
- let downloaded = await new Promise((resolve) => {
680
- const rs = agent.download(testPath);
681
- let bufs = [];
682
- rs.on("data", function (chunk) {
683
- bufs.push(chunk);
684
- });
685
- rs.on("end", function () {
686
- resolve(Buffer.concat(bufs));
687
- });
688
- });
689
-
690
- assert(Buffer.compare(downloaded, expectedData) === 0);
691
- } catch (err) {
692
- assert(false, `Error reading downloadable file ${err}`);
693
- }
694
- });
695
-
696
- it("can delete files", async function () {
697
- await agent.deleteFile(testPath).then((path) => {
698
- assert(path === undefined);
699
- });
700
-
701
- // We should get an OperationFailed since the file is gone
702
- try {
703
- await agent.stat(testPath);
704
- } catch (error) {
705
- if (CONFIGURATION.testFlavor === "ranchu") {
706
- assert(error.toString().includes("No such file or directory"));
707
- } else {
708
- assert(
709
- error
710
- .toString()
711
- .includes("Stat of file '" + testPath + "' failed."),
712
- );
713
- }
714
- }
715
- });
716
- });
717
-
718
- describe(`configuration profiles ${instanceVersion}`, function () {
719
- if (CONFIGURATION.testFlavor === "ranchu") {
720
- // These are unimplemented on ranchu devices
721
- it("cannot use profile/list", async function () {
722
- assert.rejects(() => agent.profileList());
723
- });
724
-
725
- it("cannot use profile/install", async function () {
726
- assert.rejects(() => agent.installProfile("test"));
727
- });
728
-
729
- it("cannot use profile/remove", async function () {
730
- assert.rejects(() => agent.removeProfile("test"));
731
- });
732
-
733
- it("cannot use profile/get", async function () {
734
- assert.rejects(() => agent.getProfile("test"));
735
- });
736
- } else {
737
- let profileID = "TBA";
738
-
739
- it.skip("can use profile/list", async function () {
740
- await agent.profileList();
741
- });
742
-
743
- it.skip("can use profile/install", async function () {
744
- var profile = fs.readFileSync(path.join(__dirname, "TBA.mobileconfig"));
745
- await agent.installProfile(profile);
746
- });
747
-
748
- it.skip("can use profile/get", async function () {
749
- await agent.getProfile(profileID);
750
- });
751
-
752
- it.skip("can use profile/remove", async function () {
753
- await agent.removeProfile(profileID);
754
- });
755
- }
756
- });
757
-
758
- describe(`provisioning profiles ${instanceVersion}`, function () {
759
- if (CONFIGURATION.testFlavor === "ranchu") {
760
- // These are unimplemented on ranchu devices
761
- it("cannot use provisioning/list", async function () {
762
- assert.rejects(() => agent.listProvisioningProfiles());
763
- });
764
-
765
- it("cannot use provisioning/install", async function () {
766
- assert.rejects(() => agent.installProvisioningProfile("test", true));
767
- });
768
-
769
- it("cannot use provisioning/remove", async function () {
770
- assert.rejects(() => agent.removeProvisioningProfile("test"));
771
- });
772
-
773
- it("cannot use provisioning/preapprove", async function () {
774
- assert.rejects(() => agent.preApproveProvisioningProfile());
775
- });
776
- } else {
777
- let certID = "TBA";
778
- let profileID = "TBA";
779
-
780
- it.skip("can use provisioning/install", async function () {
781
- var profile = fs.readFileSync(
782
- path.join(__dirname, "embedded.mobileprovision"),
783
- );
784
- await agent.installProvisioningProfile(profile, true);
785
- });
786
-
787
- it.skip("can use provisioning/list", async function () {
788
- await agent.listProvisioningProfiles();
789
- });
790
-
791
- it.skip("can use provisioning/remove", async function () {
792
- await agent.removeProvisioningProfile(profileID);
793
- });
794
-
795
- it.skip("can use provisioning/preapprove", async function () {
796
- await agent.preApproveProvisioningProfile(certID, profileID);
797
- });
798
- }
799
- });
800
-
801
- describe(`locks ${instanceVersion}`, function () {
802
- if (CONFIGURATION.testFlavor === "ranchu") {
803
- // These are unimplemented on ranchu devices
804
- it("cannot use lock", async function () {
805
- assert.rejects(() => agent.lockDevice());
806
- });
807
-
808
- it("cannot use unlock", async function () {
809
- assert.rejects(() => agent.unlockDevice());
810
- });
811
-
812
- it("cannot use acquireDisableAutolockAssertion", async function () {
813
- assert.rejects(() => agent.acquireDisableAutolockAssertion());
814
- });
815
-
816
- it("cannot use releaseDisableAutolockAssertion", async function () {
817
- assert.rejects(() => agent.releaseDisableAutolockAssertion());
818
- });
819
- } else {
820
- it("can use lock", async function () {
821
- await agent.lockDevice();
822
- });
823
-
824
- it("can use unlock", async function () {
825
- await agent.unlockDevice();
826
- });
827
-
828
- it("can use acquireDisableAutolockAssertion", async function () {
829
- await agent.acquireDisableAutolockAssertion();
830
- });
831
-
832
- it("can use releaseDisableAutolockAssertion", async function () {
833
- await agent.releaseDisableAutolockAssertion();
834
- });
835
- }
836
- });
837
-
838
- describe(`UI automation ${instanceVersion}`, function () {
839
- if (CONFIGURATION.testFlavor === "ranchu") {
840
- // These are unimplemented on ranchu devices
841
- it("cannot use enableUIAutomation", async function () {
842
- assert.rejects(() => agent.enableUIAutomation());
843
- });
844
-
845
- it("cannot use disableUIAutomation", async function () {
846
- assert.rejects(() => agent.disableUIAutomation());
847
- });
848
- } else {
849
- it("can use enableUIAutomation", async function () {
850
- await agent.enableUIAutomation();
851
- });
852
-
853
- it("can use disableUIAutomation", async function () {
854
- await agent.disableUIAutomation();
855
- });
856
- }
857
- });
858
-
859
- describe(`WiFi ${instanceVersion}`, function () {
860
- if (CONFIGURATION.testFlavor === "ranchu") {
861
- // These are unimplemented on ranchu devices
862
- it("cannot use connectToWifi", async function () {
863
- assert.rejects(() => agent.connectToWifi());
864
- });
865
-
866
- it("cannot use disconnectFromWifi", async function () {
867
- assert.rejects(() => agent.disconnectFromWifi());
868
- });
869
- } else {
870
- it("can use disconnectFromWifi", async function () {
871
- await agent.disconnectFromWifi();
872
-
873
- // Wait a bit to avoid WiFi connection race on some devices
874
- await new Promise((resolve) => setTimeout(resolve, 1000));
875
- });
876
-
877
- it("can use connectToWifi", async function () {
878
- await agent.connectToWifi();
879
- });
880
- }
881
- });
882
-
883
- let bundleID = "";
884
- if (CONFIGURATION.testFlavor === "ranchu") bundleID = "com.corellium.test.app";
885
- else bundleID = "com.corellium.Red";
886
- describe(`Applications ${instanceVersion}`, function () {
887
- it("can install a signed apk/ipa", function () {
888
- this.slow(50000);
889
- this.timeout(100000);
890
-
891
- let appFile = "";
892
- if (CONFIGURATION.testFlavor === "ranchu") {
893
- appFile = "api-test.apk";
894
- } else {
895
- appFile = "Red.ipa";
896
- }
897
- return agent
898
- .installFile(fs.createReadStream(path.join(__dirname, appFile)))
899
- .then(() => (installSuccess = true));
900
- });
901
-
902
- it("can run an app", async function () {
903
- assert(
904
- installSuccess,
905
- "This test cannot run because application installation failed",
906
- );
907
- await agent.run(bundleID);
908
- });
909
-
910
- it("can kill an app", async function () {
911
- assert(
912
- installSuccess,
913
- "This test cannot run because application installation failed",
914
- );
915
- await agent.kill(bundleID);
916
- });
917
- });
918
-
919
- describe(`crash watcher ${instanceVersion}`, function () {
920
- let crashListener;
921
-
922
- before(
923
- setFlagIfHookFailedDecorator(async function () {
924
- const instance = instanceMap.get(instanceVersion);
925
- await instance.waitForState("on");
926
- await instance.waitForAgentReady();
927
- crashListener = await instance.newAgent();
928
- }),
929
- );
930
-
931
- after(
932
- setFlagIfHookFailedDecorator(async function () {
933
- if (crashListener !== undefined && crashListener.connected)
934
- crashListener.disconnect();
935
- }),
936
- );
937
-
938
- it("can catch an expected crash", function () {
939
- return new Promise((resolve) => {
940
- assert(
941
- installSuccess,
942
- "This test cannot run because application installation failed",
943
- );
944
- let targetLine = "";
945
- if (CONFIGURATION.testFlavor === "ranchu") {
946
- targetLine = "com.corellium.test.app";
947
- } else {
948
- targetLine = "com.apple.Maps";
949
- }
950
- return crashListener.ready().then(() => {
951
- crashListener
952
- .crashes(targetLine, (err, crashReport) => {
953
- assert(!err, err);
954
- assert(
955
- crashReport !== undefined,
956
- "The crash report is undefined",
957
- );
958
- assert(
959
- crashReport.includes(targetLine),
960
- `The crash reported doesn't include "${targetLine}":\n\n${crashReport}`,
961
- );
962
- resolve();
963
- })
964
- .catch((error) => {
965
- if (
966
- error.message &&
967
- error.message.includes("disconnected")
968
- ) {
969
- return;
970
- }
971
- throw error;
972
- });
973
- if (CONFIGURATION.testFlavor === "ranchu") {
974
- return agent.runActivity(
975
- "com.corellium.test.app",
976
- "com.corellium.test.app/com.corellium.test.app.CrashActivity",
977
- );
978
- } else {
979
- return agent.run("com.apple.Maps");
980
- }
981
- });
982
- });
983
- });
984
- });
985
-
986
- describe(`SSL pinning control ${instanceVersion}`, function () {
987
- if (CONFIGURATION.testFlavor === "ranchu") {
988
- // These are unimplemented on ranchu devices
989
- it("cannot use enableSSLPinning", async function () {
990
- assert.rejects(() => agent.enableSSLPinning());
991
- });
992
-
993
- it("cannot use isSSLPinningEnabled", async function () {
994
- assert.rejects(() => agent.isSSLPinningEnabled());
995
- });
996
-
997
- it("cannot use disableSSLPinning", async function () {
998
- assert.rejects(() => agent.disableSSLPinning());
999
- });
1000
- } else {
1001
- it("can use enableSSLPinning", async function () {
1002
- await agent.enableSSLPinning();
1003
- });
1004
-
1005
- it("can use isSSLPinningEnabled", async function () {
1006
- assert(await agent.isSSLPinningEnabled());
1007
- });
1008
-
1009
- it("can use disableSSLPinning", async function () {
1010
- await agent.disableSSLPinning();
1011
- });
1012
- }
1013
- });
1014
-
1015
- describe(`Network Monitor ${instanceVersion}`, function () {
1016
- let netmon;
1017
-
1018
- after(
1019
- "disconnect network monitor",
1020
- setFlagIfHookFailedDecorator(function () {
1021
- if (CONFIGURATION.testFlavor !== "ranchu") {
1022
- agent.kill("com.saurik.Cydia");
1023
- }
1024
-
1025
- netmon.disconnect();
1026
- }),
1027
- );
1028
-
1029
- it("can get monitor", async function () {
1030
- const instance = instanceMap.get(instanceVersion);
1031
- netmon = await instance.newNetworkMonitor();
1032
- assert.strictEqual(
1033
- netmon !== undefined,
1034
- true,
1035
- `Expected monitor to be returned`,
1036
- );
1037
- });
1038
-
1039
- it("can start monitor", async function () {
1040
- assert.strictEqual(
1041
- await netmon.start(),
1042
- true,
1043
- `Expected the network monitor to start and return true`,
1044
- );
1045
- });
1046
-
1047
- it("can monitor data", async function () {
1048
- assert(
1049
- installSuccess,
1050
- `This test can't run because application installation failed.`,
1051
- );
1052
-
1053
- return new Promise((resolve) => {
1054
- this.slow(80000);
1055
- this.timeout(100000);
1056
-
1057
- netmon.handleMessage((message) => {
1058
- const hostHeader = message.request.headers.find(
1059
- (header) => header.key === "Host",
1060
- );
1061
- if (CONFIGURATION.testFlavor === "ranchu") {
1062
- if (hostHeader.value === "corellium.com") {
1063
- netmon.handleMessage(null);
1064
- resolve();
1065
- }
1066
- } else {
1067
- if (hostHeader.value === "cydia.zodttd.com") {
1068
- netmon.handleMessage(null);
1069
- resolve();
1070
- }
1071
- }
1072
- });
1073
-
1074
- // The test application gets ECONNREFUSEDs if it's run too soon after
1075
- // Network Monitor starts.
1076
- return new Promise((resolve) => setTimeout(resolve, 1000 * 5)).then(
1077
- async () => {
1078
- if (CONFIGURATION.testFlavor === "ranchu") {
1079
- await agent.runActivity(
1080
- "com.corellium.test.app",
1081
- "com.corellium.test.app/com.corellium.test.app.NetworkActivity",
1082
- );
1083
- resolve();
1084
- } else {
1085
- return agent.run("com.saurik.Cydia");
1086
- }
1087
- },
1088
- );
1089
- });
1090
- });
1091
-
1092
- it("can stop monitor", async function () {
1093
- assert.strictEqual(
1094
- await netmon.stop(),
1095
- true,
1096
- `Expected the network monitor to stop and return true`,
1097
- );
1098
- });
1099
-
1100
- it("can clear log", async function () {
1101
- await netmon.clearLog();
1102
- });
1103
- });
1104
-
1105
- describe(`Frida ${instanceVersion}`, function () {
1106
- let pid = 0;
1107
- let name = "";
1108
-
1109
- if (CONFIGURATION.testFlavor === "ranchu") {
1110
- it("can get process list", async function () {
1111
- let procList = await agent.runFridaPs();
1112
- let lines = procList.output.trim().split("\n");
1113
- lines.shift();
1114
- lines.shift();
1115
- for (const line of lines) {
1116
- [pid, name] = line.trim().split(/\s+/);
1117
- if (name === "keystore") {
1118
- break;
1119
- }
1120
- }
1121
- assert(pid != 0);
1122
- });
1123
- } else {
1124
- it("cannot get process list", async function () {
1125
- assert.rejects(() => agent.runFridaPs());
1126
- });
1127
- }
1128
-
1129
- it("can get console", async function () {
1130
- const instance = instanceMap.get(instanceVersion);
1131
- const consoleStream = await instance.fridaConsole();
1132
-
1133
- consoleStream.socket.on("close", function () {
1134
- consoleStream.destroy();
1135
- });
1136
- consoleStream.socket.close();
1137
- });
1138
-
1139
- describe("frida attaching and execution", function () {
1140
- if (CONFIGURATION.testFlavor === "ranchu") {
1141
- it("can attach frida", async function () {
1142
- if (name === "") {
1143
- name = "keystore";
1144
- }
1145
- await agent.runFrida(pid, name);
1146
- let processList;
1147
- do {
1148
- processList = await agent.runFridaPs();
1149
- } while (
1150
- !(
1151
- processList.attached &&
1152
- processList.attached.target_name === name
1153
- )
1154
- );
1155
- });
1156
-
1157
- it("can get frida scripts", async function () {
1158
- let fridaScripts = await agent.stat(
1159
- "/data/corellium/frida/scripts/",
1160
- );
1161
- let scriptList = fridaScripts.entries.map((entry) => entry.name);
1162
- let s = "";
1163
- for (s of scriptList) {
1164
- if (s === "hook_native.js") break;
1165
- }
1166
- assert(s != "");
1167
- });
1168
-
1169
- it.skip("can execute script", async function () {
1170
- const instance = instanceMap.get(instanceVersion);
1171
- await instance.executeFridaScript(
1172
- "/data/corellium/frida/scripts/hook_native.js",
1173
- );
1174
- await new Promise((resolve) => setTimeout(resolve, 5000));
1175
-
1176
- let fridaConsole = await instance.fridaConsole();
1177
- let fridaOutput = await new Promise((resolve) => {
1178
- const w = new stream.Writable({
1179
- write(chunk, _encoding, _callback) {
1180
- fridaConsole.socket.close();
1181
- resolve(chunk);
1182
- },
1183
- });
1184
- fridaConsole.pipe(w);
1185
- });
1186
- assert(fridaOutput.toString().includes("Hook android_log_write()"));
1187
- });
1188
-
1189
- it("can detach frida", async function () {
1190
- await agent.runFridaKill();
1191
- });
1192
- } else {
1193
- it("cannot attach frida", async function () {
1194
- assert.rejects(() => agent.runFrida(1, "launchd"));
1195
- });
1196
-
1197
- it("cannot get frida scripts", async function () {
1198
- assert.rejects(() => agent.stat("/data/corellium/frida/scripts/"));
1199
- });
1200
-
1201
- it.skip("cannot execute script", async function () {
1202
- const instance = instanceMap.get(instanceVersion);
1203
- await instance.executeFridaScript(
1204
- "/data/corellium/frida/scripts/hook_native.js",
1205
- );
1206
- });
1207
-
1208
- it("cannot detach frida", async function () {
1209
- assert.rejects(() => agent.runFridaKill());
1210
- });
1211
- }
1212
- });
1213
- });
1214
-
1215
- describe(`app clean up ${instanceVersion}`, function () {
1216
- it("can uninstall an app", async function () {
1217
- assert(
1218
- installSuccess,
1219
- "This test cannot run because application installation failed",
1220
- );
1221
-
1222
- let lastStatus;
1223
- try {
1224
- await agent.uninstall("com.corellium.test.app", (_progress, status) => {
1225
- lastStatus = status;
1226
- });
1227
- } catch (err) {
1228
- assert(
1229
- false,
1230
- `Error uninstalling app during '${lastStatus} stage: ${err}`,
1231
- );
1232
- }
1233
- });
1234
- });
1235
-
1236
- describe(`CoreTrace ${instanceVersion}`, function () {
1237
- let pid = 0;
1238
-
1239
- it("can get thread list", async function () {
1240
- const instance = instanceMap.get(instanceVersion);
1241
- let threadList = await instance.getCoreTraceThreadList();
1242
- for (let p of threadList) {
1243
- if (p.name.includes("corelliumd")) {
1244
- pid = p.pid;
1245
- break;
1246
- }
1247
- }
1248
- assert(pid != 0);
1249
- });
1250
-
1251
- it("can set filter", async function () {
1252
- const instance = instanceMap.get(instanceVersion);
1253
- await instance.setCoreTraceFilter([pid], [], []);
1254
- });
1255
-
1256
- it("can start capture", async function () {
1257
- const instance = instanceMap.get(instanceVersion);
1258
- await instance.startCoreTrace();
1259
- });
1260
-
1261
- it.skip("can capture data", async function () {
1262
- let statTarget = "";
1263
- const instance = instanceMap.get(instanceVersion);
1264
- if (CONFIGURATION.testFlavor === "ranchu")
1265
- statTarget = "/data/corellium/frida/scripts/";
1266
- else statTarget = "/var/mobile/Media";
1267
- await agent.stat(statTarget);
1268
- await new Promise((resolve) => setTimeout(resolve, 9000));
1269
- const log = await instance.downloadCoreTraceLog();
1270
- assert(log !== undefined);
1271
- assert(log.toString().includes(":corelliumd"));
1272
- });
1273
-
1274
- it("can stop capture", async function () {
1275
- const instance = instanceMap.get(instanceVersion);
1276
- await instance.stopCoreTrace();
1277
- });
1278
-
1279
- it("can clear filter", async function () {
1280
- const instance = instanceMap.get(instanceVersion);
1281
- await instance.clearCoreTraceFilter();
1282
- });
1283
-
1284
- it("can clear log", async function () {
1285
- const instance = instanceMap.get(instanceVersion);
1286
- await instance.clearCoreTraceLog();
1287
- });
1288
- });
1289
- });
1290
- });
1291
- });
1292
- });