@tinycloud/sdk-core 2.0.1 → 2.0.2-beta.0

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 (188) hide show
  1. package/dist/index.cjs +3816 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +3867 -0
  4. package/dist/index.d.ts +3861 -21
  5. package/dist/index.js +3767 -61
  6. package/dist/index.js.map +1 -1
  7. package/package.json +6 -5
  8. package/dist/TinyCloud.d.ts +0 -271
  9. package/dist/TinyCloud.d.ts.map +0 -1
  10. package/dist/TinyCloud.js +0 -458
  11. package/dist/TinyCloud.js.map +0 -1
  12. package/dist/TinyCloud.schema.d.ts +0 -173
  13. package/dist/TinyCloud.schema.d.ts.map +0 -1
  14. package/dist/TinyCloud.schema.js +0 -136
  15. package/dist/TinyCloud.schema.js.map +0 -1
  16. package/dist/TinyCloud.schema.test.d.ts +0 -5
  17. package/dist/TinyCloud.schema.test.d.ts.map +0 -1
  18. package/dist/TinyCloud.schema.test.js +0 -286
  19. package/dist/TinyCloud.schema.test.js.map +0 -1
  20. package/dist/authorization/CapabilityKeyRegistry.d.ts +0 -317
  21. package/dist/authorization/CapabilityKeyRegistry.d.ts.map +0 -1
  22. package/dist/authorization/CapabilityKeyRegistry.js +0 -509
  23. package/dist/authorization/CapabilityKeyRegistry.js.map +0 -1
  24. package/dist/authorization/authorization.schema.d.ts +0 -233
  25. package/dist/authorization/authorization.schema.d.ts.map +0 -1
  26. package/dist/authorization/authorization.schema.js +0 -220
  27. package/dist/authorization/authorization.schema.js.map +0 -1
  28. package/dist/authorization/authorization.schema.test.d.ts +0 -5
  29. package/dist/authorization/authorization.schema.test.d.ts.map +0 -1
  30. package/dist/authorization/authorization.schema.test.js +0 -618
  31. package/dist/authorization/authorization.schema.test.js.map +0 -1
  32. package/dist/authorization/index.d.ts +0 -38
  33. package/dist/authorization/index.d.ts.map +0 -1
  34. package/dist/authorization/index.js +0 -52
  35. package/dist/authorization/index.js.map +0 -1
  36. package/dist/authorization/spaceCreation.d.ts +0 -96
  37. package/dist/authorization/spaceCreation.d.ts.map +0 -1
  38. package/dist/authorization/spaceCreation.js +0 -35
  39. package/dist/authorization/spaceCreation.js.map +0 -1
  40. package/dist/authorization/spaceCreation.schema.d.ts +0 -67
  41. package/dist/authorization/spaceCreation.schema.d.ts.map +0 -1
  42. package/dist/authorization/spaceCreation.schema.js +0 -95
  43. package/dist/authorization/spaceCreation.schema.js.map +0 -1
  44. package/dist/authorization/spaceCreation.schema.test.d.ts +0 -5
  45. package/dist/authorization/spaceCreation.schema.test.d.ts.map +0 -1
  46. package/dist/authorization/spaceCreation.schema.test.js +0 -168
  47. package/dist/authorization/spaceCreation.schema.test.js.map +0 -1
  48. package/dist/authorization/strategies.d.ts +0 -134
  49. package/dist/authorization/strategies.d.ts.map +0 -1
  50. package/dist/authorization/strategies.js +0 -15
  51. package/dist/authorization/strategies.js.map +0 -1
  52. package/dist/authorization/strategies.schema.d.ts +0 -185
  53. package/dist/authorization/strategies.schema.d.ts.map +0 -1
  54. package/dist/authorization/strategies.schema.js +0 -147
  55. package/dist/authorization/strategies.schema.js.map +0 -1
  56. package/dist/authorization/strategies.schema.test.d.ts +0 -5
  57. package/dist/authorization/strategies.schema.test.d.ts.map +0 -1
  58. package/dist/authorization/strategies.schema.test.js +0 -253
  59. package/dist/authorization/strategies.schema.test.js.map +0 -1
  60. package/dist/client-types.d.ts +0 -128
  61. package/dist/client-types.d.ts.map +0 -1
  62. package/dist/client-types.js +0 -40
  63. package/dist/client-types.js.map +0 -1
  64. package/dist/delegations/DelegationManager.d.ts +0 -164
  65. package/dist/delegations/DelegationManager.d.ts.map +0 -1
  66. package/dist/delegations/DelegationManager.js +0 -428
  67. package/dist/delegations/DelegationManager.js.map +0 -1
  68. package/dist/delegations/SharingService.d.ts +0 -341
  69. package/dist/delegations/SharingService.d.ts.map +0 -1
  70. package/dist/delegations/SharingService.js +0 -722
  71. package/dist/delegations/SharingService.js.map +0 -1
  72. package/dist/delegations/SharingService.schema.d.ts +0 -409
  73. package/dist/delegations/SharingService.schema.d.ts.map +0 -1
  74. package/dist/delegations/SharingService.schema.js +0 -222
  75. package/dist/delegations/SharingService.schema.js.map +0 -1
  76. package/dist/delegations/index.d.ts +0 -38
  77. package/dist/delegations/index.d.ts.map +0 -1
  78. package/dist/delegations/index.js +0 -42
  79. package/dist/delegations/index.js.map +0 -1
  80. package/dist/delegations/types.d.ts +0 -13
  81. package/dist/delegations/types.d.ts.map +0 -1
  82. package/dist/delegations/types.js +0 -42
  83. package/dist/delegations/types.js.map +0 -1
  84. package/dist/delegations/types.schema.d.ts +0 -1773
  85. package/dist/delegations/types.schema.d.ts.map +0 -1
  86. package/dist/delegations/types.schema.js +0 -535
  87. package/dist/delegations/types.schema.js.map +0 -1
  88. package/dist/delegations/types.schema.test.d.ts +0 -5
  89. package/dist/delegations/types.schema.test.d.ts.map +0 -1
  90. package/dist/delegations/types.schema.test.js +0 -627
  91. package/dist/delegations/types.schema.test.js.map +0 -1
  92. package/dist/ens.d.ts +0 -17
  93. package/dist/ens.d.ts.map +0 -1
  94. package/dist/ens.js +0 -10
  95. package/dist/ens.js.map +0 -1
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/json-schema.d.ts +0 -327
  98. package/dist/json-schema.d.ts.map +0 -1
  99. package/dist/json-schema.js +0 -703
  100. package/dist/json-schema.js.map +0 -1
  101. package/dist/json-schema.test.d.ts +0 -7
  102. package/dist/json-schema.test.d.ts.map +0 -1
  103. package/dist/json-schema.test.js +0 -365
  104. package/dist/json-schema.test.js.map +0 -1
  105. package/dist/notifications.d.ts +0 -33
  106. package/dist/notifications.d.ts.map +0 -1
  107. package/dist/notifications.js +0 -15
  108. package/dist/notifications.js.map +0 -1
  109. package/dist/signer.d.ts +0 -28
  110. package/dist/signer.d.ts.map +0 -1
  111. package/dist/signer.js +0 -2
  112. package/dist/signer.js.map +0 -1
  113. package/dist/space.d.ts +0 -57
  114. package/dist/space.d.ts.map +0 -1
  115. package/dist/space.js +0 -87
  116. package/dist/space.js.map +0 -1
  117. package/dist/space.schema.d.ts +0 -65
  118. package/dist/space.schema.d.ts.map +0 -1
  119. package/dist/space.schema.js +0 -65
  120. package/dist/space.schema.js.map +0 -1
  121. package/dist/space.schema.test.d.ts +0 -5
  122. package/dist/space.schema.test.d.ts.map +0 -1
  123. package/dist/space.schema.test.js +0 -148
  124. package/dist/space.schema.test.js.map +0 -1
  125. package/dist/space.test.d.ts +0 -5
  126. package/dist/space.test.d.ts.map +0 -1
  127. package/dist/space.test.js +0 -87
  128. package/dist/space.test.js.map +0 -1
  129. package/dist/spaces/Space.d.ts +0 -175
  130. package/dist/spaces/Space.d.ts.map +0 -1
  131. package/dist/spaces/Space.js +0 -84
  132. package/dist/spaces/Space.js.map +0 -1
  133. package/dist/spaces/SpaceService.d.ts +0 -291
  134. package/dist/spaces/SpaceService.d.ts.map +0 -1
  135. package/dist/spaces/SpaceService.js +0 -740
  136. package/dist/spaces/SpaceService.js.map +0 -1
  137. package/dist/spaces/index.d.ts +0 -11
  138. package/dist/spaces/index.d.ts.map +0 -1
  139. package/dist/spaces/index.js +0 -22
  140. package/dist/spaces/index.js.map +0 -1
  141. package/dist/spaces/spaces.schema.d.ts +0 -421
  142. package/dist/spaces/spaces.schema.d.ts.map +0 -1
  143. package/dist/spaces/spaces.schema.js +0 -342
  144. package/dist/spaces/spaces.schema.js.map +0 -1
  145. package/dist/spaces/spaces.schema.test.d.ts +0 -5
  146. package/dist/spaces/spaces.schema.test.d.ts.map +0 -1
  147. package/dist/spaces/spaces.schema.test.js +0 -471
  148. package/dist/spaces/spaces.schema.test.js.map +0 -1
  149. package/dist/storage.d.ts +0 -47
  150. package/dist/storage.d.ts.map +0 -1
  151. package/dist/storage.js +0 -14
  152. package/dist/storage.js.map +0 -1
  153. package/dist/storage.schema.d.ts +0 -291
  154. package/dist/storage.schema.d.ts.map +0 -1
  155. package/dist/storage.schema.js +0 -189
  156. package/dist/storage.schema.js.map +0 -1
  157. package/dist/storage.schema.test.d.ts +0 -5
  158. package/dist/storage.schema.test.d.ts.map +0 -1
  159. package/dist/storage.schema.test.js +0 -346
  160. package/dist/storage.schema.test.js.map +0 -1
  161. package/dist/userAuthorization.d.ts +0 -117
  162. package/dist/userAuthorization.d.ts.map +0 -1
  163. package/dist/userAuthorization.js +0 -3
  164. package/dist/userAuthorization.js.map +0 -1
  165. package/dist/userAuthorization.schema.d.ts +0 -260
  166. package/dist/userAuthorization.schema.d.ts.map +0 -1
  167. package/dist/userAuthorization.schema.js +0 -169
  168. package/dist/userAuthorization.schema.js.map +0 -1
  169. package/dist/userAuthorization.schema.test.d.ts +0 -5
  170. package/dist/userAuthorization.schema.test.d.ts.map +0 -1
  171. package/dist/userAuthorization.schema.test.js +0 -356
  172. package/dist/userAuthorization.schema.test.js.map +0 -1
  173. package/dist/version.d.ts +0 -32
  174. package/dist/version.d.ts.map +0 -1
  175. package/dist/version.js +0 -59
  176. package/dist/version.js.map +0 -1
  177. package/dist/wasm-validation.d.ts +0 -291
  178. package/dist/wasm-validation.d.ts.map +0 -1
  179. package/dist/wasm-validation.js +0 -221
  180. package/dist/wasm-validation.js.map +0 -1
  181. package/dist/wasm-validation.test.d.ts +0 -5
  182. package/dist/wasm-validation.test.d.ts.map +0 -1
  183. package/dist/wasm-validation.test.js +0 -233
  184. package/dist/wasm-validation.test.js.map +0 -1
  185. package/dist/wasm.d.ts +0 -66
  186. package/dist/wasm.d.ts.map +0 -1
  187. package/dist/wasm.js +0 -10
  188. package/dist/wasm.js.map +0 -1
