Advertisement
lemb

Untitled

Jan 12th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.73 KB | None | 0 0
  1. Running "test:server" (test) task
  2. (node:6413) DeprecationWarning: sys is deprecated. Use util instead.
  3.  
  4. Running "env:test" (env) task
  5.  
  6. Running "eslint:all" (eslint) task
  7.  
  8. Running "jsonlint:all" (jsonlint) task
  9. >> 62 files lint free.
  10.  
  11. Running "mochacli:server" (mochacli) task
  12. Adding Array.prototype.tap for tests
  13. Stubbing agenda
  14. Swagger: skipping unknown type "GeoJSON.Point".
  15. Swagger: skipping unknown type "GeoJSON.Polygon".
  16. Stubbing Email
  17.  
  18.  
  19. Agenda ready
  20. Forms mounted: 0 success, 0 failures
  21. Boot sequence completed
  22. agenda
  23. ✓ should be available via app.get("agendaInstance")
  24.  
  25. Account
  26. API
  27. POST /Accounts/login
  28. Thu, 12 Jan 2017 17:17:39 GMT loopback deprecated loopback#context middleware is deprecated. See https://docs.strongloop.com/display/APIC/Using%20current%20context for more details. at node_modules/loopback/server/middleware/rest.js:60:32
  29. ✓ should login (238ms)
  30. ✓ should include user and its resource when requested (73ms)
  31. ✓ should deal with capitalized email (43ms)
  32. Through geotab auth
  33. ✓ should include user even if geotab auth is successful (73ms)
  34. protect higher level accounts
  35. POST /Accounts
  36. ✓ As "Admin", create "Supervisor" should work
  37. ✓ As "contractor", create "Supervisor" should fail
  38. ✓ As "Project Manager", create "Project Manager" should work
  39. PUT /Accounts/:id
  40. 1) As "Admin", update "Supervisor" to "Admin" should work
  41. 2) As "Supervisor", update "" to "Foreman" should work
  42. 3) As "Supervisor", update "Foreman" to "Project Manager" should fail
  43. ✓ As "contractor", update "Supervisor" to "Foreman" should fail
  44. ✓ As "contractor", update self to "Foreman" should fail
  45. 4) As "Supervisor", updating a "Foreman" should work
  46. 5) As "Supervisor", updating a "Project Manager" should fail
  47. DELETE /Accounts/:id
  48. 6) As "Admin", delete "Supervisor" should work
  49. 7) As "Supervisor", delete "Project Manager" should fail
  50.  
  51. AerialInspection
  52. API
  53. Swagger: skipping unknown type "GeoJSON.Point".
  54. Swagger: skipping unknown type "GeoJSON.Polygon".
  55. GET
  56. A form was submitted without an installation mapped to the user
  57. Error sending defecting notification TypeError: Cannot read property 'id' of null
  58. at Role.findOne.then.role (/home/lemb/Projects/wyzeio/common/models/account.js:463:25)
  59. at /home/lemb/Projects/wyzeio/node_modules/async-listener/glue.js:188:31
  60. at _combinedTickCallback (internal/process/next_tick.js:67:7)
  61. at process._tickDomainCallback [as _tickCallback] (internal/process/next_tick.js:122:9)
  62. From previous event:
  63. at Function.Account.findAdmins (/home/lemb/Projects/wyzeio/common/models/account.js:468:8)
  64. at ModelConstructor.findAccountToEmailTo (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:71:10)
  65. at ModelConstructor.sendDefectEmail (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:58:16)
  66. at AerialInspection.afterRemote (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:17:14)
  67. at Function.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback/lib/model.js:216:18)
  68. at execStack (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:485:26)
  69. at RemoteObjects.execHooks (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:497:10)
  70. at phaseAfterInvoke (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:661:10)
  71. at runHandler (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/lib/phase.js:135:5)
  72. at iterate (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)
  73. at Object.async.eachSeries (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:162:9)
  74. at runHandlers (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/lib/phase.js:144:13)
  75. at iterate (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)
  76. at /home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:157:25
  77. at /home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:154:25
  78. at /home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:656:7
  79. at /home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/http-context.js:397:7
  80. at callback (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/shared-method.js:253:5)
  81. at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:377:19
  82. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  83. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  84. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  85. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  86. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  87. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  88. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:121:5)
  89. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  90. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  91. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  92. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  93. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  94. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  95. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  96. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  97. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  98. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  99. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  100. at ModelConstructor.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:376:23)
  101. at ModelConstructor.next (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/hooks.js:81:12)
  102. at ModelConstructor.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:364:26)
  103. at ModelConstructor.next (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/hooks.js:81:12)
  104. at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:363:22
  105. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  106. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  107. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  108. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  109. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  110. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  111. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:121:5)
  112. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  113. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  114. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  115. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  116. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  117. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  118. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  119. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  120. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  121. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  122. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  123. at createCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:353:17)
  124. at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/lib/mongodb.js:346:7
  125. at /home/lemb/Projects/wyzeio/node_modules/async-listener/glue.js:188:31
  126. at _combinedTickCallback (internal/process/next_tick.js:67:7)
  127. at process._tickDomainCallback [as _tickCallback] (internal/process/next_tick.js:122:9)
  128. ✓ should return the AerialInspections (224ms)
  129. a form without defects
  130. A form was submitted without an installation mapped to the user
  131. ✓ should not send an email (68ms)
  132. when a form is submitted with defects
  133. A form was submitted without an installation mapped to the user
  134. Error sending defecting notification TypeError: Cannot read property 'id' of null
  135. at Role.findOne.then.role (/home/lemb/Projects/wyzeio/common/models/account.js:463:25)
  136. at /home/lemb/Projects/wyzeio/node_modules/async-listener/glue.js:188:31
  137. at _combinedTickCallback (internal/process/next_tick.js:67:7)
  138. at process._tickDomainCallback [as _tickCallback] (internal/process/next_tick.js:122:9)
  139. From previous event:
  140. at Function.Account.findAdmins (/home/lemb/Projects/wyzeio/common/models/account.js:468:8)
  141. at ModelConstructor.findAccountToEmailTo (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:71:10)
  142. at ModelConstructor.sendDefectEmail (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:58:16)
  143. at AerialInspection.afterRemote (/home/lemb/Projects/wyzeio/common/forms/aerial-inspection.js:17:14)
  144. at Function.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback/lib/model.js:216:18)
  145. at execStack (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:485:26)
  146. at RemoteObjects.execHooks (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:497:10)
  147. at phaseAfterInvoke (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:661:10)
  148. at runHandler (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/lib/phase.js:135:5)
  149. at iterate (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)
  150. at Object.async.eachSeries (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:162:9)
  151. at runHandlers (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/lib/phase.js:144:13)
  152. at iterate (/home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)
  153. at /home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:157:25
  154. at /home/lemb/Projects/wyzeio/node_modules/loopback-phase/node_modules/async/lib/async.js:154:25
  155. at /home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/remote-objects.js:656:7
  156. at /home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/http-context.js:397:7
  157. at callback (/home/lemb/Projects/wyzeio/node_modules/strong-remoting/lib/shared-method.js:253:5)
  158. at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:377:19
  159. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  160. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  161. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  162. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  163. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  164. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  165. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:121:5)
  166. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  167. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  168. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  169. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  170. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  171. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  172. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  173. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  174. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  175. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  176. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  177. at ModelConstructor.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:376:23)
  178. at ModelConstructor.next (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/hooks.js:81:12)
  179. at ModelConstructor.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:364:26)
  180. at ModelConstructor.next (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/hooks.js:81:12)
  181. at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:363:22
  182. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  183. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  184. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  185. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  186. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  187. at doNotify (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:98:49)
  188. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:121:5)
  189. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  190. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  191. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  192. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  193. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  194. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  195. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  196. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  197. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  198. at Function.ObserverMixin._notifyBaseObservers (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:119:15)
  199. at Function.ObserverMixin.notifyObserversOf (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/observer.js:96:8)
  200. at createCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:353:17)
  201. at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/lib/mongodb.js:346:7
  202. at /home/lemb/Projects/wyzeio/node_modules/async-listener/glue.js:188:31
  203. at _combinedTickCallback (internal/process/next_tick.js:67:7)
  204. at process._tickDomainCallback [as _tickCallback] (internal/process/next_tick.js:122:9)
  205. 8) should send an email
  206.  
  207. Device
  208. API
  209. POST
  210. 9) "before all" hook
  211. PUT
  212. Error? { name: 'Error',
  213. status: 403,
  214. message: 'Access Denied',
  215. statusCode: 403,
  216. code: 'ACCESS_DENIED',
  217. stack: 'Error: Access Denied\n at /home/lemb/Projects/wyzeio/node_modules/loopback/lib/application.js:399:21\n at /home/lemb/Projects/wyzeio/node_modules/loopback/lib/model.js:322:7\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/acl.js:472:23\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:3694:9\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:356:16\n at iteratorCallback (/home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:936:13)\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:840:16\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:3691:13\n at apply (/home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:21:25)\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:56:12\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/acl.js:454:17\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/role.js:342:23\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:2011:62\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:1939:11\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:396:17\n at async.each (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:153:20)\n at _asyncMap (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:390:13)\n at Object.map (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:361:23)\n at allCb (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:1867:15)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/lib/mongodb.js:895:9\n at handleCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/utils.js:96:12)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/cursor.js:839:16\n at handleCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:159:5)\n at setCursorNotified (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:511:3)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:582:16\n at queryCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:220:18)\n at /home/lemb/Projects/wyzeio/node_modules/continuation-local-storage/context.js:84:17\n at bound (domain.js:280:14)\n at runBound (domain.js:293:12)\n at Callbacks.emit (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/topologies/server.js:119:3)\n at Connection.messageHandler (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/topologies/server.js:397:23)\n at Socket.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/connection/connection.js:302:22)\n at emitOne (events.js:96:13)\n at Socket.emit (events.js:188:7)\n at readableAddChunk (_stream_readable.js:176:18)\n at Socket.Readable.push (_stream_readable.js:134:10)\n at TCP.onread (net.js:548:20)' }
  218. 10) should create a device
  219. Error? { name: 'Error',
  220. status: 403,
  221. message: 'Access Denied',
  222. statusCode: 403,
  223. code: 'ACCESS_DENIED',
  224. stack: 'Error: Access Denied\n at /home/lemb/Projects/wyzeio/node_modules/loopback/lib/application.js:399:21\n at /home/lemb/Projects/wyzeio/node_modules/loopback/lib/model.js:322:7\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/acl.js:472:23\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:3694:9\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:356:16\n at iteratorCallback (/home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:936:13)\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:840:16\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:3691:13\n at apply (/home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:21:25)\n at /home/lemb/Projects/wyzeio/node_modules/loopback/node_modules/async/dist/async.js:56:12\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/acl.js:454:17\n at /home/lemb/Projects/wyzeio/node_modules/loopback/common/models/role.js:342:23\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:2011:62\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:1939:11\n at /home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:396:17\n at async.each (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:153:20)\n at _asyncMap (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:390:13)\n at Object.map (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/node_modules/async/lib/async.js:361:23)\n at allCb (/home/lemb/Projects/wyzeio/node_modules/loopback-datasource-juggler/lib/dao.js:1867:15)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/lib/mongodb.js:895:9\n at handleCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/utils.js:96:12)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/cursor.js:839:16\n at handleCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:159:5)\n at setCursorNotified (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:511:3)\n at /home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:582:16\n at queryCallback (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/cursor.js:220:18)\n at /home/lemb/Projects/wyzeio/node_modules/continuation-local-storage/context.js:84:17\n at bound (domain.js:280:14)\n at runBound (domain.js:293:12)\n at Callbacks.emit (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/topologies/server.js:119:3)\n at Connection.messageHandler (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/topologies/server.js:397:23)\n at Socket.<anonymous> (/home/lemb/Projects/wyzeio/node_modules/loopback-connector-mongodb/node_modules/mongodb-core/lib/connection/connection.js:302:22)\n at emitOne (events.js:96:13)\n at Socket.emit (events.js:188:7)\n at readableAddChunk (_stream_readable.js:176:18)\n at Socket.Readable.push (_stream_readable.js:134:10)\n at TCP.onread (net.js:548:20)' }
  225. 11) should upsert when the device already exists
  226. when attempting to use another organization's device (macAddress)
  227. 12) POST / should fail with 409
  228. 13) PUT / should fail with 409
  229. 14) PUT /:id should fail with 404 (because you can't see /:id)
  230. PUT resource
  231. 15) should update the device resourceId
  232. GET include resource
  233. ✓ should retrieve a single resource
  234. Devices/:id
  235. ✓ should allow GET
  236. 16) should allow DELETE
  237. 17) should allow PUT for resourceId
  238. #type validation
  239. 18) shouldn't allow changing the type on PUT
  240. Devices/:id/getOdometer
  241. >>>> Stubbed geotab connector
  242. ✓ should return the odometer reading of the device (44ms)
  243.  
  244. Event
  245. API
  246. ✓ PUT / should 404
  247. ✓ GET / should 404
  248. ✓ GET /findOne should 404
  249. ✓ GET /count should 404
  250. ✓ POST /update should 404
  251. ✓ GET /:id should 404
  252. ✓ DELETE /:id should 404
  253. ✓ PUT /:id should 404
  254. ✓ GET /:id/exists should 404
  255. ✓ POST /change-stream should 404
  256. POST
  257. ✓ should not crash on invalid coordinates
  258. ✓ should return an object `{id:""}` (43ms)
  259. "gps" event
  260. Apply completed 1
  261. ✓ should create an event
  262. "beacon-scan" event
  263. Apply completed 1
  264. ✓ should create an event
  265. ✓ should have updated the devices
  266. ✓ OLD >> should have updated the devices
  267. two scanner reporting SOS
  268. accessToken >> { ttl: 1209600,
  269. created: 2017-01-12T17:17:44.241Z,
  270. userId: 5877ba381ebfbb23196c254c,
  271. resourceId: '_5877ba381ebfbb23196c254d',
  272. organizationId: 'primary',
  273. id: '19684649584988' }
  274. Alert created without a scanner. macAddress: AAAAAAAA0123
  275. accessToken >> { ttl: 1209600,
  276. created: 2017-01-12T17:17:44.241Z,
  277. userId: 5877ba381ebfbb23196c254c,
  278. resourceId: '_5877ba381ebfbb23196c254d',
  279. organizationId: 'primary',
  280. id: '19684649584988' }
  281. ✓ should only create a single alert (1124ms)
  282.  
  283. FormInstance
  284. API (/MyTestForms)
  285. No form module for my-test_form.js
  286. Swagger: skipping unknown type "GeoJSON.Point".
  287. Swagger: skipping unknown type "GeoJSON.Polygon".
  288. GET
  289. ✓ should expose MyTestForm instances (67ms)
  290. ✓ should expose MyTestForm by id
  291. POST
  292. A form was submitted without an installation mapped to the user
  293. ✓ should create an instance
  294. ✓ should set the submitter as the currently logged in user
  295.  
  296. FormTemplate
  297. API
  298. GET
  299. ✓ should expose FormTemplates across organizations
  300. ✓ should expose FormTemplates by id
  301.  
  302. Installations
  303. API
  304. POST
  305. ✓ should create an installation
  306. ✓ should create an associated device
  307.  
  308. Job
  309. API (/Jobs/:id/worklogs)
  310. ✓ should be able to get the job
  311. 19) should be able to create
  312.  
  313. Job
  314. API
  315. roles
  316. when logged in as foreman
  317. and not filtering
  318. ✓ should return all visible jobs
  319. and filtering on an acceptable projectId
  320. ✓ should return all jobs of the project
  321. and filtering on a projectId I don't have access too
  322. ✓ should not return any jobs
  323. and filtering on multiple projectIds
  324. ✓ should return jobs matching both filter and the projects subset
  325. and filtering on something else
  326. ✓ should only return job part of my projects (39ms)
  327. and counting jobs
  328. ✓ should return the count for job part of my projects
  329. and getting on /:id
  330. ✓ should return the job if in my projects
  331. ✓ should not return the job if not member of the project
  332. when logged in as admin (membership irrelevant)
  333. and not filtering
  334. 20) should return all jobs
  335. and filtering on an acceptable projectId
  336. 21) should return all jobs of the project
  337. and filtering on multiple projectIds
  338. 22) should return jobs matching both filter and the projects subset
  339. and filtering on something else
  340. 23) should return all matching jobs
  341. and counting jobs
  342. 24) should return the count all jobs matching
  343. and getting on /:id
  344. 25) should return the job if in my projects
  345. 26) should not return the job even if not member of the project
  346. /:id
  347. - should work as model
  348. - should return the job
  349.  
  350. Presence
  351. API
  352. 27) requires a resourceId
  353. 28) requires a start
  354. 29) validates that end is greater than start
  355. 30) creates a presence for the specifed resource
  356. approvals
  357. ✓ should allow retrieiving the list of approvals
  358. ✓ should allow retrieiving the presences
  359. given a presence not yet approved
  360. ✓ should not be editable by regular users
  361. ✓ should not be approvable by regular users
  362. 31) should be L2 approvable by all Supervisors
  363. 32) should be L2 approvable by all Supervisors
  364. 33) should be L2 approvable by admin
  365. 34) should be editable by admin
  366. if the resource has a manager ("reportsTo")
  367. ✓ should not allow other foreman to approve
  368. 35) should allow the manager to approve
  369. if the resource has no manager ("reportsTo")
  370. 36) should allow other foreman to approve
  371. given a presence approved by a Foreman (L1)
  372. ✓ should not be approvable by other Foreman
  373. ✓ should not be editable by other Foreman
  374. ✓ should not be approvable by the approver
  375. 37) should be editable by the approver but update their approval date
  376. 38) should be approvable by supervisor/admin
  377. 39) should be editable by supervisor/admin but void the level 1 approval
  378. given a presence fully approved (L1 + L2)
  379. ✓ should not be approvable by the L1 approver
  380. ✓ should not be editable by the L1 approver
  381. ✓ should not be approvable by other L1 approver
  382. ✓ should not be editable by other approver
  383. ✓ should not be approvable by the L2 approver
  384. 40) should be editable by the L2 approver
  385. given a presence approved by a supervisor only (L2)
  386. ✓ should not be approvable by L1 approvers
  387. ✓ should not be editable by the L1 approver
  388. ✓ should not be approvable by other L2 approver
  389. ✓ should not be editable by other L2 approver
  390. ✓ should not be approvable by the L2 approver
  391. 41) should be editable by the L2 approver
  392.  
  393. Project
  394. API
  395. when logged in as admin or project manager
  396. 42) should return all project
  397. 43) should return all project
  398. when logged in as foreman or supervisor
  399. ✓ should return projects that I'm a member of
  400. ✓ should return projects that I'm a member of
  401. includes
  402. ✓ should include jobs when required (42ms)
  403. ✓ should include members when requested (47ms)
  404. ✓ should include jobs, members, and members' resources when requested (49ms)
  405. backward compat for mobile
  406. ✓ should not break the previous mobile (67ms)
  407.  
  408. Resource
  409. API
  410. strict schema
  411. 44) POST on /resources should fail with bad property
  412. 45) PUT on /resources/:id should fail with bad property
  413. /resources/:id
  414. given the resource comes from geotab
  415. 46) PUT should fail with 405
  416. 47) DELETE should fail with 405
  417. GET
  418. ✓ should return it
  419. given a resource of type "human"
  420. 48) PUT should update the resource
  421. filters
  422. ✓ should support fields and include filters simultaneously
  423.  
  424. TenantOwned
  425. API
  426. /Owneds
  427. Swagger: skipping unknown type "GeoJSON.Point".
  428. Swagger: skipping unknown type "GeoJSON.Polygon".
  429. ✓ should inject the current organizationId on creation (81ms)
  430. ✓ should 401 if not logged in
  431. When not authenticated
  432. ✓ GET /JobCodes should 401 (find)
  433. ✓ POST /JobCodes should 401 (create)
  434. ✓ PUT /JobCodes should 404 (upsert)
  435. ✓ GET /JobCodes/count should 401 (count)
  436. ✓ GET /JobCodes/findOne should 401 (findOne)
  437. ✓ GET /JobCodes/:id should 401 (findById)
  438. ✓ DELETE /JobCodes/:id should 401 (deleteById)
  439. ✓ PUT /JobCodes/:id should 401 (prototype.updateAttributes)
  440. ✓ GET /JobCodes/:id/exists should 401 (exists)
  441. When authenticated to another organization as an admin
  442. ✓ GET /JobCodes should 200 (find)
  443. 49) POST /JobCodes should 200 (create)
  444. ✓ PUT /JobCodes should 404 (upsert)
  445. ✓ GET /JobCodes/count should 200 (count)
  446. ✓ GET /JobCodes/findOne should 404 (findOne)
  447. ✓ GET /JobCodes/:id should 404 (findById)
  448. 50) DELETE /JobCodes/:id should 404 (deleteById)
  449. 51) PUT /JobCodes/:id should 404 (prototype.updateAttributes)
  450. ✓ GET /JobCodes/:id/exists should 200 (exists)
  451. When authenticated to a organization as an admin
  452. ✓ GET /JobCodes should 200 (find)
  453. 52) POST /JobCodes should 200 (create)
  454. ✓ PUT /JobCodes should 404 (upsert)
  455. ✓ GET /JobCodes/count should 200 (count)
  456. ✓ GET /JobCodes/findOne should 200 (findOne)
  457. ✓ GET /JobCodes/:id should 200 (findById)
  458. 53) DELETE /JobCodes/:id should 200 (deleteById)
  459. 54) PUT /JobCodes/:id should 200 (prototype.updateAttributes)
  460. ✓ GET /JobCodes/:id/exists should 200 (exists)
  461. Embedded model update
  462. 55) should support organizationId injection in embedded model update
  463.  
  464. WorkLog
  465. API
  466. ✓ should require a jobId
  467. ✓ should require a resourceId
  468. changing job
  469. 56) should be possible to update the "jobId" only
  470. approvals
  471. ✓ should allow retrieiving the list of approvals
  472. ✓ should allow retrieiving the worklogs (83ms)
  473. given a worklog not yet approved
  474. ✓ should not be editable by regular users
  475. ✓ should not be approvable by regular users
  476. 57) should be L2 approvable by all Supervisors
  477. 58) should be L2 approvable by all Supervisors
  478. 59) should be L2 approvable by admin
  479. 60) should be editable by admin
  480. if the resource has a manager ("reportsTo")
  481. ✓ should not allow other foreman to approve
  482. 61) should allow the manager to approve
  483. if the resource has no manager ("reportsTo")
  484. 62) should allow other foreman to approve
  485. given a worklog approved by a Foreman (L1)
  486. ✓ should not be approvable by other Foreman
  487. ✓ should not be editable by other Foreman
  488. ✓ should not be approvable by the approver
  489. 63) should be editable by the approver but update their approval date
  490. 64) should be approvable by supervisor/admin
  491. 65) should be editable by supervisor/admin but void the level 1 approval
  492. given a worklog fully approved (L1 + L2)
  493. ✓ should not be approvable by the L1 approver
  494. ✓ should not be editable by the L1 approver
  495. ✓ should not be approvable by other L1 approver
  496. ✓ should not be editable by other approver
  497. ✓ should not be approvable by the L2 approver
  498. 66) should be editable by the L2 approver
  499. given a worklog approved by a supervisor only (L2)
  500. ✓ should not be approvable by L1 approvers
  501. ✓ should not be editable by the L1 approver
  502. ✓ should not be approvable by other L2 approver
  503. ✓ should not be editable by other L2 approver
  504. ✓ should not be approvable by the L2 approver
  505. 67) should be editable by the L2 approver
  506. backward compatibility using firstApprovalById
  507. 68) should support approving with firstApprovalById
  508. Change job and project
  509. 69) should allow changing the job of the worklog and apply correct projectId
  510. UI Bug
  511. 70) should work when doing it twice in a row
  512.  
  513. Bootstrap (Setup)
  514. chai.should
  515. ✓ should be available
  516. chai-datetime
  517. ✓ should be available
  518. sinon & sinon-chai
  519. ✓ should be able to spy
  520. ✓ should be able to catch errors
  521. chai-as-promised
  522. ✓ should add .become and eventually
  523.  
  524. AerialInspection
  525. Forms
  526. #hasDefects
  527. ✓ should be false when there are no defects
  528. ✓ should be true when there are defects
  529.  
  530. geojson
  531. position
  532. ✓ should return a position equivvalent to the one its invoked with
  533. ✓ should validate longitude and latitude as number
  534. ✓ should validate longitude is between [-180, 180]
  535. ✓ should validate latitude is between [-90, 90]
  536. ✓ should have a toGeoPoint method that returns {lng, lat}
  537. Point
  538. ✓ should return a Point instance
  539. ✓ should support instantiation without new
  540. ✓ should accept a Point
  541. ✓ should accept a position as argument
  542. ✓ should default to type "Point"
  543. ✓ should fail when passing type other than "Point"
  544. ✓ should have a toGeoPoint method that returns {lng, lat}
  545. MultiPoint
  546. ✓ should work when the array is correctly formated
  547. ✓ should required a length of 1 position
  548. ✓ should use position
  549. Polygon
  550. ✓ should work when the array is correctly formated
  551. ✓ should fail when a ring is not closed
  552. ✓ should fail when a ring has less than 4 positions
  553. MultiLineString
  554. ✓ should work when the array is correctly formated
  555. MultiPolygon
  556. ✓ should work when the array is correctly formated
  557. JSON serialization
  558. ✓ should only include "type" and "coordinates"
  559.  
  560. Duration
  561. Swagger: skipping unknown type "GeoJSON.Point".
  562. Swagger: skipping unknown type "GeoJSON.Polygon".
  563. properties
  564. ✓ should have Duration properties
  565. computed third value
  566. ✓ should compute the duration when settings start and end
  567. ✓ should compute the start when settings duration and end
  568. ✓ should compute the end when settings start and duration
  569. validation
  570. ✓ should be valid
  571. internal consistency
  572. ✓ should not be valid when start + duration !== end
  573. duration as positive int
  574. ✓ should be valid with number 1
  575. ✓ should be valid with number 45
  576. ✓ should not be valid with number -2
  577. ✓ should not be valid with number 3.2
  578. ✓ should not be valid with number 0
  579. ✓ should not be valid with object [object Object]
  580. ✓ should not be valid with string Jim
  581. require at least 2 properties
  582. ✓ should be valid with values for start,duration,end
  583. ✓ should be valid with values for start,end
  584. ✓ should be valid with values for start,duration
  585. ✓ should be valid with values for duration,end
  586. ✓ should not be valid with values for start
  587. ✓ should not be valid with values for end
  588. ✓ should not be valid with values for duration
  589. ✓ should not be valid with values for nothing
  590.  
  591. EnumValidationMixin
  592. ✓ should be valid when value is in the enum
  593. ✓ should be invalid when value is outside the enum
  594.  
  595. Located
  596. mixin
  597. Swagger: skipping unknown type "GeoJSON.Point".
  598. properties
  599. Swagger: skipping unknown type "GeoJSON.Polygon".
  600. ✓ should have a "location" property
  601. ✓ should have a "locationUpdatedAt" property
  602. #makeLocationUpdate(location, {timestamp, centerWithCurrent})
  603. ✓ should throw when no location
  604. given no options:
  605. ✓ should return an update matching the location
  606. given no options.timestamp
  607. ✓ should return an update matching the location when {centerWithCurrent:false}
  608. - [REMOVED] (until proper location averaging) should return an update that is the center of matching the location when {centerWithCurrent:true}
  609. ✓ should return an update matching the location when located.location is null
  610. given options.timestamp
  611. ✓ should return null when location is expired
  612. ✓ should return an update matching location when located.location is expired
  613. - [REMOVED] (until proper location averaging) should return an update at the center when both lcoations are valid and centerWithCurrent is true
  614.  
  615. mixins
  616. ReadOnly
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement