문제점 : 게시글을 작성하는 API의 Jest e2e 테스트에서 expected 201 "Created", got 401 "Unauthorized"
오류가 발생함
시도해본 것 :
return request(app.getHttpServer())
.post('/api/postCards/post/createPost')
.set('Authorization', `Bearer ${payload.sub}`) // Assuming JWT is being used for auth
.attach('files', Buffer.from([]), 'filename.txt')
.field(createCardDto)
.expect(201)
.expect({ msg: '포스트 작성에 성공했습니다.' });
});
.set('Authorization', `Bearer ${payload.sub}`)
사용해봤다. 하지만 여전히 Jwt인증 오류가 발생했다.
해결 :
let useMock = true;
jest.mock('../src/auth/jwt/jwt.guard', () => ({
JwtAuthGuard: jest.fn().mockImplementation(() => ({
canActivate: jest.fn().mockImplementation((context) => {
if (useMock) {
const req = context.switchToHttp().getRequest();
req.user = {
sub: 'd87f78c5-7e86-44d7-a065-d994668d5e84' as `${string}-${string}-${string}-${string}-${string}`,
};
return true;
}
}),
})),
}));
...
it('/post/createPost (POST)', () => {
const createCardDto = {
title: 'Test Title',
maincategory: 'TestCategory',
category: 'SubCategory',
desc: 'Test Description',
pollType: 'Test Poll Type',
pollTitle: 'Test Poll Title',
tag: 'TestTag',
imgUrl: 'https://example.com/test.jpg',
};
const payload = {
sub: '21c01d77-e275-4eea-bc97-209cb980415a' as `${string}-${string}-${string}-${string}-${string}`,
};
return request(app.getHttpServer())
.post('/api/postCards/post/createPost')
.set('Authorization', `Bearer ${payload.sub}`) // Assuming JWT is being used for auth
.attach('files', Buffer.from([]), 'filename.txt')
.field(createCardDto)
.expect(201)
.expect({ msg: '포스트 작성에 성공했습니다.' });
});
알게 된 점 :
결론 : 실제 인증 절차를 건너뛰고, 인증이 성공한 것처럼 서버에게 알리는 테스트 전용 인증 과정을 실행하는 것이다.