@@ -1,627 +0,0 @@
1
- /**
2
- * Tests for delegation type Zod schemas.
3
- */
4
- import { describe, it, expect } from "bun:test";
5
- import { JWKSchema, KeyTypeSchema, KeyInfoSchema, DelegationErrorSchema, DelegationSchema, CapabilityEntrySchema, DelegationRecordSchema, CreateDelegationParamsSchema, DelegationChainSchema, DelegationChainV2Schema, DelegationDirectionSchema, DelegationFiltersSchema, SpaceOwnershipSchema, SpaceInfoSchema, ShareSchemaSchema, ShareLinkSchema, IngestOptionsSchema, GenerateShareParamsSchema, DelegationApiResponseSchema, CreateDelegationWasmParamsSchema, CreateDelegationWasmResultSchema, validateDelegation, validateCreateDelegationParams, validateDelegationFilters, validateShareLink, createValidator, DelegationErrorCodes, } from "./types.schema.js";
6
- // =============================================================================
7
- // Test Data Factories
8
- // =============================================================================
9
- function createValidJWK() {
10
- return {
11
- kty: "EC",
12
- crv: "P-256",
13
- x: "test-x-coordinate",
14
- y: "test-y-coordinate",
15
- };
16
- }
17
- function createValidDelegation() {
18
- return {
19
- cid: "bafyrei1234567890",
20
- delegateDID: "did:key:z6MkTest",
21
- spaceId: "space-123",
22
- path: "/kv/test/*",
23
- actions: ["tinycloud.kv/get", "tinycloud.kv/put"],
24
- expiry: new Date("2025-12-31"),
25
- isRevoked: false,
26
- };
27
- }
28
- function createValidKeyInfo() {
29
- return {
30
- id: "key-123",
31
- did: "did:key:z6MkTest",
32
- type: "session",
33
- priority: 0,
34
- };
35
- }
36
- // =============================================================================
37
- // JWK Schema Tests
38
- // =============================================================================
39
- describe("JWKSchema", () => {
40
- it("should validate a minimal JWK", () => {
41
- const jwk = { kty: "EC" };
42
- const result = JWKSchema.safeParse(jwk);
43
- expect(result.success).toBe(true);
44
- });
45
- it("should validate a full EC JWK", () => {
46
- const jwk = createValidJWK();
47
- const result = JWKSchema.safeParse(jwk);
48
- expect(result.success).toBe(true);
49
- if (result.success) {
50
- expect(result.data.kty).toBe("EC");
51
- expect(result.data.crv).toBe("P-256");
52
- }
53
- });
54
- it("should validate a JWK with all optional fields", () => {
55
- const jwk = {
56
- kty: "RSA",
57
- n: "test-modulus",
58
- e: "test-exponent",
59
- kid: "key-id-123",
60
- alg: "RS256",
61
- use: "sig",
62
- key_ops: ["sign", "verify"],
63
- };
64
- const result = JWKSchema.safeParse(jwk);
65
- expect(result.success).toBe(true);
66
- });
67
- it("should reject JWK without kty", () => {
68
- const jwk = { crv: "P-256" };
69
- const result = JWKSchema.safeParse(jwk);
70
- expect(result.success).toBe(false);
71
- });
72
- it("should reject JWK with invalid kty type", () => {
73
- const jwk = { kty: 123 };
74
- const result = JWKSchema.safeParse(jwk);
75
- expect(result.success).toBe(false);
76
- });
77
- });
78
- // =============================================================================
79
- // KeyType Schema Tests
80
- // =============================================================================
81
- describe("KeyTypeSchema", () => {
82
- it("should validate 'main'", () => {
83
- expect(KeyTypeSchema.safeParse("main").success).toBe(true);
84
- });
85
- it("should validate 'session'", () => {
86
- expect(KeyTypeSchema.safeParse("session").success).toBe(true);
87
- });
88
- it("should validate 'ingested'", () => {
89
- expect(KeyTypeSchema.safeParse("ingested").success).toBe(true);
90
- });
91
- it("should reject invalid key type", () => {
92
- expect(KeyTypeSchema.safeParse("invalid").success).toBe(false);
93
- });
94
- it("should reject non-string values", () => {
95
- expect(KeyTypeSchema.safeParse(123).success).toBe(false);
96
- });
97
- });
98
- // =============================================================================
99
- // KeyInfo Schema Tests
100
- // =============================================================================
101
- describe("KeyInfoSchema", () => {
102
- it("should validate minimal key info", () => {
103
- const keyInfo = createValidKeyInfo();
104
- const result = KeyInfoSchema.safeParse(keyInfo);
105
- expect(result.success).toBe(true);
106
- });
107
- it("should validate key info with JWK", () => {
108
- const keyInfo = {
109
- ...createValidKeyInfo(),
110
- jwk: createValidJWK(),
111
- };
112
- const result = KeyInfoSchema.safeParse(keyInfo);
113
- expect(result.success).toBe(true);
114
- });
115
- it("should reject key info without id", () => {
116
- const { id, ...keyInfo } = createValidKeyInfo();
117
- const result = KeyInfoSchema.safeParse(keyInfo);
118
- expect(result.success).toBe(false);
119
- });
120
- it("should reject key info with invalid type", () => {
121
- const keyInfo = { ...createValidKeyInfo(), type: "invalid" };
122
- const result = KeyInfoSchema.safeParse(keyInfo);
123
- expect(result.success).toBe(false);
124
- });
125
- });
126
- // =============================================================================
127
- // DelegationError Schema Tests
128
- // =============================================================================
129
- describe("DelegationErrorSchema", () => {
130
- it("should validate a minimal delegation error", () => {
131
- const error = {
132
- code: "AUTH_REQUIRED",
133
- message: "Authentication required",
134
- service: "delegation",
135
- };
136
- const result = DelegationErrorSchema.safeParse(error);
137
- expect(result.success).toBe(true);
138
- });
139
- it("should validate delegation error with cause and meta", () => {
140
- const error = {
141
- code: "NETWORK_ERROR",
142
- message: "Request failed",
143
- service: "delegation",
144
- cause: new Error("Connection timeout"),
145
- meta: { attempt: 3, url: "https://example.com" },
146
- };
147
- const result = DelegationErrorSchema.safeParse(error);
148
- expect(result.success).toBe(true);
149
- });
150
- it("should reject error with wrong service", () => {
151
- const error = {
152
- code: "AUTH_REQUIRED",
153
- message: "Authentication required",
154
- service: "other",
155
- };
156
- const result = DelegationErrorSchema.safeParse(error);
157
- expect(result.success).toBe(false);
158
- });
159
- });
160
- // =============================================================================
161
- // Delegation Schema Tests
162
- // =============================================================================
163
- describe("DelegationSchema", () => {
164
- it("should validate a minimal delegation", () => {
165
- const delegation = createValidDelegation();
166
- const result = DelegationSchema.safeParse(delegation);
167
- expect(result.success).toBe(true);
168
- });
169
- it("should validate a full delegation", () => {
170
- const delegation = {
171
- ...createValidDelegation(),
172
- delegatorDID: "did:pkh:eip155:1:0x1234",
173
- createdAt: new Date(),
174
- parentCid: "bafyrei-parent",
175
- allowSubDelegation: true,
176
- authHeader: "Bearer token123",
177
- };
178
- const result = DelegationSchema.safeParse(delegation);
179
- expect(result.success).toBe(true);
180
- });
181
- it("should reject delegation without cid", () => {
182
- const { cid, ...delegation } = createValidDelegation();
183
- const result = DelegationSchema.safeParse(delegation);
184
- expect(result.success).toBe(false);
185
- });
186
- it("should reject delegation with invalid expiry", () => {
187
- const delegation = { ...createValidDelegation(), expiry: "not-a-date" };
188
- const result = DelegationSchema.safeParse(delegation);
189
- expect(result.success).toBe(false);
190
- });
191
- it("should reject delegation with invalid actions type", () => {
192
- const delegation = { ...createValidDelegation(), actions: "not-an-array" };
193
- const result = DelegationSchema.safeParse(delegation);
194
- expect(result.success).toBe(false);
195
- });
196
- });
197
- // =============================================================================
198
- // CapabilityEntry Schema Tests
199
- // =============================================================================
200
- describe("CapabilityEntrySchema", () => {
201
- it("should validate a capability entry", () => {
202
- const entry = {
203
- resource: "tinycloud://space-123/kv/test",
204
- action: "tinycloud.kv/get",
205
- keys: [createValidKeyInfo()],
206
- delegation: createValidDelegation(),
207
- };
208
- const result = CapabilityEntrySchema.safeParse(entry);
209
- expect(result.success).toBe(true);
210
- });
211
- it("should validate capability entry with expiresAt", () => {
212
- const entry = {
213
- resource: "tinycloud://space-123/kv/test",
214
- action: "tinycloud.kv/get",
215
- keys: [],
216
- delegation: createValidDelegation(),
217
- expiresAt: new Date("2025-12-31"),
218
- };
219
- const result = CapabilityEntrySchema.safeParse(entry);
220
- expect(result.success).toBe(true);
221
- });
222
- });
223
- // =============================================================================
224
- // DelegationRecord Schema Tests
225
- // =============================================================================
226
- describe("DelegationRecordSchema", () => {
227
- it("should validate a delegation record", () => {
228
- const record = {
229
- cid: "bafyrei1234567890",
230
- spaceId: "space-123",
231
- delegator: "did:pkh:eip155:1:0x1234",
232
- delegatee: "did:key:z6MkTest",
233
- path: "/kv/test/*",
234
- actions: ["tinycloud.kv/get"],
235
- isRevoked: false,
236
- createdAt: new Date(),
237
- };
238
- const result = DelegationRecordSchema.safeParse(record);
239
- expect(result.success).toBe(true);
240
- });
241
- it("should validate a full delegation record", () => {
242
- const record = {
243
- cid: "bafyrei1234567890",
244
- spaceId: "space-123",
245
- delegator: "did:pkh:eip155:1:0x1234",
246
- delegatee: "did:key:z6MkTest",
247
- keyId: "key-123",
248
- path: "/kv/test/*",
249
- actions: ["tinycloud.kv/get"],
250
- expiry: new Date("2025-12-31"),
251
- notBefore: new Date(),
252
- isRevoked: false,
253
- createdAt: new Date(),
254
- parentCid: "bafyrei-parent",
255
- };
256
- const result = DelegationRecordSchema.safeParse(record);
257
- expect(result.success).toBe(true);
258
- });
259
- });
260
- // =============================================================================
261
- // CreateDelegationParams Schema Tests
262
- // =============================================================================
263
- describe("CreateDelegationParamsSchema", () => {
264
- it("should validate minimal params", () => {
265
- const params = {
266
- delegateDID: "did:key:z6MkTest",
267
- path: "/kv/test",
268
- actions: ["tinycloud.kv/get"],
269
- };
270
- const result = CreateDelegationParamsSchema.safeParse(params);
271
- expect(result.success).toBe(true);
272
- });
273
- it("should validate full params", () => {
274
- const params = {
275
- delegateDID: "did:key:z6MkTest",
276
- path: "/kv/test",
277
- actions: ["tinycloud.kv/get", "tinycloud.kv/put"],
278
- expiry: new Date("2025-12-31"),
279
- disableSubDelegation: true,
280
- statement: "Grant access to test data",
281
- };
282
- const result = CreateDelegationParamsSchema.safeParse(params);
283
- expect(result.success).toBe(true);
284
- });
285
- });
286
- // =============================================================================
287
- // DelegationChain Schema Tests
288
- // =============================================================================
289
- describe("DelegationChainSchema", () => {
290
- it("should validate an empty chain", () => {
291
- const result = DelegationChainSchema.safeParse([]);
292
- expect(result.success).toBe(true);
293
- });
294
- it("should validate a chain with one delegation", () => {
295
- const chain = [createValidDelegation()];
296
- const result = DelegationChainSchema.safeParse(chain);
297
- expect(result.success).toBe(true);
298
- });
299
- it("should validate a chain with multiple delegations", () => {
300
- const chain = [createValidDelegation(), createValidDelegation()];
301
- const result = DelegationChainSchema.safeParse(chain);
302
- expect(result.success).toBe(true);
303
- });
304
- });
305
- // =============================================================================
306
- // DelegationChainV2 Schema Tests
307
- // =============================================================================
308
- describe("DelegationChainV2Schema", () => {
309
- it("should validate a chain v2", () => {
310
- const chain = {
311
- root: createValidDelegation(),
312
- chain: [],
313
- leaf: createValidDelegation(),
314
- };
315
- const result = DelegationChainV2Schema.safeParse(chain);
316
- expect(result.success).toBe(true);
317
- });
318
- it("should validate a chain v2 with intermediates", () => {
319
- const chain = {
320
- root: createValidDelegation(),
321
- chain: [createValidDelegation(), createValidDelegation()],
322
- leaf: createValidDelegation(),
323
- };
324
- const result = DelegationChainV2Schema.safeParse(chain);
325
- expect(result.success).toBe(true);
326
- });
327
- });
328
- // =============================================================================
329
- // Direction and Filter Schema Tests
330
- // =============================================================================
331
- describe("DelegationDirectionSchema", () => {
332
- it("should validate 'granted'", () => {
333
- expect(DelegationDirectionSchema.safeParse("granted").success).toBe(true);
334
- });
335
- it("should validate 'received'", () => {
336
- expect(DelegationDirectionSchema.safeParse("received").success).toBe(true);
337
- });
338
- it("should validate 'all'", () => {
339
- expect(DelegationDirectionSchema.safeParse("all").success).toBe(true);
340
- });
341
- it("should reject invalid direction", () => {
342
- expect(DelegationDirectionSchema.safeParse("invalid").success).toBe(false);
343
- });
344
- });
345
- describe("DelegationFiltersSchema", () => {
346
- it("should validate empty filters", () => {
347
- const result = DelegationFiltersSchema.safeParse({});
348
- expect(result.success).toBe(true);
349
- });
350
- it("should validate full filters", () => {
351
- const filters = {
352
- direction: "received",
353
- path: "/kv/shared/*",
354
- actions: ["tinycloud.kv/get"],
355
- includeRevoked: false,
356
- delegator: "did:pkh:eip155:1:0x1234",
357
- delegatee: "did:key:z6MkTest",
358
- validAt: new Date(),
359
- limit: 10,
360
- cursor: "cursor-123",
361
- };
362
- const result = DelegationFiltersSchema.safeParse(filters);
363
- expect(result.success).toBe(true);
364
- });
365
- });
366
- // =============================================================================
367
- // Space Schema Tests
368
- // =============================================================================
369
- describe("SpaceOwnershipSchema", () => {
370
- it("should validate 'owned'", () => {
371
- expect(SpaceOwnershipSchema.safeParse("owned").success).toBe(true);
372
- });
373
- it("should validate 'delegated'", () => {
374
- expect(SpaceOwnershipSchema.safeParse("delegated").success).toBe(true);
375
- });
376
- });
377
- describe("SpaceInfoSchema", () => {
378
- it("should validate minimal space info", () => {
379
- const spaceInfo = {
380
- id: "space-123",
381
- owner: "did:pkh:eip155:1:0x1234",
382
- type: "owned",
383
- };
384
- const result = SpaceInfoSchema.safeParse(spaceInfo);
385
- expect(result.success).toBe(true);
386
- });
387
- it("should validate full space info", () => {
388
- const spaceInfo = {
389
- id: "space-123",
390
- name: "My Documents",
391
- owner: "did:pkh:eip155:1:0x1234",
392
- type: "delegated",
393
- permissions: ["tinycloud.kv/*"],
394
- expiresAt: new Date("2025-12-31"),
395
- };
396
- const result = SpaceInfoSchema.safeParse(spaceInfo);
397
- expect(result.success).toBe(true);
398
- });
399
- });
400
- // =============================================================================
401
- // Share Link Schema Tests
402
- // =============================================================================
403
- describe("ShareSchemaSchema", () => {
404
- it("should validate 'base64'", () => {
405
- expect(ShareSchemaSchema.safeParse("base64").success).toBe(true);
406
- });
407
- it("should validate 'compact'", () => {
408
- expect(ShareSchemaSchema.safeParse("compact").success).toBe(true);
409
- });
410
- it("should validate 'ipfs'", () => {
411
- expect(ShareSchemaSchema.safeParse("ipfs").success).toBe(true);
412
- });
413
- });
414
- describe("ShareLinkSchema", () => {
415
- it("should validate a share link", () => {
416
- const shareLink = {
417
- token: "abc123",
418
- url: "https://app.example.com/share/abc123",
419
- delegation: createValidDelegation(),
420
- schema: "base64",
421
- };
422
- const result = ShareLinkSchema.safeParse(shareLink);
423
- expect(result.success).toBe(true);
424
- });
425
- it("should validate a full share link", () => {
426
- const shareLink = {
427
- token: "abc123",
428
- url: "https://app.example.com/share/abc123",
429
- delegation: createValidDelegation(),
430
- schema: "base64",
431
- expiresAt: new Date("2025-12-31"),
432
- description: "Q4 Financial Report",
433
- };
434
- const result = ShareLinkSchema.safeParse(shareLink);
435
- expect(result.success).toBe(true);
436
- });
437
- });
438
- // =============================================================================
439
- // Ingestion Schema Tests
440
- // =============================================================================
441
- describe("IngestOptionsSchema", () => {
442
- it("should validate empty options", () => {
443
- const result = IngestOptionsSchema.safeParse({});
444
- expect(result.success).toBe(true);
445
- });
446
- it("should validate full options", () => {
447
- const options = {
448
- persist: true,
449
- validateChain: true,
450
- keyName: "shared-key",
451
- createSessionKey: false,
452
- priority: 2,
453
- };
454
- const result = IngestOptionsSchema.safeParse(options);
455
- expect(result.success).toBe(true);
456
- });
457
- });
458
- // =============================================================================
459
- // GenerateShareParams Schema Tests
460
- // =============================================================================
461
- describe("GenerateShareParamsSchema", () => {
462
- it("should validate minimal params", () => {
463
- const params = {
464
- path: "/kv/test",
465
- };
466
- const result = GenerateShareParamsSchema.safeParse(params);
467
- expect(result.success).toBe(true);
468
- });
469
- it("should validate full params", () => {
470
- const params = {
471
- path: "/kv/documents/report.pdf",
472
- actions: ["tinycloud.kv/get"],
473
- expiry: new Date("2025-12-31"),
474
- schema: "base64",
475
- description: "Q4 Financial Report",
476
- baseUrl: "https://share.example.com",
477
- };
478
- const result = GenerateShareParamsSchema.safeParse(params);
479
- expect(result.success).toBe(true);
480
- });
481
- });
482
- // =============================================================================
483
- // API Response Schema Tests
484
- // =============================================================================
485
- describe("DelegationApiResponseSchema", () => {
486
- it("should validate a response", () => {
487
- const response = {
488
- siwe: "localhost wants you to sign in...",
489
- signature: "0x1234...",
490
- version: 1,
491
- };
492
- const result = DelegationApiResponseSchema.safeParse(response);
493
- expect(result.success).toBe(true);
494
- });
495
- it("should validate a response with cid", () => {
496
- const response = {
497
- siwe: "localhost wants you to sign in...",
498
- signature: "0x1234...",
499
- version: 1,
500
- cid: "bafyrei1234567890",
501
- };
502
- const result = DelegationApiResponseSchema.safeParse(response);
503
- expect(result.success).toBe(true);
504
- });
505
- });
506
- // =============================================================================
507
- // WASM Types Schema Tests
508
- // =============================================================================
509
- describe("CreateDelegationWasmParamsSchema", () => {
510
- it("should validate params with mock session", () => {
511
- const params = {
512
- session: { did: "did:key:z6MkTest", spaceId: "space-123" },
513
- delegateDID: "did:key:z6MkTarget",
514
- spaceId: "space-123",
515
- path: "/kv/test",
516
- actions: ["tinycloud.kv/get"],
517
- expirationSecs: 1735689600,
518
- };
519
- const result = CreateDelegationWasmParamsSchema.safeParse(params);
520
- expect(result.success).toBe(true);
521
- });
522
- it("should validate params with notBeforeSecs", () => {
523
- const params = {
524
- session: { did: "did:key:z6MkTest", spaceId: "space-123" },
525
- delegateDID: "did:key:z6MkTarget",
526
- spaceId: "space-123",
527
- path: "/kv/test",
528
- actions: ["tinycloud.kv/get"],
529
- expirationSecs: 1735689600,
530
- notBeforeSecs: 1704067200,
531
- };
532
- const result = CreateDelegationWasmParamsSchema.safeParse(params);
533
- expect(result.success).toBe(true);
534
- });
535
- });
536
- describe("CreateDelegationWasmResultSchema", () => {
537
- it("should validate a result", () => {
538
- const result = {
539
- delegation: "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9...",
540
- cid: "bafyrei1234567890",
541
- delegateDID: "did:key:z6MkTarget",
542
- path: "/kv/test",
543
- actions: ["tinycloud.kv/get"],
544
- expiry: new Date("2025-12-31"),
545
- };
546
- const parseResult = CreateDelegationWasmResultSchema.safeParse(result);
547
- expect(parseResult.success).toBe(true);
548
- });
549
- });
550
- // =============================================================================
551
- // Validation Helper Tests
552
- // =============================================================================
553
- describe("validateDelegation", () => {
554
- it("should return ok result for valid delegation", () => {
555
- const delegation = createValidDelegation();
556
- const result = validateDelegation(delegation);
557
- expect(result.ok).toBe(true);
558
- if (result.ok) {
559
- expect(result.data.cid).toBe(delegation.cid);
560
- }
561
- });
562
- it("should return error result for invalid delegation", () => {
563
- const delegation = { cid: "test" }; // Missing required fields
564
- const result = validateDelegation(delegation);
565
- expect(result.ok).toBe(false);
566
- if (!result.ok) {
567
- expect(result.error.code).toBe(DelegationErrorCodes.VALIDATION_ERROR);
568
- expect(result.error.service).toBe("delegation");
569
- expect(result.error.meta?.issues).toBeDefined();
570
- }
571
- });
572
- });
573
- describe("validateCreateDelegationParams", () => {
574
- it("should return ok result for valid params", () => {
575
- const params = {
576
- delegateDID: "did:key:z6MkTest",
577
- path: "/kv/test",
578
- actions: ["tinycloud.kv/get"],
579
- };
580
- const result = validateCreateDelegationParams(params);
581
- expect(result.ok).toBe(true);
582
- });
583
- it("should return error result for invalid params", () => {
584
- const params = { path: "/kv/test" }; // Missing delegateDID and actions
585
- const result = validateCreateDelegationParams(params);
586
- expect(result.ok).toBe(false);
587
- });
588
- });
589
- describe("validateDelegationFilters", () => {
590
- it("should return ok result for valid filters", () => {
591
- const filters = { direction: "received" };
592
- const result = validateDelegationFilters(filters);
593
- expect(result.ok).toBe(true);
594
- });
595
- it("should return error result for invalid direction", () => {
596
- const filters = { direction: "invalid" };
597
- const result = validateDelegationFilters(filters);
598
- expect(result.ok).toBe(false);
599
- });
600
- });
601
- describe("validateShareLink", () => {
602
- it("should return ok result for valid share link", () => {
603
- const shareLink = {
604
- token: "abc123",
605
- url: "https://app.example.com/share/abc123",
606
- delegation: createValidDelegation(),
607
- schema: "base64",
608
- };
609
- const result = validateShareLink(shareLink);
610
- expect(result.ok).toBe(true);
611
- });
612
- it("should return error result for invalid share link", () => {
613
- const shareLink = { token: "abc123" }; // Missing required fields
614
- const result = validateShareLink(shareLink);
615
- expect(result.ok).toBe(false);
616
- });
617
- });
618
- describe("createValidator", () => {
619
- it("should create a working validator", () => {
620
- const validateKeyType = createValidator(KeyTypeSchema);
621
- const validResult = validateKeyType("session");
622
- expect(validResult.ok).toBe(true);
623
- const invalidResult = validateKeyType("invalid");
624
- expect(invalidResult.ok).toBe(false);
625
- });
626
- });
627
- //# sourceMappingURL=types.schema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.schema.test.js","sourceRoot":"","sources":["../../src/delegations/types.schema.test.ts"],"names":[],"mappings":"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"}