@terreno/api 0.21.0 → 0.22.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 (51) hide show
  1. package/bunfig.toml +1 -1
  2. package/dist/auth.test.js +408 -33
  3. package/dist/models/consentForm.js +2 -1
  4. package/dist/models/consentResponse.js +2 -1
  5. package/dist/models/versionConfig.js +2 -1
  6. package/dist/openApiBuilder.d.ts +18 -0
  7. package/dist/openApiBuilder.js +21 -0
  8. package/dist/openApiBuilder.test.js +16 -0
  9. package/dist/permissions.test.js +10 -43
  10. package/dist/populate.test.js +10 -42
  11. package/dist/syncConsents.test.js +2 -2
  12. package/dist/tests/bunSetup.js +33 -283
  13. package/dist/tests/createTestData.d.ts +9 -0
  14. package/dist/tests/createTestData.js +272 -0
  15. package/dist/tests/models.d.ts +71 -0
  16. package/dist/tests/models.js +134 -0
  17. package/dist/tests/mongoTestSetup.d.ts +7 -0
  18. package/dist/tests/mongoTestSetup.js +150 -0
  19. package/dist/tests/testEnv.d.ts +0 -0
  20. package/dist/tests/testEnv.js +6 -0
  21. package/dist/tests/testHelper.d.ts +22 -0
  22. package/dist/tests/testHelper.js +115 -0
  23. package/dist/tests/types.d.ts +29 -0
  24. package/dist/tests/types.js +2 -0
  25. package/dist/tests.d.ts +10 -78
  26. package/dist/tests.js +24 -264
  27. package/dist/transformers.test.js +14 -50
  28. package/package.json +18 -4
  29. package/src/__snapshots__/openApiBuilder.test.ts.snap +1 -0
  30. package/src/auth.test.ts +277 -29
  31. package/src/models/consentForm.ts +3 -4
  32. package/src/models/consentResponse.ts +6 -4
  33. package/src/models/versionConfig.ts +3 -4
  34. package/src/openApiBuilder.test.ts +9 -0
  35. package/src/openApiBuilder.ts +24 -0
  36. package/src/permissions.test.ts +8 -23
  37. package/src/populate.test.ts +7 -22
  38. package/src/syncConsents.test.ts +1 -1
  39. package/src/tests/bunSetup.ts +22 -249
  40. package/src/tests/createTestData.ts +176 -0
  41. package/src/tests/models.ts +164 -0
  42. package/src/tests/mongoTestSetup.ts +69 -0
  43. package/src/tests/testEnv.ts +4 -0
  44. package/src/tests/testHelper.ts +57 -0
  45. package/src/tests/types.ts +35 -0
  46. package/src/tests.ts +40 -244
  47. package/src/transformers.test.ts +11 -30
  48. package/tsconfig.typedoc.json +4 -0
  49. package/dist/tests/index.d.ts +0 -1
  50. package/dist/tests/index.js +0 -17
  51. package/src/tests/index.ts +0 -1
@@ -35,22 +35,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
- var __read = (this && this.__read) || function (o, n) {
39
- var m = typeof Symbol === "function" && o[Symbol.iterator];
40
- if (!m) return o;
41
- var i = m.call(o), r, ar = [], e;
42
- try {
43
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
- }
45
- catch (error) { e = { error: error }; }
46
- finally {
47
- try {
48
- if (r && !r.done && (m = i["return"])) m.call(i);
49
- }
50
- finally { if (e) throw e.error; }
51
- }
52
- return ar;
53
- };
54
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
55
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
56
40
  };
@@ -66,30 +50,13 @@ var tests_1 = require("./tests");
66
50
  var server;
67
51
  var app;
