@powerhousedao/reactor-api 6.0.0-dev.23 → 6.0.0-dev.230

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/README.md +6 -0
  2. package/dist/index.d.mts +3039 -0
  3. package/dist/index.d.mts.map +1 -0
  4. package/dist/index.mjs +6691 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/src/packages/https-hooks.d.mts +39 -0
  7. package/dist/src/packages/https-hooks.d.mts.map +1 -0
  8. package/dist/src/packages/https-hooks.mjs +79 -0
  9. package/dist/src/packages/https-hooks.mjs.map +1 -0
  10. package/dist/src/packages/vite-loader.d.mts +29 -0
  11. package/dist/src/packages/vite-loader.d.mts.map +1 -0
  12. package/dist/src/packages/vite-loader.mjs +142 -0
  13. package/dist/src/packages/vite-loader.mjs.map +1 -0
  14. package/dist/types-Do4QTfT3.d.mts +37 -0
  15. package/dist/types-Do4QTfT3.d.mts.map +1 -0
  16. package/dist/utils-CHCRSWig.mjs +286 -0
  17. package/dist/utils-CHCRSWig.mjs.map +1 -0
  18. package/package.json +75 -64
  19. package/dist/codegen.d.ts +0 -4
  20. package/dist/codegen.d.ts.map +0 -1
  21. package/dist/codegen.js +0 -38
  22. package/dist/codegen.js.map +0 -1
  23. package/dist/index.d.ts +0 -14
  24. package/dist/index.d.ts.map +0 -1
  25. package/dist/index.js +0 -14
  26. package/dist/index.js.map +0 -1
  27. package/dist/src/config.d.ts +0 -7
  28. package/dist/src/config.d.ts.map +0 -1
  29. package/dist/src/config.js +0 -10
  30. package/dist/src/config.js.map +0 -1
  31. package/dist/src/graphql/analytics-subgraph.d.ts +0 -14
  32. package/dist/src/graphql/analytics-subgraph.d.ts.map +0 -1
  33. package/dist/src/graphql/analytics-subgraph.js +0 -26
  34. package/dist/src/graphql/analytics-subgraph.js.map +0 -1
  35. package/dist/src/graphql/auth/index.d.ts +0 -2
  36. package/dist/src/graphql/auth/index.d.ts.map +0 -1
  37. package/dist/src/graphql/auth/index.js +0 -2
  38. package/dist/src/graphql/auth/index.js.map +0 -1
  39. package/dist/src/graphql/auth/resolvers.d.ts +0 -149
  40. package/dist/src/graphql/auth/resolvers.d.ts.map +0 -1
  41. package/dist/src/graphql/auth/resolvers.js +0 -173
  42. package/dist/src/graphql/auth/resolvers.js.map +0 -1
  43. package/dist/src/graphql/auth/schema.graphql +0 -173
  44. package/dist/src/graphql/auth/subgraph.d.ts +0 -177
  45. package/dist/src/graphql/auth/subgraph.d.ts.map +0 -1
  46. package/dist/src/graphql/auth/subgraph.js +0 -340
  47. package/dist/src/graphql/auth/subgraph.js.map +0 -1
  48. package/dist/src/graphql/base-subgraph.d.ts +0 -20
  49. package/dist/src/graphql/base-subgraph.d.ts.map +0 -1
  50. package/dist/src/graphql/base-subgraph.js +0 -34
  51. package/dist/src/graphql/base-subgraph.js.map +0 -1
  52. package/dist/src/graphql/document-model-subgraph.d.ts +0 -51
  53. package/dist/src/graphql/document-model-subgraph.d.ts.map +0 -1
  54. package/dist/src/graphql/document-model-subgraph.js +0 -104
  55. package/dist/src/graphql/document-model-subgraph.js.map +0 -1
  56. package/dist/src/graphql/drive-subgraph.d.ts +0 -25
  57. package/dist/src/graphql/drive-subgraph.d.ts.map +0 -1
  58. package/dist/src/graphql/drive-subgraph.js +0 -487
  59. package/dist/src/graphql/drive-subgraph.js.map +0 -1
  60. package/dist/src/graphql/graphql-manager.d.ts +0 -47
  61. package/dist/src/graphql/graphql-manager.d.ts.map +0 -1
  62. package/dist/src/graphql/graphql-manager.js +0 -433
  63. package/dist/src/graphql/graphql-manager.js.map +0 -1
  64. package/dist/src/graphql/index.d.ts +0 -9
  65. package/dist/src/graphql/index.d.ts.map +0 -1
  66. package/dist/src/graphql/index.js +0 -9
  67. package/dist/src/graphql/index.js.map +0 -1
  68. package/dist/src/graphql/playground.d.ts +0 -2
  69. package/dist/src/graphql/playground.d.ts.map +0 -1
  70. package/dist/src/graphql/playground.js +0 -74
  71. package/dist/src/graphql/playground.js.map +0 -1
  72. package/dist/src/graphql/reactor/adapters.d.ts +0 -62
  73. package/dist/src/graphql/reactor/adapters.d.ts.map +0 -1
  74. package/dist/src/graphql/reactor/adapters.js +0 -270
  75. package/dist/src/graphql/reactor/adapters.js.map +0 -1
  76. package/dist/src/graphql/reactor/factory.d.ts +0 -84
  77. package/dist/src/graphql/reactor/factory.d.ts.map +0 -1
  78. package/dist/src/graphql/reactor/factory.js +0 -7
  79. package/dist/src/graphql/reactor/factory.js.map +0 -1
  80. package/dist/src/graphql/reactor/gen/graphql.d.ts +0 -1242
  81. package/dist/src/graphql/reactor/gen/graphql.d.ts.map +0 -1
  82. package/dist/src/graphql/reactor/gen/graphql.js +0 -496
  83. package/dist/src/graphql/reactor/gen/graphql.js.map +0 -1
  84. package/dist/src/graphql/reactor/index.d.ts +0 -4
  85. package/dist/src/graphql/reactor/index.d.ts.map +0 -1
  86. package/dist/src/graphql/reactor/index.js +0 -4
  87. package/dist/src/graphql/reactor/index.js.map +0 -1
  88. package/dist/src/graphql/reactor/operations.graphql +0 -253
  89. package/dist/src/graphql/reactor/pubsub.d.ts +0 -27
  90. package/dist/src/graphql/reactor/pubsub.d.ts.map +0 -1
  91. package/dist/src/graphql/reactor/pubsub.js +0 -93
  92. package/dist/src/graphql/reactor/pubsub.js.map +0 -1
  93. package/dist/src/graphql/reactor/requester.d.ts +0 -4
  94. package/dist/src/graphql/reactor/requester.d.ts.map +0 -1
  95. package/dist/src/graphql/reactor/requester.js +0 -22
  96. package/dist/src/graphql/reactor/requester.js.map +0 -1
  97. package/dist/src/graphql/reactor/requester.with-zod.d.ts +0 -4
  98. package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +0 -1
  99. package/dist/src/graphql/reactor/requester.with-zod.js +0 -53
  100. package/dist/src/graphql/reactor/requester.with-zod.js.map +0 -1
  101. package/dist/src/graphql/reactor/resolvers.d.ts +0 -175
  102. package/dist/src/graphql/reactor/resolvers.d.ts.map +0 -1
  103. package/dist/src/graphql/reactor/resolvers.js +0 -526
  104. package/dist/src/graphql/reactor/resolvers.js.map +0 -1
  105. package/dist/src/graphql/reactor/schema.graphql +0 -432
  106. package/dist/src/graphql/reactor/subgraph.d.ts +0 -47
  107. package/dist/src/graphql/reactor/subgraph.d.ts.map +0 -1
  108. package/dist/src/graphql/reactor/subgraph.js +0 -555
  109. package/dist/src/graphql/reactor/subgraph.js.map +0 -1
  110. package/dist/src/graphql/reactor/validation.d.ts +0 -102
  111. package/dist/src/graphql/reactor/validation.d.ts.map +0 -1
  112. package/dist/src/graphql/reactor/validation.js +0 -73
  113. package/dist/src/graphql/reactor/validation.js.map +0 -1
  114. package/dist/src/graphql/system/env/getters.d.ts +0 -2
  115. package/dist/src/graphql/system/env/getters.d.ts.map +0 -1
  116. package/dist/src/graphql/system/env/getters.js +0 -4
  117. package/dist/src/graphql/system/env/getters.js.map +0 -1
  118. package/dist/src/graphql/system/env/index.d.ts +0 -2
  119. package/dist/src/graphql/system/env/index.d.ts.map +0 -1
  120. package/dist/src/graphql/system/env/index.js +0 -5
  121. package/dist/src/graphql/system/env/index.js.map +0 -1
  122. package/dist/src/graphql/system/index.d.ts +0 -3
  123. package/dist/src/graphql/system/index.d.ts.map +0 -1
  124. package/dist/src/graphql/system/index.js +0 -3
  125. package/dist/src/graphql/system/index.js.map +0 -1
  126. package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
  127. package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
  128. package/dist/src/graphql/system/system-subgraph.js +0 -130
  129. package/dist/src/graphql/system/system-subgraph.js.map +0 -1
  130. package/dist/src/graphql/system/types.d.ts +0 -2
  131. package/dist/src/graphql/system/types.d.ts.map +0 -1
  132. package/dist/src/graphql/system/types.js +0 -2
  133. package/dist/src/graphql/system/types.js.map +0 -1
  134. package/dist/src/graphql/temp-hack-rwa-type-defs.d.ts +0 -57
  135. package/dist/src/graphql/temp-hack-rwa-type-defs.d.ts.map +0 -1
  136. package/dist/src/graphql/temp-hack-rwa-type-defs.js +0 -2
  137. package/dist/src/graphql/temp-hack-rwa-type-defs.js.map +0 -1
  138. package/dist/src/graphql/types.d.ts +0 -103
  139. package/dist/src/graphql/types.d.ts.map +0 -1
  140. package/dist/src/graphql/types.js +0 -2
  141. package/dist/src/graphql/types.js.map +0 -1
  142. package/dist/src/graphql/utils.d.ts +0 -26
  143. package/dist/src/graphql/utils.d.ts.map +0 -1
  144. package/dist/src/graphql/utils.js +0 -100
  145. package/dist/src/graphql/utils.js.map +0 -1
  146. package/dist/src/graphql/websocket.d.ts +0 -3
  147. package/dist/src/graphql/websocket.d.ts.map +0 -1
  148. package/dist/src/graphql/websocket.js +0 -15
  149. package/dist/src/graphql/websocket.js.map +0 -1
  150. package/dist/src/migrations/001_create_document_permissions.d.ts +0 -4
  151. package/dist/src/migrations/001_create_document_permissions.d.ts.map +0 -1
  152. package/dist/src/migrations/001_create_document_permissions.js +0 -91
  153. package/dist/src/migrations/001_create_document_permissions.js.map +0 -1
  154. package/dist/src/migrations/index.d.ts +0 -10
  155. package/dist/src/migrations/index.d.ts.map +0 -1
  156. package/dist/src/migrations/index.js +0 -56
  157. package/dist/src/migrations/index.js.map +0 -1
  158. package/dist/src/packages/import-loader.d.ts +0 -16
  159. package/dist/src/packages/import-loader.d.ts.map +0 -1
  160. package/dist/src/packages/import-loader.js +0 -61
  161. package/dist/src/packages/import-loader.js.map +0 -1
  162. package/dist/src/packages/import-resolver.d.ts +0 -5
  163. package/dist/src/packages/import-resolver.d.ts.map +0 -1
  164. package/dist/src/packages/import-resolver.js +0 -127
  165. package/dist/src/packages/import-resolver.js.map +0 -1
  166. package/dist/src/packages/package-manager.d.ts +0 -34
  167. package/dist/src/packages/package-manager.d.ts.map +0 -1
  168. package/dist/src/packages/package-manager.js +0 -213
  169. package/dist/src/packages/package-manager.js.map +0 -1
  170. package/dist/src/packages/types.d.ts +0 -39
  171. package/dist/src/packages/types.d.ts.map +0 -1
  172. package/dist/src/packages/types.js +0 -2
  173. package/dist/src/packages/types.js.map +0 -1
  174. package/dist/src/packages/util.d.ts +0 -27
  175. package/dist/src/packages/util.d.ts.map +0 -1
  176. package/dist/src/packages/util.js +0 -97
  177. package/dist/src/packages/util.js.map +0 -1
  178. package/dist/src/packages/vite-loader.d.ts +0 -24
  179. package/dist/src/packages/vite-loader.d.ts.map +0 -1
  180. package/dist/src/packages/vite-loader.js +0 -172
  181. package/dist/src/packages/vite-loader.js.map +0 -1
  182. package/dist/src/server.d.ts +0 -73
  183. package/dist/src/server.d.ts.map +0 -1
  184. package/dist/src/server.js +0 -431
  185. package/dist/src/server.js.map +0 -1
  186. package/dist/src/services/auth.service.d.ts +0 -68
  187. package/dist/src/services/auth.service.d.ts.map +0 -1
  188. package/dist/src/services/auth.service.js +0 -199
  189. package/dist/src/services/auth.service.js.map +0 -1
  190. package/dist/src/services/document-permission.service.d.ts +0 -201
  191. package/dist/src/services/document-permission.service.d.ts.map +0 -1
  192. package/dist/src/services/document-permission.service.js +0 -636
  193. package/dist/src/services/document-permission.service.js.map +0 -1
  194. package/dist/src/sync/types.d.ts +0 -10
  195. package/dist/src/sync/types.d.ts.map +0 -1
  196. package/dist/src/sync/types.js +0 -2
  197. package/dist/src/sync/types.js.map +0 -1
  198. package/dist/src/sync/utils.d.ts +0 -7
  199. package/dist/src/sync/utils.d.ts.map +0 -1
  200. package/dist/src/sync/utils.js +0 -78
  201. package/dist/src/sync/utils.js.map +0 -1
  202. package/dist/src/tracing.d.ts +0 -4
  203. package/dist/src/tracing.d.ts.map +0 -1
  204. package/dist/src/tracing.js +0 -122
  205. package/dist/src/tracing.js.map +0 -1
  206. package/dist/src/types.d.ts +0 -18
  207. package/dist/src/types.d.ts.map +0 -1
  208. package/dist/src/types.js +0 -2
  209. package/dist/src/types.js.map +0 -1
  210. package/dist/src/utils/auth.d.ts +0 -3
  211. package/dist/src/utils/auth.d.ts.map +0 -1
  212. package/dist/src/utils/auth.js +0 -19
  213. package/dist/src/utils/auth.js.map +0 -1
  214. package/dist/src/utils/create-schema.d.ts +0 -11
  215. package/dist/src/utils/create-schema.d.ts.map +0 -1
  216. package/dist/src/utils/create-schema.js +0 -322
  217. package/dist/src/utils/create-schema.js.map +0 -1
  218. package/dist/src/utils/db.d.ts +0 -74
  219. package/dist/src/utils/db.d.ts.map +0 -1
  220. package/dist/src/utils/db.js +0 -101
  221. package/dist/src/utils/db.js.map +0 -1
  222. package/dist/src/utils/drive-url.d.ts +0 -2
  223. package/dist/src/utils/drive-url.d.ts.map +0 -1
  224. package/dist/src/utils/drive-url.js +0 -3
  225. package/dist/src/utils/drive-url.js.map +0 -1
  226. package/dist/src/utils/index.d.ts +0 -4
  227. package/dist/src/utils/index.d.ts.map +0 -1
  228. package/dist/src/utils/index.js +0 -4
  229. package/dist/src/utils/index.js.map +0 -1
  230. package/dist/test/benchmarks/load.bench.d.ts +0 -2
  231. package/dist/test/benchmarks/load.bench.d.ts.map +0 -1
  232. package/dist/test/benchmarks/load.bench.js +0 -73
  233. package/dist/test/benchmarks/load.bench.js.map +0 -1
  234. package/dist/test/benchmarks/sync.bench.d.ts +0 -2
  235. package/dist/test/benchmarks/sync.bench.d.ts.map +0 -1
  236. package/dist/test/benchmarks/sync.bench.js +0 -119
  237. package/dist/test/benchmarks/sync.bench.js.map +0 -1
  238. package/dist/test/document-permission.service.test.d.ts +0 -2
  239. package/dist/test/document-permission.service.test.d.ts.map +0 -1
  240. package/dist/test/document-permission.service.test.js +0 -480
  241. package/dist/test/document-permission.service.test.js.map +0 -1
  242. package/dist/test/drive-handlers.d.ts +0 -4
  243. package/dist/test/drive-handlers.d.ts.map +0 -1
  244. package/dist/test/drive-handlers.js +0 -39
  245. package/dist/test/drive-handlers.js.map +0 -1
  246. package/dist/test/drive-subgraph-permissions.test.d.ts +0 -2
  247. package/dist/test/drive-subgraph-permissions.test.d.ts.map +0 -1
  248. package/dist/test/drive-subgraph-permissions.test.js +0 -195
  249. package/dist/test/drive-subgraph-permissions.test.js.map +0 -1
  250. package/dist/test/drive.test.d.ts +0 -2
  251. package/dist/test/drive.test.d.ts.map +0 -1
  252. package/dist/test/drive.test.js +0 -142
  253. package/dist/test/drive.test.js.map +0 -1
  254. package/dist/test/identity-integration.test.d.ts +0 -2
  255. package/dist/test/identity-integration.test.d.ts.map +0 -1
  256. package/dist/test/identity-integration.test.js +0 -349
  257. package/dist/test/identity-integration.test.js.map +0 -1
  258. package/dist/test/index.d.ts +0 -3
  259. package/dist/test/index.d.ts.map +0 -1
  260. package/dist/test/index.js +0 -3
  261. package/dist/test/index.js.map +0 -1
  262. package/dist/test/permissions-integration.test.d.ts +0 -2
  263. package/dist/test/permissions-integration.test.d.ts.map +0 -1
  264. package/dist/test/permissions-integration.test.js +0 -421
  265. package/dist/test/permissions-integration.test.js.map +0 -1
  266. package/dist/test/pull-responder-transmitter.test.d.ts +0 -2
  267. package/dist/test/pull-responder-transmitter.test.d.ts.map +0 -1
  268. package/dist/test/pull-responder-transmitter.test.js +0 -220
  269. package/dist/test/pull-responder-transmitter.test.js.map +0 -1
  270. package/dist/test/push-transmitter.test.d.ts +0 -2
  271. package/dist/test/push-transmitter.test.d.ts.map +0 -1
  272. package/dist/test/push-transmitter.test.js +0 -179
  273. package/dist/test/push-transmitter.test.js.map +0 -1
  274. package/dist/test/reactor-adapters.test.d.ts +0 -2
  275. package/dist/test/reactor-adapters.test.d.ts.map +0 -1
  276. package/dist/test/reactor-adapters.test.js +0 -379
  277. package/dist/test/reactor-adapters.test.js.map +0 -1
  278. package/dist/test/reactor-client.test.d.ts +0 -2
  279. package/dist/test/reactor-client.test.d.ts.map +0 -1
  280. package/dist/test/reactor-client.test.js +0 -212
  281. package/dist/test/reactor-client.test.js.map +0 -1
  282. package/dist/test/reactor-resolvers.test.d.ts +0 -2
  283. package/dist/test/reactor-resolvers.test.d.ts.map +0 -1
  284. package/dist/test/reactor-resolvers.test.js +0 -261
  285. package/dist/test/reactor-resolvers.test.js.map +0 -1
  286. package/dist/test/reactor-subgraph-permissions.test.d.ts +0 -2
  287. package/dist/test/reactor-subgraph-permissions.test.d.ts.map +0 -1
  288. package/dist/test/reactor-subgraph-permissions.test.js +0 -400
  289. package/dist/test/reactor-subgraph-permissions.test.js.map +0 -1
  290. package/dist/test/router.test.d.ts +0 -2
  291. package/dist/test/router.test.d.ts.map +0 -1
  292. package/dist/test/router.test.js +0 -38
  293. package/dist/test/router.test.js.map +0 -1
  294. package/dist/test/subscriptions.test.d.ts +0 -2
  295. package/dist/test/subscriptions.test.d.ts.map +0 -1
  296. package/dist/test/subscriptions.test.js +0 -246
  297. package/dist/test/subscriptions.test.js.map +0 -1
  298. package/dist/test/system.test.d.ts +0 -2
  299. package/dist/test/system.test.d.ts.map +0 -1
  300. package/dist/test/system.test.js +0 -211
  301. package/dist/test/system.test.js.map +0 -1
  302. package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
  303. package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
  304. package/dist/test/three-reactor-gql-sync.test.js +0 -368
  305. package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
  306. package/dist/test/two-reactor-gql-catchup-duplicate.test.d.ts +0 -2
  307. package/dist/test/two-reactor-gql-catchup-duplicate.test.d.ts.map +0 -1
  308. package/dist/test/two-reactor-gql-catchup-duplicate.test.js +0 -264
  309. package/dist/test/two-reactor-gql-catchup-duplicate.test.js.map +0 -1
  310. package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
  311. package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
  312. package/dist/test/two-reactor-gql-sync.test.js +0 -348
  313. package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
  314. package/dist/test/utils/gql-resolver-bridge.d.ts +0 -12
  315. package/dist/test/utils/gql-resolver-bridge.d.ts.map +0 -1
  316. package/dist/test/utils/gql-resolver-bridge.js +0 -60
  317. package/dist/test/utils/gql-resolver-bridge.js.map +0 -1
  318. package/dist/test/utils.d.ts +0 -10
  319. package/dist/test/utils.d.ts.map +0 -1
  320. package/dist/test/utils.js +0 -23
  321. package/dist/test/utils.js.map +0 -1
  322. package/dist/tsconfig.tsbuildinfo +0 -1
  323. package/dist/vitest.config.d.ts +0 -3
  324. package/dist/vitest.config.d.ts.map +0 -1
  325. package/dist/vitest.config.js +0 -38
  326. package/dist/vitest.config.js.map +0 -1
