authenticatedApplication.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 canUseSource() { return true }
  26. override currentFromCookieHeader(_cookie: string | undefined): LocalUser { return TEST_ADMIN }
  27. override current(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  28. override require(_ctx: Koa.Context, _allowPasswordChange = false): LocalUser { return TEST_ADMIN }
  29. override requireAdmin(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  30. }
  31. class UserAuthenticatedTestStore extends LocalAuthStore {
  32. override canUseSource() { return true }
  33. override currentFromCookieHeader(_cookie: string | undefined): LocalUser { return TEST_USER }
  34. override current(_ctx: Koa.Context): LocalUser { return TEST_USER }
  35. override require(_ctx: Koa.Context, _allowPasswordChange = false): LocalUser { return TEST_USER }
  36. }
  37. export function createAuthenticatedApplication(
  38. options: ApplicationOptions & { config: ServerConfig },
  39. ): ApplicationRuntime {
  40. return createApplication({
  41. ...options,
  42. auth: new AuthenticatedTestStore(options.config.home, Boolean(options.config.tlsCert)),
  43. })
  44. }
  45. export function createUserAuthenticatedApplication(
  46. options: ApplicationOptions & { config: ServerConfig },
  47. ): ApplicationRuntime {
  48. return createApplication({
  49. ...options,
  50. auth: new UserAuthenticatedTestStore(options.config.home, Boolean(options.config.tlsCert)),
  51. })
  52. }