@qq33357486/oh-my-task 1.4.4 → 1.4.5

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 (57) hide show
  1. package/package.json +2 -2
  2. package/dist/__tests__/auth-admin.test.d.ts +0 -2
  3. package/dist/__tests__/auth-admin.test.d.ts.map +0 -1
  4. package/dist/__tests__/auth-admin.test.js +0 -440
  5. package/dist/__tests__/auth-admin.test.js.map +0 -1
  6. package/dist/__tests__/auth-login-logout.test.d.ts +0 -2
  7. package/dist/__tests__/auth-login-logout.test.d.ts.map +0 -1
  8. package/dist/__tests__/auth-login-logout.test.js +0 -400
  9. package/dist/__tests__/auth-login-logout.test.js.map +0 -1
  10. package/dist/__tests__/auth-password.test.d.ts +0 -2
  11. package/dist/__tests__/auth-password.test.d.ts.map +0 -1
  12. package/dist/__tests__/auth-password.test.js +0 -419
  13. package/dist/__tests__/auth-password.test.js.map +0 -1
  14. package/dist/__tests__/auth-register.test.d.ts +0 -2
  15. package/dist/__tests__/auth-register.test.d.ts.map +0 -1
  16. package/dist/__tests__/auth-register.test.js +0 -342
  17. package/dist/__tests__/auth-register.test.js.map +0 -1
  18. package/dist/__tests__/auth-tokens.test.d.ts +0 -2
  19. package/dist/__tests__/auth-tokens.test.d.ts.map +0 -1
  20. package/dist/__tests__/auth-tokens.test.js +0 -392
  21. package/dist/__tests__/auth-tokens.test.js.map +0 -1
  22. package/dist/__tests__/db-schema.test.d.ts +0 -2
  23. package/dist/__tests__/db-schema.test.d.ts.map +0 -1
  24. package/dist/__tests__/db-schema.test.js +0 -245
  25. package/dist/__tests__/db-schema.test.js.map +0 -1
  26. package/dist/__tests__/express-server.test.d.ts +0 -2
  27. package/dist/__tests__/express-server.test.d.ts.map +0 -1
  28. package/dist/__tests__/express-server.test.js +0 -119
  29. package/dist/__tests__/express-server.test.js.map +0 -1
  30. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts +0 -2
  31. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.d.ts.map +0 -1
  32. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js +0 -85
  33. package/dist/__tests__/fix-hcaptcha-dev-bypass.test.js.map +0 -1
  34. package/dist/__tests__/mcp/mcp-tools.test.d.ts +0 -2
  35. package/dist/__tests__/mcp/mcp-tools.test.d.ts.map +0 -1
  36. package/dist/__tests__/mcp/mcp-tools.test.js +0 -694
  37. package/dist/__tests__/mcp/mcp-tools.test.js.map +0 -1
  38. package/dist/__tests__/projects.test.d.ts +0 -2
  39. package/dist/__tests__/projects.test.d.ts.map +0 -1
  40. package/dist/__tests__/projects.test.js +0 -406
  41. package/dist/__tests__/projects.test.js.map +0 -1
  42. package/dist/__tests__/schedule.test.d.ts +0 -2
  43. package/dist/__tests__/schedule.test.d.ts.map +0 -1
  44. package/dist/__tests__/schedule.test.js +0 -587
  45. package/dist/__tests__/schedule.test.js.map +0 -1
  46. package/dist/__tests__/tasks-crud.test.d.ts +0 -2
  47. package/dist/__tests__/tasks-crud.test.d.ts.map +0 -1
  48. package/dist/__tests__/tasks-crud.test.js +0 -617
  49. package/dist/__tests__/tasks-crud.test.js.map +0 -1
  50. package/dist/__tests__/tasks-lifecycle.test.d.ts +0 -2
  51. package/dist/__tests__/tasks-lifecycle.test.d.ts.map +0 -1
  52. package/dist/__tests__/tasks-lifecycle.test.js +0 -712
  53. package/dist/__tests__/tasks-lifecycle.test.js.map +0 -1
  54. package/dist/__tests__/versions.test.d.ts +0 -2
  55. package/dist/__tests__/versions.test.d.ts.map +0 -1
  56. package/dist/__tests__/versions.test.js +0 -641
  57. package/dist/__tests__/versions.test.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qq33357486/oh-my-task",