68
52
  (0, bun_test_1.beforeEach)(function () { return __awaiter(void 0, void 0, void 0, function () {
69
- var _a, admin, notAdmin;
70
- return __generator(this, function (_b) {
71
- switch (_b.label) {
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
72
55
  case 0:
73
56
  process.env.REFRESH_TOKEN_SECRET = "testsecret1234";
74
- return [4 /*yield*/, (0, tests_1.setupDb)()];
57
+ return [4 /*yield*/, (0, tests_1.setupTestData)()];
75
58
  case 1:
76
- _a = __read.apply(void 0, [_b.sent(), 2]), admin = _a[0], notAdmin = _a[1];
77
- return [4 /*yield*/, Promise.all([
78
- tests_1.FoodModel.create({
79
- calories: 1,
80
- created: new Date(),
81
- name: "Spinach",
82
- ownerId: notAdmin._id,
83
- }),
84
- tests_1.FoodModel.create({
85
- calories: 100,
86
- created: Date.now() - 10,
87
- name: "Apple",
88
- ownerId: admin._id,
89
- }),
90
- ])];
91
- case 2:
92
- _b.sent();
59
+ _a.sent();
93
60
  app = (0, tests_1.getBaseServer)();
94
61
  (0, auth_1.setupAuth)(app, tests_1.UserModel);
95
62
  (0, auth_1.addAuthRoutes)(app, tests_1.UserModel);
@@ -125,7 +92,7 @@ var tests_1 = require("./tests");
125
92
  case 0: return [4 /*yield*/, server.get("/food").expect(200)];
126
93
  case 1:
127
94
  res = _a.sent();
128
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
95
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
129
96
  return [2 /*return*/];
130
97
  }
131
98
  });
@@ -137,7 +104,7 @@ var tests_1 = require("./tests");
137
104
  case 0: return [4 /*yield*/, server.get("/food").expect(200)];
138
105
  case 1:
139
106
  res = _a.sent();
140
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
107
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
141
108
  return [4 /*yield*/, server.get("/food/".concat(res.body.data[0]._id)).expect(200)];
142
109
  case 2:
143
110
  res2 = _a.sent();
@@ -213,7 +180,7 @@ var tests_1 = require("./tests");
213
180
  case 0: return [4 /*yield*/, agent.get("/food").expect(200)];
214
181
  case 1:
215
182
  res = _a.sent();
216
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
183
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
217
184
  return [2 /*return*/];
218
185
  }
219
186
  });
@@ -225,7 +192,7 @@ var tests_1 = require("./tests");
225
192
  case 0: return [4 /*yield*/, agent.get("/food").expect(200)];
226
193
  case 1:
227
194
  res = _a.sent();
228
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
195
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
229
196
  return [4 /*yield*/, server.get("/food/".concat(res.body.data[0]._id)).expect(200)];
230
197
  case 2:
231
198
  res2 = _a.sent();
@@ -326,7 +293,7 @@ var tests_1 = require("./tests");
326
293
  case 0: return [4 /*yield*/, agent.get("/food")];
327
294
  case 1:
328
295
  res = _a.sent();
329
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
296
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
330
297
  return [2 /*return*/];
331
298
  }
332
299
  });
@@ -338,7 +305,7 @@ var tests_1 = require("./tests");
338
305
  case 0: return [4 /*yield*/, agent.get("/food")];
339
306
  case 1:
340
307
  res = _a.sent();
341
- (0, bun_test_1.expect)(res.body.data).toHaveLength(2);
308
+ (0, bun_test_1.expect)(res.body.data).toHaveLength(4);
342
309
  return [4 /*yield*/, agent.get("/food/".concat(res.body.data[0]._id))];
343
310
  case 2:
344
311
  res2 = _a.sent();
@@ -68,22 +68,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
68
68
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
69
  }
70
70
  };
71
- var __read = (this && this.__read) || function (o, n) {
72
- var m = typeof Symbol === "function" && o[Symbol.iterator];
73
- if (!m) return o;
74
- var i = m.call(o), r, ar = [], e;
75
- try {
76
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
77
- }
78
- catch (error) { e = { error: error }; }
79
- finally {
80
- try {
81
- if (r && !r.done && (m = i["return"])) m.call(i);
82
- }
83
- finally { if (e) throw e.error; }
84
- }
85
- return ar;
86
- };
87
71
  Object.defineProperty(exports, "__esModule", { value: true });
