authenticatedApplication.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233
  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. class AuthenticatedTestStore extends LocalAuthStore {
  19. override current(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  20. override require(_ctx: Koa.Context, _allowPasswordChange = false): LocalUser { return TEST_ADMIN }
  21. override requireAdmin(_ctx: Koa.Context): LocalUser { return TEST_ADMIN }
  22. }
  23. export function createAuthenticatedApplication(
  24. options: ApplicationOptions & { config: ServerConfig },
  25. ): ApplicationRuntime {
  26. return createApplication({
  27. ...options,
  28. auth: new AuthenticatedTestStore(options.config.home, Boolean(options.config.tlsCert)),
  29. })
  30. }