test-cloud-auth.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { buildCloudStatusPayload } from './src/server/routes/cloud.js';
  2. import { isCloudUserAuthenticated, sanitizeCloudUser } from './src/cloud/cloud-api.js';
  3. function assert(condition, message) {
  4. if (!condition) throw new Error(message);
  5. }
  6. console.log('\n── Cloud Auth Guards ──');
  7. const invalidUser = {
  8. id: 'app',
  9. code: 203,
  10. detail: 'Please login first',
  11. _status: 203,
  12. };
  13. assert(!isCloudUserAuthenticated(invalidUser), '203 login prompt should be treated as logged out');
  14. const rawUser = {
  15. id: 10007716,
  16. name: 'mzp@ih5.cn',
  17. nickName: 'mz',
  18. companyName: 'ivx',
  19. picture: '//file.example/avatar.png',
  20. domain: 'demo.visuallogic.ai',
  21. status: 1,
  22. worksCount: 42,
  23. isPro: true,
  24. extra: { anthropicKey: 'secret' },
  25. _setCookie: 'ih5bearer=secret',
  26. _status: 200,
  27. };
  28. assert(isCloudUserAuthenticated(rawUser), 'valid user payload should be accepted');
  29. const safeUser = sanitizeCloudUser(rawUser);
  30. assert(safeUser.id === rawUser.id, 'sanitized user should keep id');
  31. assert(safeUser.companyName === rawUser.companyName, 'sanitized user should keep company name');
  32. assert(!('extra' in safeUser), 'sanitized user must drop secret extra payload');
  33. assert(!('_setCookie' in safeUser), 'sanitized user must drop cookie data');
  34. const connected = buildCloudStatusPayload(safeUser);
  35. assert(connected.connected === true, 'connected payload should mark connected');
  36. assert(connected.loggedIn === true, 'connected payload should mark logged in');
  37. assert(connected.user?.name === rawUser.name, 'connected payload should include sanitized user');
  38. const loggedOut = buildCloudStatusPayload(null, 'No cookie');
  39. assert(loggedOut.connected === false, 'logged out payload should mark disconnected');
  40. assert(loggedOut.loggedIn === false, 'logged out payload should mark logged out');
  41. assert(loggedOut.error === 'No cookie', 'logged out payload should preserve error');
  42. console.log('PASS test-cloud-auth.js');