fix: align auth success status contract
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
import { HTTP_CODE_METADATA } from '@nestjs/common/constants';
|
||||||
|
|
||||||
|
jest.mock('./auth.service', () => ({
|
||||||
|
AuthService: class AuthService {},
|
||||||
|
}));
|
||||||
|
|
||||||
|
import { AuthController } from './auth.controller';
|
||||||
|
|
||||||
|
describe('AuthController response statuses', () => {
|
||||||
|
it.each(['register', 'login', 'refresh'] as const)(
|
||||||
|
'%s explicitly returns HTTP 200',
|
||||||
|
(handler) => {
|
||||||
|
// Nest stores @HttpCode metadata on the unbound handler function.
|
||||||
|
const handlerTarget = Object.getOwnPropertyDescriptor(
|
||||||
|
AuthController.prototype,
|
||||||
|
handler,
|
||||||
|
)?.value as object;
|
||||||
|
expect(Reflect.getMetadata(HTTP_CODE_METADATA, handlerTarget)).toBe(200);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -49,6 +49,7 @@ export class AuthController {
|
|||||||
constructor(private readonly auth: AuthService) {}
|
constructor(private readonly auth: AuthService) {}
|
||||||
|
|
||||||
@Post('register')
|
@Post('register')
|
||||||
|
@HttpCode(200)
|
||||||
@ApiOkResponse({ type: AuthenticationDto })
|
@ApiOkResponse({ type: AuthenticationDto })
|
||||||
async register(
|
async register(
|
||||||
@Body() credentials: CredentialsDto,
|
@Body() credentials: CredentialsDto,
|
||||||
@@ -61,6 +62,7 @@ export class AuthController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Post('login')
|
@Post('login')
|
||||||
|
@HttpCode(200)
|
||||||
@ApiOkResponse({ type: AuthenticationDto })
|
@ApiOkResponse({ type: AuthenticationDto })
|
||||||
async login(
|
async login(
|
||||||
@Body() credentials: CredentialsDto,
|
@Body() credentials: CredentialsDto,
|
||||||
@@ -73,6 +75,7 @@ export class AuthController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Post('refresh')
|
@Post('refresh')
|
||||||
|
@HttpCode(200)
|
||||||
@ApiOkResponse({ type: AuthenticationDto })
|
@ApiOkResponse({ type: AuthenticationDto })
|
||||||
async refresh(
|
async refresh(
|
||||||
@Req() request: Request,
|
@Req() request: Request,
|
||||||
|
|||||||
+13
-6
@@ -34,7 +34,7 @@ describe('Authentication (e2e)', () => {
|
|||||||
const registration = await agent
|
const registration = await agent
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: ' User@Example.com ', password: 'a secure password' })
|
.send({ email: ' User@Example.com ', password: 'a secure password' })
|
||||||
.expect(201);
|
.expect(200);
|
||||||
|
|
||||||
const authentication = registration.body as Authentication;
|
const authentication = registration.body as Authentication;
|
||||||
expect(authentication.user.email).toBe('user@example.com');
|
expect(authentication.user.email).toBe('user@example.com');
|
||||||
@@ -49,7 +49,7 @@ describe('Authentication (e2e)', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const firstCookie = registration.headers['set-cookie'][0];
|
const firstCookie = registration.headers['set-cookie'][0];
|
||||||
await agent.post('/api/v1/auth/refresh').expect(201);
|
await agent.post('/api/v1/auth/refresh').expect(200);
|
||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/refresh')
|
.post('/api/v1/auth/refresh')
|
||||||
.set('Cookie', firstCookie)
|
.set('Cookie', firstCookie)
|
||||||
@@ -63,7 +63,14 @@ describe('Authentication (e2e)', () => {
|
|||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: 'user@example.com', password: 'a secure password' })
|
.send({ email: 'user@example.com', password: 'a secure password' })
|
||||||
.expect(201);
|
.expect(200);
|
||||||
|
await request(app.getHttpServer())
|
||||||
|
.post('/api/v1/auth/login')
|
||||||
|
.send({ email: 'user@example.com', password: 'a secure password' })
|
||||||
|
.expect(200)
|
||||||
|
.expect(({ body }: { body: unknown }) =>
|
||||||
|
expect((body as Authentication).user.email).toBe('user@example.com'),
|
||||||
|
);
|
||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: 'USER@example.com', password: 'a secure password' })
|
.send({ email: 'USER@example.com', password: 'a secure password' })
|
||||||
@@ -84,7 +91,7 @@ describe('Authentication (e2e)', () => {
|
|||||||
const registration = await request(app.getHttpServer())
|
const registration = await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: 'connection@example.com', password: 'a secure password' })
|
.send({ email: 'connection@example.com', password: 'a secure password' })
|
||||||
.expect(201);
|
.expect(200);
|
||||||
const accessToken = (registration.body as Authentication).accessToken;
|
const accessToken = (registration.body as Authentication).accessToken;
|
||||||
|
|
||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
@@ -103,7 +110,7 @@ describe('Authentication (e2e)', () => {
|
|||||||
const registration = await request(app.getHttpServer())
|
const registration = await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: 'accounts@example.com', password: 'a secure password' })
|
.send({ email: 'accounts@example.com', password: 'a secure password' })
|
||||||
.expect(201);
|
.expect(200);
|
||||||
const accessToken = (registration.body as Authentication).accessToken;
|
const accessToken = (registration.body as Authentication).accessToken;
|
||||||
|
|
||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
@@ -122,7 +129,7 @@ describe('Authentication (e2e)', () => {
|
|||||||
const registration = await request(app.getHttpServer())
|
const registration = await request(app.getHttpServer())
|
||||||
.post('/api/v1/auth/register')
|
.post('/api/v1/auth/register')
|
||||||
.send({ email: 'portfolio@example.com', password: 'a secure password' })
|
.send({ email: 'portfolio@example.com', password: 'a secure password' })
|
||||||
.expect(201);
|
.expect(200);
|
||||||
const accessToken = (registration.body as Authentication).accessToken;
|
const accessToken = (registration.body as Authentication).accessToken;
|
||||||
|
|
||||||
await request(app.getHttpServer())
|
await request(app.getHttpServer())
|
||||||
|
|||||||
Reference in New Issue
Block a user