88
72
  // biome-ignore-all lint/suspicious/noExplicitAny: test mock typing
89
73
  var bun_test_1 = require("bun:test");
@@ -96,31 +80,15 @@ var tests_1 = require("./tests");
96
80
  // noExplicitAny: typing as HydratedDocument<Food> causes cascading errors on populated field access patterns (e.g. populated.ownerId.name)
97
81
  var spinach;
98
82
  (0, bun_test_1.beforeEach)(function () { return __awaiter(void 0, void 0, void 0, function () {
99
- var _a, _b;
100
- return __generator(this, function (_c) {
101
- switch (_c.label) {
102
- case 0: return [4 /*yield*/, (0, tests_1.setupDb)()];
83
+ var testData;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0: return [4 /*yield*/, (0, tests_1.setupTestData)()];
103
87
  case 1:
104
- _a = __read.apply(void 0, [_c.sent(), 2]), admin = _a[0], notAdmin = _a[1];
105
- return [4 /*yield*/, Promise.all([
106
- tests_1.FoodModel.create({
107
- calories: 1,
108
- created: new Date("2021-12-03T00:00:20.000Z"),
109
- eatenBy: [admin._id],
110
- hidden: false,
111
- likesIds: [
112
- { likes: true, userId: admin._id },
113
- { likes: false, userId: notAdmin._id },
114
- ],
115
- name: "Spinach",
116
- ownerId: admin._id,
117
- source: {
118
- name: "Brand",
119
- },
120
- }),
121
- ])];
122
- case 2:
123
- _b = __read.apply(void 0, [_c.sent(), 1]), spinach = _b[0];
88
+ testData = _a.sent();
89
+ admin = testData.users.admin;
90
+ notAdmin = testData.users.notAdmin;
91
+ spinach = testData.foods.spinach;
124
92
  return [2 /*return*/];
125
93
  }
126
94
  });
@@ -139,7 +107,7 @@ var tests_1 = require("./tests");
139
107
  return [4 /*yield*/, populated.populate("likesIds.userId")];
140
108
  case 3:
141
109
  populated = _c.sent();
142
- (0, bun_test_1.expect)(populated.ownerId.name).toBe("Admin");
110
+ (0, bun_test_1.expect)(populated.ownerId.name).toBe("Not Admin");
143
111
  (0, bun_test_1.expect)(populated.eatenBy[0].id).toBe(admin.id);
144
112
  (0, bun_test_1.expect)(populated.eatenBy[0].name).toBe("Admin");
145
113
  (0, bun_test_1.expect)(populated.likesIds[0].userId.id).toBe(admin.id);
@@ -148,7 +116,7 @@ var tests_1 = require("./tests");
148
116
  (0, bun_test_1.expect)(populated.likesIds[1].userId.name).toBe("Not Admin");
149
117
  unpopulated = (0, populate_1.unpopulate)(populated, "ownerId");
150
118
  (0, bun_test_1.expect)(spinach.ownerId.name).toBeUndefined();
151
- (0, bun_test_1.expect)(unpopulated.ownerId.toString()).toBe(admin.id);
119
+ (0, bun_test_1.expect)(unpopulated.ownerId.toString()).toBe(notAdmin.id);
152
120
  // Ensure nothing else was touched.
153
121
  (0, bun_test_1.expect)(populated.likesIds[0].userId.id).toBe(admin.id);
154
122
  (0, bun_test_1.expect)(populated.likesIds[0].userId.name).toBe("Admin");
@@ -50,7 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
50
50
  var bun_test_1 = require("bun:test");
51
51
  var consentForm_1 = require("./models/consentForm");
52
52
  var syncConsents_1 = require("./syncConsents");
53
- var tests_1 = require("./tests");
53
+ var testHelper_1 = require("./tests/testHelper");
54
54
  var baseDef = {
55
55
  content: { en: "# Terms\nPlease agree." },
56
56
  order: 1,
@@ -62,7 +62,7 @@ var baseDef = {
62
62
  (0, bun_test_1.beforeEach)(function () { return __awaiter(void 0, void 0, void 0, function () {
63
63
  return __generator(this, function (_a) {
64
64
  switch (_a.label) {
65
- case 0: return [4 /*yield*/, (0, tests_1.setupDb)()];
65
+ case 0: return [4 /*yield*/, (0, testHelper_1.setupDb)()];
66
66
  case 1:
67
67
  _a.sent();
68
68
  return [4 /*yield*/, consentForm_1.ConsentForm.deleteMany({})];
@@ -68,290 +68,40 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
68
68
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
69
  }
70
70
  };
71
- var __read = (this && this.__read) || function (o, n) {
72
- var m = typeof Symbol === "function" && o[Symbol.iterator];
73
- if (!m) return o;
74
- var i = m.call(o), r, ar = [], e;
75
- try {
76
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
77
- }
78
- catch (error) { e = { error: error }; }
79
- finally {
80
- try {
81
- if (r && !r.done && (m = i["return"])) m.call(i);
82
- }
83
- finally { if (e) throw e.error; }
84
- }
85
- return ar;
86
- };
87
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
88
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
89
- if (ar || !(i in from)) {
90
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
91
- ar[i] = from[i];
92
- }
93
- }
94
- return to.concat(ar || Array.prototype.slice.call(from));
95
- };
96
- var __importDefault = (this && this.__importDefault) || function (mod) {
97
- return (mod && mod.__esModule) ? mod : { "default": mod };
98
- };
99
71
  Object.defineProperty(exports, "__esModule", { value: true });
100
- // biome-ignore-all lint/suspicious/noExplicitAny: test mock typing
101
- var bun_test_1 = require("bun:test");
102
- var node_stream_1 = require("node:stream");
103
- var mongoose_1 = __importDefault(require("mongoose"));
104
- var winston_1 = __importDefault(require("winston"));
105
- var expressServer_1 = require("../expressServer");
106
- var logger_1 = require("../logger");
107
- var shouldConnectToTestDb = process.env.BUN_TEST_DISABLE_DB !== "true";
108
- var defaultLocalMongoUri = "mongodb://127.0.0.1/terreno?&connectTimeoutMS=360000";
109
- /** When set by {@link TERRENO_TEST_USE_MEMORY_MONGO}, holds the server to stop in afterAll. */
110
- var memoryMongo;
111
- // Connect to MongoDB once for all tests
112
- if (shouldConnectToTestDb) {
113
- (0, bun_test_1.beforeAll)(function () { return __awaiter(void 0, void 0, void 0, function () {
114
- var uri, MongoMemoryServer, connectUri;
115
- var _a;
116
- return __generator(this, function (_b) {
117
- switch (_b.label) {
118
- case 0:
119
- uri = (_a = process.env.TERRENO_TEST_MONGODB_URI) === null || _a === void 0 ? void 0 : _a.trim();
120
- if (!(!uri && process.env.TERRENO_TEST_USE_MEMORY_MONGO === "true")) return [3 /*break*/, 3];
121
- return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("mongodb-memory-server")); })];
122
- case 1:
123
- MongoMemoryServer = (_b.sent()).MongoMemoryServer;
124
- return [4 /*yield*/, MongoMemoryServer.create()];
125
- case 2:
126
- memoryMongo = _b.sent();
127
- uri = memoryMongo.getUri();
128
- _b.label = 3;
129
- case 3:
130
- connectUri = uri !== null && uri !== void 0 ? uri : defaultLocalMongoUri;
131
- return [4 /*yield*/, mongoose_1.default.connect(connectUri).catch(logger_1.logger.catch)];
132
- case 4:
133
- _b.sent();
134
- return [2 /*return*/];
135
- }
136
- });
137
- }); });
138
- }
139
- // Close MongoDB connection after all tests
140
- if (shouldConnectToTestDb) {
141
- (0, bun_test_1.afterAll)(function () { return __awaiter(void 0, void 0, void 0, function () {
142
- return __generator(this, function (_a) {
143
- switch (_a.label) {
144
- case 0: return [4 /*yield*/, mongoose_1.default.connection.close()];
145
- case 1:
146
- _a.sent();
147
- if (!memoryMongo) return [3 /*break*/, 3];
148
- return [4 /*yield*/, memoryMongo.stop()];
149
- case 2:
150
- _a.sent();
151
- _a.label = 3;
152
- case 3: return [2 /*return*/];
153
- }
154
- });
155
- }); });
156
- }
157
- var logs = [];
158
- var SHOW_ALL_LOGS = process.env.SHOW_ALL_TEST_LOGS === "true";
159
- // Create a custom stream that captures logs
160
- var logStream = new node_stream_1.Writable({
161
- write: function (chunk, _encoding, callback) {
162
- logs.push(chunk.toString());
163
- if (SHOW_ALL_LOGS) {
164
- process.stdout.write(chunk);
165
- }
166
- callback();
167
- },
168
- });
169
- // Silence both winston loggers by replacing all transports with our capturing stream
170
- var silentTransport = new winston_1.default.transports.Stream({
171
- format: winston_1.default.format.simple(),
172
- stream: logStream,
173
- });
174
- // Clear and silence the default winston logger
175
- winston_1.default.clear();
176
- winston_1.default.add(silentTransport);
177
- // Clear and silence the custom winstonLogger
178
- logger_1.winstonLogger.clear();
179
- logger_1.winstonLogger.add(silentTransport);
180
- // Capture and silence console methods
181
- var originalConsole = {
182
- debug: console.debug,
183
- error: console.error,
184
- info: console.info,
185
- // biome-ignore lint/suspicious/noConsole: We keep the original reference.
186
- log: console.log,
187
- warn: console.warn,
188
- };
189
- var captureConsoleMethod = function (method) {
190
- console[method] = function () {
191
- var args = [];
192
- for (var _i = 0; _i < arguments.length; _i++) {
193
- args[_i] = arguments[_i];
194
- }
195
- var logMessage = "[console.".concat(method, "] ").concat(args.map(function (arg) { return (typeof arg === "object" ? JSON.stringify(arg) : String(arg)); }).join(" "));
196
- logs.push(logMessage);
197
- if (SHOW_ALL_LOGS) {
198
- originalConsole[method].apply(originalConsole, __spreadArray([], __read(args), false));
199
- }
200
- };
201
- };
202
- captureConsoleMethod("log");
203
- captureConsoleMethod("info");
204
- captureConsoleMethod("warn");
205
- captureConsoleMethod("error");
206
- captureConsoleMethod("debug");
207
- // Setup before each test
208
- (0, bun_test_1.beforeEach)(function () {
209
- process.env.TOKEN_SECRET = "secret";
210
- process.env.TOKEN_ISSUER = "terreno-api.test";
211
- process.env.SESSION_SECRET = "sessionSecret";
212
- process.env.REFRESH_TOKEN_SECRET = "refreshTokenSecret";
213
- (0, expressServer_1.setupEnvironment)();
214
- // Re-silence loggers after setupEnvironment which may reconfigure them
215
- winston_1.default.clear();
216
- winston_1.default.add(silentTransport);
217
- logger_1.winstonLogger.clear();
218
- logger_1.winstonLogger.add(silentTransport);
219
- logs = [];
220
- });
221
- // Clear logs after each test
222
- (0, bun_test_1.afterEach)(function () {
223
- logs = [];
224
- });
225
- // Mock @sentry/bun module
226
- bun_test_1.mock.module("@sentry/bun", function () {
227
- var mockFn = function () { return (0, bun_test_1.mock)(function () { }); };
228
- // Mock Scope
229
- var mockScope = {
230
- addBreadcrumb: mockFn(),
231
- clear: mockFn(),
232
- getSpan: mockFn(),
233
- setContext: mockFn(),
234
- setFingerprint: mockFn(),
235
- setLevel: mockFn(),
236
- setSpan: mockFn(),
237
- setTag: mockFn(),
238
- setTags: mockFn(),
239
- setTransactionName: mockFn(),
240
- setUser: mockFn(),
241
- };
242
- // Mock Hub
243
- var mockClient = {
244
- captureException: mockFn(),
245
- captureMessage: mockFn(),
246
- close: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
247
- flush: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
248
- getOptions: (0, bun_test_1.mock)(function () { return ({}); }),
249
- };
250
- var mockHub = {
251
- addBreadcrumb: mockFn(),
252
- captureException: mockFn(),
253
- captureMessage: mockFn(),
254
- configureScope: mockFn(),
255
- getClient: (0, bun_test_1.mock)(function () { return mockClient; }),
256
- getScope: (0, bun_test_1.mock)(function () { return mockScope; }),
257
- popScope: mockFn(),
258
- pushScope: mockFn(),
259
- setContext: mockFn(),
260
- setTag: mockFn(),
261
- setTags: mockFn(),
262
- setUser: mockFn(),
263
- withScope: mockFn(),
264
- };
265
- var mockSpan = {
266
- finish: mockFn(),
267
- setData: mockFn(),
268
- setStatus: mockFn(),
269
- setTag: mockFn(),
270
- startChild: mockFn(),
271
- toTraceparent: (0, bun_test_1.mock)(function () { return "mock-trace-parent"; }),
272
- };
273
- mockSpan.startChild = (0, bun_test_1.mock)(function () { return mockSpan; });
274
- var mockTransaction = {
275
- finish: mockFn(),
276
- setData: mockFn(),
277
- setName: mockFn(),
278
- setStatus: mockFn(),
279
- setTag: mockFn(),
280
- startChild: (0, bun_test_1.mock)(function () { return mockSpan; }),
281
- toTraceparent: (0, bun_test_1.mock)(function () { return "mock-trace-parent"; }),
282
- };
283
- return {
284
- addBreadcrumb: mockFn(),
285
- captureException: mockFn(),
286
- captureMessage: mockFn(),
287
- clearScope: mockFn(),
288
- close: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
289
- configureScope: mockFn(),
290
- default: {
291
- addBreadcrumb: mockFn(),
292
- captureException: mockFn(),
293
- captureMessage: mockFn(),
294
- clearScope: mockFn(),
295
- close: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
296
- configureScope: mockFn(),
297
- flush: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
298
- getClient: (0, bun_test_1.mock)(function () { return mockClient; }),
299
- getCurrentHub: (0, bun_test_1.mock)(function () { return mockHub; }),
300
- getCurrentScope: (0, bun_test_1.mock)(function () { return mockScope; }),
301
- Handlers: {
302
- errorHandler: (0, bun_test_1.mock)(function () { return function (err, _req, _res, next) { return next(err); }; }),
303
- requestHandler: (0, bun_test_1.mock)(function () { return function (_req, _res, next) { return next(); }; }),
304
- tracingHandler: (0, bun_test_1.mock)(function () { return function (_req, _res, next) { return next(); }; }),
305
- },
306
- init: mockFn(),
307
- isInitialized: (0, bun_test_1.mock)(function () { return true; }),
308
- popScope: mockFn(),
309
- pushScope: mockFn(),
310
- Severity: {
311
- Debug: "debug",
312
- Error: "error",
313
- Fatal: "fatal",
314
- Info: "info",
315
- Warning: "warning",
316
- },
317
- setContext: mockFn(),
318
- setFingerprint: mockFn(),
319
- setLevel: mockFn(),
320
- setTag: mockFn(),
321
- setTags: mockFn(),
322
- setUser: mockFn(),
323
- setupExpressErrorHandler: mockFn(),
324
- startTransaction: (0, bun_test_1.mock)(function () { return mockTransaction; }),
325
- withScope: (0, bun_test_1.mock)(function (callback) { return callback(mockScope); }),
72
+ var test_1 = require("@terreno/test");
73
+ var useFixtureCache = process.env.TERRENO_TEST_USE_FIXTURE_CACHE === "true";
74
+ if (useFixtureCache) {
75
+ (0, test_1.registerBackendPreload)({
76
+ connectMongoInBeforeAll: true,
77
+ loadTestDataFromCache: function () { return __awaiter(void 0, void 0, void 0, function () {
78
+ var loadTestDataFromCache;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./mongoTestSetup")); })];
82
+ case 1:
83
+ loadTestDataFromCache = (_a.sent()).loadTestDataFromCache;
84
+ return [4 /*yield*/, loadTestDataFromCache()];
85
+ case 2:
86
+ _a.sent();
87
+ return [2 /*return*/];
88
+ }
89
+ });
90
+ }); },
91
+ mongo: {
92
+ baseDatabaseName: "terrenoTest_base",
93
+ useReplSet: true,
326
94
  },
327
- flush: (0, bun_test_1.mock)(function () { return Promise.resolve(true); }),
328
- getClient: (0, bun_test_1.mock)(function () { return mockClient; }),
329
- getCurrentHub: (0, bun_test_1.mock)(function () { return mockHub; }),
330
- getCurrentScope: (0, bun_test_1.mock)(function () { return mockScope; }),
331
- Handlers: {
332
- errorHandler: (0, bun_test_1.mock)(function () { return function (err, _req, _res, next) { return next(err); }; }),
333
- requestHandler: (0, bun_test_1.mock)(function () { return function (_req, _res, next) { return next(); }; }),
334
- tracingHandler: (0, bun_test_1.mock)(function () { return function (_req, _res, next) { return next(); }; }),
95
+ testEnv: {
96
+ tokenIssuer: "terreno-api.test",
335
97
  },
336
- init: mockFn(),
337
- isInitialized: (0, bun_test_1.mock)(function () { return true; }),
338
- popScope: mockFn(),
339
- pushScope: mockFn(),
340
- Severity: {
341
- Debug: "debug",
342
- Error: "error",
343
- Fatal: "fatal",
344
- Info: "info",
345
- Warning: "warning",
98
+ useTransactions: true,
99
+ });
100
+ }
101
+ else {
102
+ (0, test_1.registerSimpleMongoPreload)({
103
+ testEnv: {
104
+ tokenIssuer: "terreno-api.test",
346
105
  },
347
- setContext: mockFn(),
348
- setFingerprint: mockFn(),
349
- setLevel: mockFn(),
350
- setTag: mockFn(),
351
- setTags: mockFn(),
352
- setUser: mockFn(),
353
- setupExpressErrorHandler: mockFn(),
354
- startTransaction: (0, bun_test_1.mock)(function () { return mockTransaction; }),
355
- withScope: (0, bun_test_1.mock)(function (callback) { return callback(mockScope); }),
356
- };
357
- });
106
+ });
107
+ }
@@ -0,0 +1,9 @@
1
+ import type { CachedTestData, TestData, TestFoods, TestRequired, TestUsers } from "./types";
2
+ export declare const clearTestCollections: () => Promise<void>;
3
+ export declare const createTestUsers: () => Promise<TestUsers>;
4
+ export declare const createStandardFoods: (users: TestUsers) => Promise<TestFoods>;
5
+ export declare const createRequiredFixtures: () => Promise<TestRequired>;
6
+ /** Builds the standard Terreno API test database (users, foods, required docs). */
7
+ export declare const createTestData: () => Promise<TestData>;
8
+ export declare const toCachedTestData: (testData: TestData) => CachedTestData;
9
+ export declare const loadTestDataFromDocuments: (cached: CachedTestData) => Promise<TestData>;