3
- "version": "1.4.4",
3
+ "version": "1.4.5",
4
4
  "description": "文档驱动的 AI 编程协作系统 - 通过 MCP 工具管理任务",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "scripts": {
18
18
  "dev": "tsx watch src/index.ts",
19
19
  "dev:all": "tsx scripts/dev.ts",
20
- "build": "tsc && node scripts/copy-schema.cjs",
20
+ "build": "node scripts/clean-dist.cjs && tsc && node scripts/copy-schema.cjs",
21
21
  "start": "node dist/index.js",
22
22
  "mcp": "tsx src/mcp/server.ts",
23
23
  "db:init": "tsx src/db/init.ts"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=auth-admin.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-admin.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/auth-admin.test.ts"],"names":[],"mappings":""}
@@ -1,440 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
2
- import request from 'supertest';
3
- import Database from 'better-sqlite3';
4
- import { mkdirSync, rmSync, existsSync, readFileSync } from 'fs';
5
- import { join } from 'path';
6
- import { tmpdir } from 'os';
7
- // 每个测试用唯一的临时目录,避免并行测试冲突
8
- let TEST_DIR;
9
- let TEST_DB_PATH;
10
- let app;
11
- // 测试用的用户凭据
12
- const ADMIN_USER = {
13
- name: 'AdminUser',
14
- email: 'admin@example.com',
15
- password: 'AdminPass123'
16
- };
17
- const MEMBER_USER = {
18
- name: 'MemberUser',
19
- email: 'member@example.com',
20
- password: 'MemberPass123'
21
- };
22
- const MEMBER_USER2 = {
23
- name: 'MemberUser2',
24
- email: 'member2@example.com',
25
- password: 'MemberPass456'
26
- };
27
- let adminCookie;
28
- let memberCookie;
29
- let member2Cookie;
30
- let adminId = 'admin-user-001';
31
- let memberId = 'member-user-001';
32
- let member2Id = 'member-user-002';
33
- beforeAll(async () => {
34
- TEST_DIR = join(tmpdir(), `omt-auth-admin-test-${Date.now()}`);
35
- TEST_DB_PATH = join(TEST_DIR, 'data', 'data.db');
36
- mkdirSync(join(TEST_DIR, 'data'), { recursive: true });
37
- process.env.DB_PATH = TEST_DB_PATH;
38
- // 初始化数据库
39
- const db = new Database(TEST_DB_PATH);
40
- db.pragma('journal_mode = WAL');
41
- db.pragma('foreign_keys = ON');
42
- const schemaSql = readFileSync(join(process.cwd(), 'src', 'db', 'schema.sql'), 'utf-8');
43
- db.exec(schemaSql);
44
- db.close();
45
- // 动态导入 app(需要在数据库初始化后)
46
- const serverModule = await import('../api/server.js');
47
- app = serverModule.default;
48
- });
49
- afterAll(() => {
50
- try {
51
- if (existsSync(TEST_DIR)) {
52
- rmSync(TEST_DIR, { recursive: true, force: true });
53
- }
54
- }
55
- catch {
56
- // Windows 可能因文件锁定无法立即删除
57
- }
58
- delete process.env.DB_PATH;
59
- });
60
- /**
61
- * 辅助函数:创建测试用户并登录
62
- */
63
- async function setupUserAndLogin(user, userId, role = 'member') {
64
- const db = new Database(TEST_DB_PATH);
65
- const bcrypt = await import('bcrypt');
66
- const hash = await bcrypt.default.hash(user.password, 12);
67
- db.prepare(`
68
- INSERT OR REPLACE INTO users (id, name, email, password_hash, role)
69
- VALUES (?, ?, ?, ?, ?)
70
- `).run(userId, user.name, user.email, hash, role);
71
- db.close();
72
- const loginRes = await request(app)
73
- .post('/api/auth/login')
74
- .send({ email: user.email, password: user.password });
75
- const setCookie = loginRes.headers['set-cookie'];
76
- if (Array.isArray(setCookie)) {
77
- return setCookie[0].split(';')[0];
78
- }
79
- return setCookie.split(';')[0];
80
- }
81
- /**
82
- * 辅助函数:在数据库中创建项目
83
- */
84
- function createProjectInDb(ownerId, projectId, name) {
85
- const db = new Database(TEST_DB_PATH);
86
- db.prepare(`
87
- INSERT INTO projects (id, name, owner_id) VALUES (?, ?, ?)
88
- `).run(projectId, name, ownerId);
89
- db.close();
90
- }
91
- /**
92
- * 辅助函数:在数据库中创建版本
93
- */
94
- function createVersionInDb(projectId, versionId, name) {
95
- const db = new Database(TEST_DB_PATH);
96
- db.prepare(`
97
- INSERT INTO versions (id, project_id, name) VALUES (?, ?, ?)
98
- `).run(versionId, projectId, name);
99
- db.close();
100
- }
101
- /**
102
- * 辅助函数:在数据库中创建任务
103
- */
104
- function createTaskInDb(projectId, taskId, title, versionId) {
105
- const db = new Database(TEST_DB_PATH);
106
- db.prepare(`
107
- INSERT INTO tasks (id, project_id, title, version_id) VALUES (?, ?, ?, ?)
108
- `).run(taskId, projectId, title, versionId || null);
109
- db.close();
110
- }
111
- /**
112
- * 辅助函数:记录用户活动
113
- */
114
- function recordActivity(userId, action, createdAt) {
115
- const db = new Database(TEST_DB_PATH);
116
- db.prepare(`
117
- INSERT INTO user_activity (id, user_id, action, created_at) VALUES (?, ?, ?, ?)
118
- `).run(`activity-${Date.now()}-${Math.random().toString(36).slice(2)}`, userId, action, createdAt || new Date().toISOString());
119
- db.close();
120
- }
121
- // ============================================
122
- // GET /api/users — 管理员查看用户列表
123
- // ============================================
124
- describe('GET /api/users', () => {
125
- beforeEach(async () => {
126
- // 清理并重建测试数据
127
- const db = new Database(TEST_DB_PATH);
128
- db.prepare('DELETE FROM user_activity');
129
- db.prepare('DELETE FROM tasks');
130
- db.prepare('DELETE FROM versions');
131
- db.prepare('DELETE FROM projects');
132
- db.prepare('DELETE FROM users');
133
- db.close();
134
- adminCookie = await setupUserAndLogin(ADMIN_USER, adminId, 'admin');
135
- memberCookie = await setupUserAndLogin(MEMBER_USER, memberId, 'member');
136
- member2Cookie = await setupUserAndLogin(MEMBER_USER2, member2Id, 'member');
137
- });
138
- it('VAL-AUTH-025: 管理员获取分页用户列表', async () => {
139
- const res = await request(app)
140
- .get('/api/users')
141
- .set('Cookie', adminCookie);
142
- expect(res.status).toBe(200);
143
- expect(res.body.success).toBe(true);
144
- expect(res.body.data.users).toBeDefined();
145
- expect(res.body.data.users.length).toBe(3); // admin + 2 members
146
- expect(res.body.data.pagination).toBeDefined();
147
- expect(res.body.data.pagination.total).toBe(3);
148
- expect(res.body.data.pagination.page).toBe(1);
149
- expect(res.body.data.pagination.total_pages).toBe(1);
150
- // 确认返回的用户包含必要字段
151
- const user = res.body.data.users[0];
152
- expect(user.id).toBeDefined();
153
- expect(user.name).toBeDefined();
154
- expect(user.email).toBeDefined();
155
- expect(user.role).toBeDefined();
156
- expect(user.created_at).toBeDefined();
157
- // 不包含密码
158
- expect(user.password_hash).toBeUndefined();
159
- });
160
- it('分页参数生效', async () => {
161
- const res = await request(app)
162
- .get('/api/users?page=1&page_size=2')
163
- .set('Cookie', adminCookie);
164
- expect(res.status).toBe(200);
165
- expect(res.body.data.users.length).toBe(2);
166
- expect(res.body.data.pagination.page_size).toBe(2);
167
- expect(res.body.data.pagination.total).toBe(3);
168
- expect(res.body.data.pagination.total_pages).toBe(2);
169
- });
170
- it('VAL-AUTH-027: 非管理员访问 GET /api/users 返回 403', async () => {
171
- const res = await request(app)
172
- .get('/api/users')
173
- .set('Cookie', memberCookie);
174
- expect(res.status).toBe(403);
175
- expect(res.body.success).toBe(false);
176
- });
177
- it('未认证访问 GET /api/users 返回 401', async () => {
178
- const res = await request(app)
179
- .get('/api/users');
180
- expect(res.status).toBe(401);
181
- expect(res.body.success).toBe(false);
182
- });
183
- });
184
- // ============================================
185
- // DELETE /api/users/:id — 管理员删除用户
186
- // ============================================
187
- describe('DELETE /api/users/:id', () => {
188
- beforeEach(async () => {
189
- const db = new Database(TEST_DB_PATH);
190
- db.prepare('DELETE FROM user_activity');
191
- db.prepare('DELETE FROM tasks');
192
- db.prepare('DELETE FROM versions');
193
- db.prepare('DELETE FROM projects');
194
- db.prepare('DELETE FROM users');
195
- db.close();
196
- adminCookie = await setupUserAndLogin(ADMIN_USER, adminId, 'admin');
197
- memberCookie = await setupUserAndLogin(MEMBER_USER, memberId, 'member');
198
- member2Cookie = await setupUserAndLogin(MEMBER_USER2, member2Id, 'member');
199
- });
200
- it('VAL-AUTH-026: 管理员删除他人返回 200', async () => {
201
- const res = await request(app)
202
- .delete(`/api/users/${memberId}`)
203
- .set('Cookie', adminCookie);
204
- expect(res.status).toBe(200);
205
- expect(res.body.success).toBe(true);
206
- expect(res.body.message).toBeDefined();
207
- // 验证用户已被删除
208
- const db = new Database(TEST_DB_PATH);
209
- const user = db.prepare('SELECT * FROM users WHERE id = ?').get(memberId);
210
- db.close();
211
- expect(user).toBeUndefined();
212
- });
213
- it('VAL-AUTH-026: 管理员删除自己返回 403', async () => {
214
- const res = await request(app)
215
- .delete(`/api/users/${adminId}`)
216
- .set('Cookie', adminCookie);
217
- expect(res.status).toBe(403);
218
- expect(res.body.success).toBe(false);
219
- });
220
- it('VAL-AUTH-027: 非管理员删除用户返回 403', async () => {
221
- const res = await request(app)
222
- .delete(`/api/users/${member2Id}`)
223
- .set('Cookie', memberCookie);
224
- expect(res.status).toBe(403);
225
- expect(res.body.success).toBe(false);
226
- });
227
- it('删除不存在的用户返回 404', async () => {
228
- const res = await request(app)
229
- .delete('/api/users/nonexistent-id')
230
- .set('Cookie', adminCookie);
231
- expect(res.status).toBe(404);
232
- expect(res.body.success).toBe(false);
233
- });
234
- it('VAL-CROSS-009: 删除用户后其项目/版本/任务被级联删除', async () => {
235
- // 为 member 用户创建项目、版本、任务
236
- createProjectInDb(memberId, 'proj-member-1', 'Member Project');
237
- createVersionInDb('proj-member-1', 'ver-member-1', 'v1');
238
- createTaskInDb('proj-member-1', 'task-member-1', 'Member Task', 'ver-member-1');
239
- // 确认数据存在
240
- const dbBefore = new Database(TEST_DB_PATH);
241
- const projBefore = dbBefore.prepare('SELECT * FROM projects WHERE owner_id = ?').all(memberId);
242
- expect(projBefore.length).toBe(1);
243
- dbBefore.close();
244
- // 管理员删除用户
245
- const res = await request(app)
246
- .delete(`/api/users/${memberId}`)
247
- .set('Cookie', adminCookie);
248
- expect(res.status).toBe(200);
249
- // 验证级联删除
250
- const dbAfter = new Database(TEST_DB_PATH);
251
- const projects = dbAfter.prepare('SELECT * FROM projects WHERE owner_id = ?').all(memberId);
252
- const versions = dbAfter.prepare('SELECT * FROM versions WHERE project_id = ?').all('proj-member-1');
253
- const tasks = dbAfter.prepare('SELECT * FROM tasks WHERE project_id = ?').all('proj-member-1');
254
- dbAfter.close();
255
- expect(projects.length).toBe(0);
256
- expect(versions.length).toBe(0);
257
- expect(tasks.length).toBe(0);
258
- });
259
- it('删除用户不影响其他用户的数据', async () => {
260
- // 为两个 member 用户创建项目
261
- createProjectInDb(memberId, 'proj-member-1', 'Member1 Project');
262
- createProjectInDb(member2Id, 'proj-member-2', 'Member2 Project');
263
- // 管理员删除 member
264
- await request(app)
265
- .delete(`/api/users/${memberId}`)
266
- .set('Cookie', adminCookie);
267
- // member2 的项目应该还在
268
- const db = new Database(TEST_DB_PATH);
269
- const proj = db.prepare('SELECT * FROM projects WHERE owner_id = ?').all(member2Id);
270
- db.close();
271
- expect(proj.length).toBe(1);
272
- expect(proj[0].name).toBe('Member2 Project');
273
- });
274
- });
275
- // ============================================
276
- // GET /api/config — 系统配置
277
- // ============================================
278
- describe('GET /api/config', () => {
279
- beforeEach(async () => {
280
- const db = new Database(TEST_DB_PATH);
281
- db.prepare('DELETE FROM users');
282
- db.close();
283
- adminCookie = await setupUserAndLogin(ADMIN_USER, adminId, 'admin');
284
- memberCookie = await setupUserAndLogin(MEMBER_USER, memberId, 'member');
285
- });
286
- it('VAL-AUTH-028: 管理员获取系统配置', async () => {
287
- const res = await request(app)
288
- .get('/api/config')
289
- .set('Cookie', adminCookie);
290
- expect(res.status).toBe(200);
291
- expect(res.body.success).toBe(true);
292
- expect(res.body.data).toBeDefined();
293
- expect(res.body.data.server_url).toBeDefined();
294
- expect(res.body.data.registration_enabled).toBeDefined();
295
- expect(res.body.data.smtp_host).toBeDefined();
296
- });
297
- it('VAL-AUTH-027: 非管理员访问 GET /api/config 返回 403', async () => {
298
- const res = await request(app)
299
- .get('/api/config')
300
- .set('Cookie', memberCookie);
301
- expect(res.status).toBe(403);
302
- expect(res.body.success).toBe(false);
303
- });
304
- });
305
- // ============================================
306
- // PUT /api/config — 更新系统配置
307
- // ============================================
308
- describe('PUT /api/config', () => {
309
- beforeEach(async () => {
310
- const db = new Database(TEST_DB_PATH);
311
- db.prepare('DELETE FROM users');
312
- db.close();
313
- adminCookie = await setupUserAndLogin(ADMIN_USER, adminId, 'admin');
314
- memberCookie = await setupUserAndLogin(MEMBER_USER, memberId, 'member');
315
- });
316
- it('VAL-AUTH-028: 管理员更新配置成功', async () => {
317
- const res = await request(app)
318
- .put('/api/config')
319
- .set('Cookie', adminCookie)
320
- .send({
321
- registration_enabled: '0',
322
- smtp_host: 'smtp.example.com'
323
- });
324
- expect(res.status).toBe(200);
325
- expect(res.body.success).toBe(true);
326
- expect(res.body.data.registration_enabled).toBe('0');
327
- expect(res.body.data.smtp_host).toBe('smtp.example.com');
328
- });
329
- it('VAL-AUTH-028: 更新后 GET 确认值已变更', async () => {
330
- // 更新配置
331
- await request(app)
332
- .put('/api/config')
333
- .set('Cookie', adminCookie)
334
- .send({
335
- registration_enabled: '0',
336
- smtp_host: 'smtp.updated.com',
337
- smtp_port: '465'
338
- });
339
- // GET 确认
340
- const getRes = await request(app)
341
- .get('/api/config')
342
- .set('Cookie', adminCookie);
343
- expect(getRes.status).toBe(200);
344
- expect(getRes.body.data.registration_enabled).toBe('0');
345
- expect(getRes.body.data.smtp_host).toBe('smtp.updated.com');
346
- expect(getRes.body.data.smtp_port).toBe('465');
347
- });
348
- it('VAL-AUTH-027: 非管理员 PUT /api/config 返回 403', async () => {
349
- const res = await request(app)
350
- .put('/api/config')
351
- .set('Cookie', memberCookie)
352
- .send({ registration_enabled: '0' });
353
- expect(res.status).toBe(403);
354
- expect(res.body.success).toBe(false);
355
- });
356
- });
357
- // ============================================
358
- // GET /api/admin/stats — 用户统计
359
- // ============================================
360
- describe('GET /api/admin/stats', () => {
361
- beforeEach(async () => {
362
- const db = new Database(TEST_DB_PATH);
363
- db.prepare('DELETE FROM user_activity');
364
- db.prepare('DELETE FROM tasks');
365
- db.prepare('DELETE FROM versions');
366
- db.prepare('DELETE FROM projects');
367
- db.prepare('DELETE FROM users');
368
- db.close();
369
- adminCookie = await setupUserAndLogin(ADMIN_USER, adminId, 'admin');
370
- memberCookie = await setupUserAndLogin(MEMBER_USER, memberId, 'member');
371
- });
372
- it('VAL-AUTH-032: 管理员获取用户统计', async () => {
373
- const res = await request(app)
374
- .get('/api/admin/stats')
375
- .set('Cookie', adminCookie);
376
- expect(res.status).toBe(200);
377
- expect(res.body.success).toBe(true);
378
- expect(res.body.data).toBeDefined();
379
- // newUsers: 日/周/月新增用户数
380
- expect(res.body.data.newUsers).toBeDefined();
381
- expect(res.body.data.newUsers.daily).toBeDefined();
382
- expect(res.body.data.newUsers.weekly).toBeDefined();
383
- expect(res.body.data.newUsers.monthly).toBeDefined();
384
- // dau: 日活用户
385
- expect(res.body.data.dau).toBeDefined();
386
- expect(Array.isArray(res.body.data.dau)).toBe(true);
387
- // retention: 留存率
388
- expect(res.body.data.retention).toBeDefined();
389
- });
390
- it('VAL-AUTH-032: 新增用户数统计准确', async () => {
391
- const res = await request(app)
392
- .get('/api/admin/stats')
393
- .set('Cookie', adminCookie);
394
- expect(res.status).toBe(200);
395
- // 今天创建了 2 个用户(admin + member),所以 daily 至少为 2
396
- const daily = res.body.data.newUsers.daily;
397
- expect(typeof daily).toBe('number');
398
- expect(daily).toBeGreaterThanOrEqual(2);
399
- });
400
- it('VAL-AUTH-032: DAU 统计返回近 7 天数据', async () => {
401
- // 为 member 用户记录一些活动
402
- recordActivity(memberId, 'login');
403
- recordActivity(adminId, 'login');
404
- const res = await request(app)
405
- .get('/api/admin/stats')
406
- .set('Cookie', adminCookie);
407
- expect(res.status).toBe(200);
408
- const dau = res.body.data.dau;
409
- expect(dau.length).toBe(7);
410
- // 每天至少有日期和数量
411
- for (const day of dau) {
412
- expect(day.date).toBeDefined();
413
- expect(day.count).toBeDefined();
414
- }
415
- });
416
- it('VAL-AUTH-032: 留存率返回数据', async () => {
417
- const res = await request(app)
418
- .get('/api/admin/stats')
419
- .set('Cookie', adminCookie);
420
- expect(res.status).toBe(200);
421
- const retention = res.body.data.retention;
422
- expect(retention).toBeDefined();
423
- // 留存率应包含 day1, day7 等字段
424
- expect(typeof retention).toBe('object');
425
- });
426
- it('VAL-AUTH-027: 非管理员访问 GET /api/admin/stats 返回 403', async () => {
427
- const res = await request(app)
428
- .get('/api/admin/stats')
429
- .set('Cookie', memberCookie);
430
- expect(res.status).toBe(403);
431
- expect(res.body.success).toBe(false);
432
- });
433
- it('未认证访问 GET /api/admin/stats 返回 401', async () => {
434
- const res = await request(app)
435
- .get('/api/admin/stats');
436
- expect(res.status).toBe(401);
437
- expect(res.body.success).toBe(false);
438
- });
439
- });
440
- //# sourceMappingURL=auth-admin.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-admin.test.js","sourceRoot":"","sources":["../../src/__tests__/auth-admin.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=auth-login-logout.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-login-logout.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/auth-login-logout.test.ts"],"names":[],"mappings":""}