diff --git a/test/app.e2e-spec.ts b/test/app.e2e-spec.ts new file mode 100644 index 000000000..add0e1561 --- /dev/null +++ b/test/app.e2e-spec.ts @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file) + * + * SPDX-License-Identifier: AGPL-3.0-only + */ +import { getConfigToken } from '@nestjs/config'; +import { Test } from '@nestjs/testing'; +import request from 'supertest'; + +import { AppModule } from '../src/app.module'; +import { BackendType } from '../src/media/backends/backend-type.enum'; + +describe('App', () => { + it('should not crash on requests to /', async () => { + const moduleRef = await Test.createTestingModule({ + imports: [AppModule], + }) + .overrideProvider(getConfigToken('appConfig')) + .useValue({ + domain: 'localhost', + port: 3333, + loglevel: 'debug', + }) + .overrideProvider(getConfigToken('mediaConfig')) + .useValue({ + backend: { + use: BackendType.FILESYSTEM, + filesystem: { + uploadPath: + 'test_uploads' + Math.floor(Math.random() * 100000).toString(), + }, + }, + }) + .overrideProvider(getConfigToken('databaseConfig')) + .useValue({ + storage: ':memory:', + dialect: 'sqlite', + }) + .overrideProvider(getConfigToken('authConfig')) + .useValue({ + session: { + secret: 'secret', + }, + }) + .compile(); + + /** + * TODO: This is not really a regression test, as it does not use the + * real initialization code in main.ts. + * Should be fixed after https://github.com/hedgedoc/hedgedoc/issues/2083 + * is done. + */ + const app = moduleRef.createNestApplication(); + await app.init(); + await request(app.getHttpServer()).get('/').expect(404); + await app.close(); + }); +});