@@ -1,195 +0,0 @@
1
- import { DriveSubgraph } from "@powerhousedao/reactor-api";
2
- import { testSetupReactor } from "@powerhousedao/reactor-api/test";
3
- import { generateId } from "document-model/core";
4
- import { beforeEach, describe, expect, it, vi } from "vitest";
5
- describe("DriveSubgraph Permission Checks", () => {
6
- let mockDocumentPermissionService;
7
- let driveSubgraph;
8
- let driveId;
9
- // Helper to create context with different permission levels
10
- const createContext = (options) => ({
11
- driveId: options.driveId ?? driveId,
12
- user: options.userAddress ? { address: options.userAddress } : undefined,
13
- isAdmin: () => options.isAdmin ?? false,
14
- isUser: () => options.isUser ?? false,
15
- isGuest: () => options.isGuest ?? false,
16
- });
17
- beforeEach(async () => {
18
- vi.clearAllMocks();
19
- // Create mock DocumentPermissionService
20
- mockDocumentPermissionService = {
21
- canReadDocument: vi.fn().mockResolvedValue(false),
22
- canWriteDocument: vi.fn().mockResolvedValue(false),
23
- canRead: vi.fn().mockResolvedValue(false),
24
- canWrite: vi.fn().mockResolvedValue(false),
25
- };
26
- const { reactor } = await testSetupReactor();
27
- // Create a test drive
28
- driveId = generateId();
29
- await reactor.addDrive({
30
- id: driveId,
31
- slug: "test-drive",
32
- global: {
33
- name: "Test Drive",
34
- icon: undefined,
35
- },
36
- });
37
- driveSubgraph = new DriveSubgraph({
38
- reactor,
39
- documentPermissionService: mockDocumentPermissionService,
40
- });
41
- });
42
- describe("registerPullResponderListener", () => {
43
- const callRegisterPullResponderListener = async (ctx) => {
44
- const mutation = driveSubgraph.resolvers.Mutation
45
- ?.registerPullResponderListener;
46
- return mutation(null, { filter: { branch: ["main"], documentId: [] } }, ctx);
47
- };
48
- describe("Global Role Access", () => {
49
- it("should allow access when user is global admin", async () => {
50
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
51
- const result = await callRegisterPullResponderListener(ctx);
52
- expect(result).toBeDefined();
53
- expect(result.listenerId).toBeDefined();
54
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
55
- });
56
- it("should allow access when user is global user", async () => {
57
- const ctx = createContext({ isUser: true, userAddress: "0xuser" });
58
- const result = await callRegisterPullResponderListener(ctx);
59
- expect(result).toBeDefined();
60
- expect(result.listenerId).toBeDefined();
61
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
62
- });
63
- it("should allow access when user is global guest", async () => {
64
- const ctx = createContext({ isGuest: true, userAddress: "0xguest" });
65
- const result = await callRegisterPullResponderListener(ctx);
66
- expect(result).toBeDefined();
67
- expect(result.listenerId).toBeDefined();
68
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
69
- });
70
- });
71
- describe("Document Permission Access", () => {
72
- it("should allow access when user has document read permission", async () => {
73
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(true);
74
- const ctx = createContext({ userAddress: "0xpermitted" });
75
- const result = await callRegisterPullResponderListener(ctx);
76
- expect(result).toBeDefined();
77
- expect(result.listenerId).toBeDefined();
78
- expect(mockDocumentPermissionService.canReadDocument).toHaveBeenCalledWith(driveId, "0xpermitted");
79
- });
80
- it("should deny access when user has no permissions", async () => {
81
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(false);
82
- const ctx = createContext({ userAddress: "0xunpermitted" });
83
- await expect(callRegisterPullResponderListener(ctx)).rejects.toThrow("Forbidden");
84
- });
85
- it("should deny access when user is not authenticated", async () => {
86
- const ctx = createContext({});
87
- await expect(callRegisterPullResponderListener(ctx)).rejects.toThrow("Forbidden");
88
- });
89
- });
90
- });
91
- describe("pushUpdates", () => {
92
- const callPushUpdates = async (ctx) => {
93
- const mutation = driveSubgraph.resolvers.Mutation?.pushUpdates;
94
- return mutation(null, {
95
- strands: [
96
- {
97
- driveId,
98
- documentId: "doc1",
99
- documentType: "test/type",
100
- scope: "global",
101
- branch: "main",
102
- operations: [],
103
- },
104
- ],
105
- }, ctx);
106
- };
107
- describe("Global Role Access", () => {
108
- it("should allow access when user is global admin", async () => {
109
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
110
- const result = await callPushUpdates(ctx);
111
- expect(result).toBeDefined();
112
- expect(mockDocumentPermissionService.canWriteDocument).not.toHaveBeenCalled();
113
- });
114
- it("should allow access when user is global user", async () => {
115
- const ctx = createContext({ isUser: true, userAddress: "0xuser" });
116
- const result = await callPushUpdates(ctx);
117
- expect(result).toBeDefined();
118
- expect(mockDocumentPermissionService.canWriteDocument).not.toHaveBeenCalled();
119
- });
120
- it("should deny access when user is only global guest (guests cannot write)", async () => {
121
- vi.mocked(mockDocumentPermissionService.canWriteDocument).mockResolvedValue(false);
122
- const ctx = createContext({ isGuest: true, userAddress: "0xguest" });
123
- await expect(callPushUpdates(ctx)).rejects.toThrow("Forbidden");
124
- });
125
- });
126
- describe("Document Permission Access", () => {
127
- it("should allow access when user has document write permission", async () => {
128
- vi.mocked(mockDocumentPermissionService.canWriteDocument).mockResolvedValue(true);
129
- const ctx = createContext({ userAddress: "0xpermitted" });
130
- const result = await callPushUpdates(ctx);
131
- expect(result).toBeDefined();
132
- expect(mockDocumentPermissionService.canWriteDocument).toHaveBeenCalledWith(driveId, "0xpermitted");
133
- });
134
- it("should deny access when user has no write permission", async () => {
135
- vi.mocked(mockDocumentPermissionService.canWriteDocument).mockResolvedValue(false);
136
- const ctx = createContext({ userAddress: "0xunpermitted" });
137
- await expect(callPushUpdates(ctx)).rejects.toThrow("Forbidden");
138
- });
139
- });
140
- });
141
- describe("strands (Sync.strands)", () => {
142
- // Note: strands resolver requires a registered listener, which needs full infrastructure
143
- // These tests verify the resolver exists; full permission testing is done via integration tests
144
- const callStrands = async (ctx) => {
145
- const syncResolver = driveSubgraph.resolvers.Sync?.strands;
146
- if (!syncResolver) {
147
- throw new Error("Sync.strands resolver not found");
148
- }
149
- return syncResolver(null, { listenerId: "test-listener", since: undefined }, ctx);
150
- };
151
- describe("Global Role Access", () => {
152
- it("should have strands resolver defined", () => {
153
- const syncResolver = driveSubgraph.resolvers.Sync?.strands;
154
- expect(syncResolver).toBeDefined();
155
- });
156
- // Note: Full strands permission tests require actual listener infrastructure
157
- // which is better tested via integration tests. Permission checks happen
158
- // before the listener lookup, so if listener is not found, permission passed.
159
- it("should pass permission check for global admin (fails on missing listener)", async () => {
160
- const ctx = createContext({ isAdmin: true, userAddress: "0xadmin" });
161
- // Permission passes, but fails on listener lookup (not a permission error)
162
- await expect(callStrands(ctx)).rejects.toThrow("Listener not found");
163
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
164
- });
165
- });
166
- describe("Document Permission Access", () => {
167
- it("should return empty array when user has no read permission", async () => {
168
- vi.mocked(mockDocumentPermissionService.canReadDocument).mockResolvedValue(false);
169
- const ctx = createContext({ userAddress: "0xunpermitted" });
170
- const result = await callStrands(ctx);
171
- expect(result).toEqual([]);
172
- });
173
- it("should return empty array for unauthenticated user", async () => {
174
- const ctx = createContext({});
175
- const result = await callStrands(ctx);
176
- expect(result).toEqual([]);
177
- });
178
- });
179
- });
180
- describe("AUTH_ENABLED=false behavior", () => {
181
- it("should allow all access when all global roles return true", async () => {
182
- // When AUTH_ENABLED=false, isAdmin/isUser/isGuest all return true
183
- const ctx = createContext({
184
- isAdmin: true,
185
- isUser: true,
186
- isGuest: true,
187
- userAddress: "0xanyone",
188
- });
189
- const registerResult = await driveSubgraph.resolvers.Mutation?.registerPullResponderListener(null, { filter: { branch: ["main"], documentId: [] } }, ctx);
190
- expect(registerResult).toBeDefined();
191
- expect(mockDocumentPermissionService.canReadDocument).not.toHaveBeenCalled();
192
- });
193
- });
194
- });
195
- //# sourceMappingURL=drive-subgraph-permissions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive-subgraph-permissions.test.js","sourceRoot":"","sources":["../../test/drive-subgraph-permissions.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=drive.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive.test.d.ts","sourceRoot":"","sources":["../../test/drive.test.ts"],"names":[],"mappings":""}
@@ -1,142 +0,0 @@
1
- import { DriveSubgraph } from "@powerhousedao/reactor-api";
2
- import { testSetupReactor } from "@powerhousedao/reactor-api/test";
3
- import { driveCreateDocument } from "document-drive";
4
- import { documentModelDocumentModelModule, } from "document-model";
5
- import { generateId } from "document-model/core";
6
- import { describe, expect, it, vi } from "vitest";
7
- describe("DriveSubgraph", () => {
8
- it("should be able to instantiate", async () => {
9
- const { reactor } = await testSetupReactor();
10
- const driveSubgraph = new DriveSubgraph({ reactor });
11
- expect(driveSubgraph).toBeInstanceOf(DriveSubgraph);
12
- });
13
- it("should return drive data", async () => {
14
- const { reactor } = await testSetupReactor();
15
- const reactorSpy = vi.spyOn(reactor, "getDrive");
16
- const driveId = generateId();
17
- const mockDriveData = {
18
- id: driveId,
19
- meta: {
20
- preferredEditor: "test-editor",
21
- },
22
- global: {
23
- name: "test-drive",
24
- icon: undefined,
25
- },
26
- };
27
- const createdDrive = await reactor.addDrive(mockDriveData);
28
- const driveSubgraph = new DriveSubgraph({ reactor });
29
- const context = {
30
- driveId,
31
- };
32
- const drive = await driveSubgraph.resolvers.Query?.drive(null, {}, context);
33
- expect(drive).toEqual({
34
- id: createdDrive.header.id,
35
- slug: createdDrive.header.slug,
36
- meta: createdDrive.header.meta,
37
- name: createdDrive.state.global.name,
38
- icon: createdDrive.state.global.icon ?? undefined,
39
- });
40
- expect(reactorSpy).toHaveBeenCalledWith(context.driveId);
41
- });
42
- it("should return drive data with slug", async () => {
43
- const { reactor } = await testSetupReactor();
44
- const getBySlugSpy = vi.spyOn(reactor, "getDriveBySlug");
45
- const getByIdSpy = vi.spyOn(reactor, "getDrive");
46
- const driveSubgraph = new DriveSubgraph({ reactor });
47
- const driveId = generateId();
48
- const createdDrive = await reactor.addDrive({
49
- id: driveId,
50
- slug: "test-drive",
51
- global: {
52
- name: "test-drive",
53
- icon: undefined,
54
- },
55
- });
56
- const context = {
57
- driveId: "test-drive",
58
- };
59
- const drive = await driveSubgraph.resolvers.Query?.drive(null, {}, context);
60
- expect(drive).toStrictEqual({
61
- id: createdDrive.header.id,
62
- slug: createdDrive.header.slug,
63
- meta: createdDrive.header.meta,
64
- name: createdDrive.state.global.name,
65
- icon: createdDrive.state.global.icon ?? undefined,
66
- });
67
- expect(getBySlugSpy).toHaveBeenCalledWith("test-drive");
68
- expect(getByIdSpy).toHaveBeenCalledWith(driveId);
69
- });
70
- it("should return documents data", async () => {
71
- const mockDocumentsData = ["doc1", "doc2"];
72
- const mockReactor = {
73
- getDrive: vi.fn(),
74
- getDocuments: vi.fn().mockResolvedValue(mockDocumentsData),
75
- getDocument: vi.fn(),
76
- getDocumentModelModules: vi.fn(),
77
- listeners: {
78
- setListener: vi.fn(),
79
- },
80
- getDriveIdBySlug: vi.fn().mockResolvedValue("test-drive-id"),
81
- };
82
- const mockSubgraphArgs = {
83
- reactor: mockReactor,
84
- };
85
- const driveSubgraph = new DriveSubgraph(mockSubgraphArgs);
86
- const context = {
87
- driveId: "test-drive-id",
88
- };
89
- const documents = await driveSubgraph.resolvers.Query?.documents(null, {}, context);
90
- expect(documents).toEqual(mockDocumentsData);
91
- expect(mockReactor.getDocuments).toHaveBeenCalledWith(context.driveId);
92
- });
93
- it("should return document data", async () => {
94
- const mockDocumentData = driveCreateDocument({});
95
- mockDocumentData.header.slug = "test-document-id";
96
- // {
97
- // id: "test-document-id",
98
- // documentType: "test-document-type",
99
- // revision: { global: 1 },
100
- // state: { global: { data: "test-data" } },
101
- // operations: { global: [] },
102
- // initialState: { state: { global: {} } },
103
- // };
104
- const mockReactor = {
105
- getDrive: vi.fn(),
106
- getDocuments: vi.fn().mockResolvedValue([mockDocumentData.header.id]),
107
- getDocument: vi.fn().mockResolvedValue(mockDocumentData),
108
- getDocumentModelModules: vi
109
- .fn()
110
- .mockReturnValue([
111
- documentModelDocumentModelModule,
112
- ]),
113
- listeners: {
114
- setListener: vi.fn(),
115
- },
116
- getDriveIdBySlug: vi.fn().mockResolvedValue(mockDocumentData.header.id),
117
- };
118
- const mockSubgraphArgs = {
119
- reactor: mockReactor,
120
- };
121
- const driveSubgraph = new DriveSubgraph(mockSubgraphArgs);
122
- const context = {
123
- driveId: mockDocumentData.header.id,
124
- };
125
- const document = await driveSubgraph.resolvers.Query?.document(null, { id: mockDocumentData.header.id }, context);
126
- console.log(document);
127
- expect(document).toMatchObject({
128
- ...mockDocumentData.header,
129
- // default
130
- state: mockDocumentData.state.global,
131
- initialState: mockDocumentData.initialState.global,
132
- stateJSON: mockDocumentData.state.global,
133
- operations: mockDocumentData.operations.global,
134
- __typename: "",
135
- // backward compatibility
136
- revision: mockDocumentData.header.revision.global || 0,
137
- id: mockDocumentData.header.id,
138
- });
139
- expect(mockReactor.getDocument).toHaveBeenCalledWith(mockDocumentData.header.id);
140
- });
141
- });
142
- //# sourceMappingURL=drive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drive.test.js","sourceRoot":"","sources":["../../test/drive.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=identity-integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity-integration.test.d.ts","sourceRoot":"","sources":["../../test/identity-integration.test.ts"],"names":[],"mappings":""}