authenticatedApplication.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import type Koa from 'koa'
  2. import {
  3. createApplication,
  4. type ApplicationOptions,
  5. type ApplicationRuntime,
  6. } from '../../src/server/app.js'
  7. import type { ServerConfig } from '../../src/server/config.js'
  8. import { LocalAuthStore, type LocalUser } from '../../src/server/localAuth.js'
  9. const TEST_ADMIN: LocalUser = {
  10. id: 'test-admin',
  11. username: 'test-admin',
  12. role: 'admin',
  13. enabled: true,
  14. mustChangePassword: false,
  15. createdAt: 1,
  16. updatedAt: 1,
  17. }
  18. const TEST_USER: LocalUser = {
  19. ...TEST_ADMIN,
  20. id: 'test-user',
  21. username: 'test-user',
  22. role: 'user',
  23. }
  24. class AuthenticatedTestStore extends LocalAuthStore {
  25. override current(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  26. override require(_ctx: Koa.Context, _allowPasswordChange = false): LocalUser { return TEST_ADMIN }
  27. override requireAdmin(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  28. }
  29. class UserAuthenticatedTestStore extends LocalAuthStore {
  30. override current(_ctx: Koa.Context): LocalUser { return TEST_USER }
  31. override require(_ctx: Koa.Context, _allowPasswordChange = false): LocalUser { return TEST_USER }
  32. }
  33. export function createAuthenticatedApplication(
  34. options: ApplicationOptions & { config: ServerConfig },
  35. ): ApplicationRuntime {
  36. return createApplication({
  37. ...options,
  38. auth: new AuthenticatedTestStore(options.config.home, Boolean(options.config.tlsCert)),
  39. })
  40. }
  41. export function createUserAuthenticatedApplication(
  42. options: ApplicationOptions & { config: ServerConfig },
  43. ): ApplicationRuntime {
  44. return createApplication({
  45. ...options,
  46. auth: new UserAuthenticatedTestStore(options.config.home, Boolean(options.config.tlsCert)),
  47. })
  48. }