Files
evento/node_modules/@nestjs/serve-static/tests/e2e/fastify-adapter.e2e-spec.ts
2026-03-18 14:55:56 -03:00

194 lines
5.0 KiB
TypeScript

import { NestFactory } from '@nestjs/core';
import {
FastifyAdapter,
NestFastifyApplication
} from '@nestjs/platform-fastify';
import { AppModule } from '../src/app.module';
import { NoopLogger } from '../utils/noop-logger';
import request from 'supertest';
describe('Fastify adapter', () => {
let app: NestFastifyApplication;
describe('when "fallthrough" option is set to "true"', () => {
beforeAll(async () => {
app = await NestFactory.create(
AppModule.withFallthrough(),
new FastifyAdapter(),
{
logger: new NoopLogger()
}
);
app.setGlobalPrefix('api');
await app.init();
await app.getHttpAdapter().getInstance().ready();
});
describe('GET /api', () => {
it('should return "Hello, world!"', async () => {
return app
.inject({
method: 'GET',
url: '/api'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.payload).toEqual('Hello, world!');
});
});
});
describe('GET /', () => {
it('should return HTML file', async () => {
return app
.inject({
method: 'GET',
url: '/'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.headers['content-type']).toMatch(/html/);
expect(result.payload).toContain('Static website');
});
});
});
describe('GET /index.html', () => {
it('should return index page', async () => {
return app
.inject({
method: 'GET',
url: '/index.html'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.payload).toContain('Static website');
});
});
});
describe('GET /logo.svg', () => {
it('should return logo', async () => {
return app
.inject({
method: 'GET',
url: '/logo.svg'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.headers['content-type']).toMatch(/image/);
});
});
});
describe('when trying to get a non-existing file', () => {
it('should returns index page', async () => {
return app
.inject({
method: 'GET',
url: '/404'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.payload).toContain('Static website');
});
});
});
afterAll(async () => {
await app.close();
});
});
describe('when "fallthrough" option is set to "false"', () => {
beforeAll(async () => {
app = await NestFactory.create(
AppModule.withoutFallthrough(),
new FastifyAdapter(),
{
logger: new NoopLogger()
}
);
app.setGlobalPrefix('api');
await app.init();
await app.getHttpAdapter().getInstance().ready();
});
describe('GET /api', () => {
it('should return "Hello, world!"', async () => {
return app
.inject({
method: 'GET',
url: '/api'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.payload).toEqual('Hello, world!');
});
});
});
describe('GET /', () => {
it('should return HTML file', async () => {
return app
.inject({
method: 'GET',
url: '/'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.headers['content-type']).toMatch(/html/);
expect(result.payload).toContain('Static website');
});
});
});
describe('GET /index.html', () => {
it('should return index page', async () => {
return app
.inject({
method: 'GET',
url: '/index.html'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.payload).toContain('Static website');
});
});
});
describe('GET /logo.svg', () => {
it('should return logo', async () => {
return app
.inject({
method: 'GET',
url: '/logo.svg'
})
.then((result) => {
expect(result.statusCode).toEqual(200);
expect(result.headers['content-type']).toMatch(/image/);
});
});
});
describe('when trying to get a non-existing file', () => {
it('should return 404', async () => {
return app
.inject({
method: 'GET',
url: '/404'
})
.then((result) => {
expect(result.statusCode).toEqual(404);
});
});
});
afterAll(async () => {
await app.close();
});
});
});