Skip to content

Commit 508b428

Browse files
committed
✅ test: rss 도메인 테스트 코드 최종 리팩토링
1 parent cd93f67 commit 508b428

File tree

8 files changed

+86
-64
lines changed

8 files changed

+86
-64
lines changed

server/src/rss/service/rss.service.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { DeleteRssRequestDto } from '../dto/request/deleteRss.dto';
2222
import { RedisService } from '../../common/redis/redis.service';
2323
import { DeleteCertificateRssRequestDto } from '../dto/request/deleteCertificateRss.dto';
2424
import { REDIS_KEYS } from '../../common/redis/redis.constant';
25+
import * as uuid from 'uuid';
2526

2627
type FullFeedCrawlMessage = {
2728
rssId: number;
@@ -208,7 +209,7 @@ export class RssService {
208209
throw new NotFoundException('RSS 데이터를 찾을 수 없습니다.');
209210
}
210211

211-
const certificateCode = this.generateRandomAlphaNumeric();
212+
const certificateCode = uuid.v4();
212213

213214
await this.redisService.set(
214215
`${REDIS_KEYS.RSS_REMOVE_KEY}:${certificateCode}`,
@@ -225,19 +226,6 @@ export class RssService {
225226
);
226227
}
227228

228-
private generateRandomAlphaNumeric(length = 6): string {
229-
const charset =
230-
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
231-
let result = '';
232-
233-
for (let i = 0; i < length; i++) {
234-
const index = Math.floor(Math.random() * charset.length);
235-
result += charset[index];
236-
}
237-
238-
return result;
239-
}
240-
241229
async deleteRss(deleteRssDto: DeleteCertificateRssRequestDto) {
242230
const redisKey = `${REDIS_KEYS.RSS_REMOVE_KEY}:${deleteRssDto.code}`;
243231
const rssUrl = await this.redisService.get(redisKey);

server/test/rss/e2e/accept.e2e-spec.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
1717
let rssRepository: RssRepository;
1818
let rssAcceptRepository: RssAcceptRepository;
1919
let redisService: RedisService;
20-
const adminSessionId = 'testSessionId';
20+
const redisKeyMake = (data: string) => `${REDIS_KEYS.ADMIN_AUTH_KEY}:${data}`;
21+
const sessionKey = 'admin-rss-accept';
2122

2223
beforeAll(async () => {
2324
app = global.testApp;
@@ -30,10 +31,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
3031
beforeEach(async () => {
3132
await Promise.all([
3233
rssRepository.delete({}),
33-
redisService.set(
34-
`${REDIS_KEYS.ADMIN_AUTH_KEY}:${adminSessionId}`,
35-
'test_admin',
36-
),
34+
redisService.set(redisKeyMake(sessionKey), 'test1234'),
3735
]);
3836
});
3937

@@ -51,7 +49,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
5149
// Http when
5250
const response = await agent
5351
.post(`${URL}/${Number.MAX_SAFE_INTEGER}`)
54-
.set('Cookie', 'sessionId=invalid');
52+
.set('Cookie', `sessionId=Wrong${sessionKey}`);
5553

5654
// Http then
5755
const { data } = response.body;
@@ -63,7 +61,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
6361
// Http when
6462
const response = await agent
6563
.post(`${URL}/${Number.MAX_SAFE_INTEGER}`)
66-
.set('Cookie', `sessionId=${adminSessionId}`);
64+
.set('Cookie', `sessionId=${sessionKey}`);
6765

6866
// Http then
6967
const { data } = response.body;
@@ -82,7 +80,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
8280
// Http when
8381
const response = await agent
8482
.post(`${URL}/${rss.id}`)
85-
.set('Cookie', `sessionId=${adminSessionId}`);
83+
.set('Cookie', `sessionId=${sessionKey}`);
8684

8785
// Http then
8886
const { data } = response.body;
@@ -116,7 +114,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
116114
// Http when
117115
const response = await agent
118116
.post(`${URL}/${rss.id}`)
119-
.set('Cookie', `sessionId=${adminSessionId}`);
117+
.set('Cookie', `sessionId=${sessionKey}`);
120118

121119
// Http then
122120
const { data } = response.body;

server/test/rss/e2e/get.e2e-spec.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ describe(`GET ${URL} E2E Test`, () => {
1717
let rssRepository: RssRepository;
1818
let rssAcceptRepository: RssAcceptRepository;
1919
let redisService: RedisService;
20+
const redisKeyMake = (data: string) => `${REDIS_KEYS.ADMIN_AUTH_KEY}:${data}`;
21+
const sessionKey = 'admin-rss-get';
2022

2123
beforeAll(() => {
2224
app = global.testApp;
@@ -29,10 +31,7 @@ describe(`GET ${URL} E2E Test`, () => {
2931
beforeEach(async () => {
3032
await Promise.all([
3133
rssRepository.delete({}),
32-
redisService.set(
33-
`${REDIS_KEYS.ADMIN_AUTH_KEY}:testSessionId`,
34-
'test_admin',
35-
),
34+
redisService.set(redisKeyMake(sessionKey), 'test1234'),
3635
]);
3736
});
3837

@@ -48,7 +47,9 @@ describe(`GET ${URL} E2E Test`, () => {
4847

4948
it('[401] 관리자 로그인 쿠키가 만료됐을 경우 RSS 조회를 실패한다.', async () => {
5049
// Http when
51-
const response = await agent.get(URL).set('Cookie', 'sessionId=invalid');
50+
const response = await agent
51+
.get(URL)
52+
.set('Cookie', `sessionId=Wrong${sessionKey}`);
5253

5354
// Http then
5455
const { data } = response.body;
@@ -60,7 +61,7 @@ describe(`GET ${URL} E2E Test`, () => {
6061
// Http when
6162
const response = await agent
6263
.get(URL)
63-
.set('Cookie', 'sessionId=testSessionId');
64+
.set('Cookie', `sessionId=${sessionKey}`);
6465

6566
// Http then
6667
const { data } = response.body;
@@ -75,7 +76,7 @@ describe(`GET ${URL} E2E Test`, () => {
7576
// Http when
7677
const response = await agent
7778
.get(URL)
78-
.set('Cookie', 'sessionId=testSessionId');
79+
.set('Cookie', `sessionId=${sessionKey}`);
7980

8081
// Http then
8182
const { data } = response.body;

server/test/rss/e2e/history/accept.e2e-spec.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ describe(`GET ${URL} E2E Test`, () => {
1313
let app: INestApplication;
1414
let agent: TestAgent;
1515
let rssAcceptList: RssAccept[];
16+
const redisKeyMake = (data: string) => `${REDIS_KEYS.ADMIN_AUTH_KEY}:${data}`;
17+
const sessionKey = 'admin-rss-history-accept';
1618

1719
beforeAll(async () => {
1820
app = global.testApp;
@@ -24,10 +26,7 @@ describe(`GET ${URL} E2E Test`, () => {
2426
);
2527
[rssAcceptList] = await Promise.all([
2628
rssAcceptRepository.save(rssAccepts),
27-
redisService.set(
28-
`${REDIS_KEYS.ADMIN_AUTH_KEY}:testSessionId`,
29-
'test1234',
30-
),
29+
redisService.set(redisKeyMake(sessionKey), 'test1234'),
3130
]);
3231
rssAcceptList.reverse();
3332
});
@@ -44,7 +43,9 @@ describe(`GET ${URL} E2E Test`, () => {
4443

4544
it('[401] 관리자 로그인 쿠키가 만료됐을 경우 RSS 승인 기록 조회를 실패한다.', async () => {
4645
// Http when
47-
const response = await agent.get(URL).set('Cookie', 'sessionId=invalid');
46+
const response = await agent
47+
.get(URL)
48+
.set('Cookie', `sessionId=Wrong${sessionKey}`);
4849

4950
// Http then
5051
const { data } = response.body;
@@ -56,7 +57,7 @@ describe(`GET ${URL} E2E Test`, () => {
5657
// Http when
5758
const response = await agent
5859
.get(URL)
59-
.set('Cookie', 'sessionId=testSessionId');
60+
.set('Cookie', `sessionId=${sessionKey}`);
6061

6162
// Http then
6263
const { data } = response.body;

server/test/rss/e2e/history/reject.e2e-spec.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import { RssRejectRepository } from '../../../../src/rss/repository/rss.reposito
55
import { RssReject } from '../../../../src/rss/entity/rss.entity';
66
import { RssRejectFixture } from '../../../fixture/rss-reject.fixture';
77
import TestAgent from 'supertest/lib/agent';
8+
import { REDIS_KEYS } from '../../../../src/common/redis/redis.constant';
89

910
const URL = '/api/rss/history/reject';
1011

1112
describe(`GET ${URL} E2E Test`, () => {
1213
let app: INestApplication;
1314
let agent: TestAgent;
1415
let rssRejectList: RssReject[];
16+
const redisKeyMake = (data: string) => `${REDIS_KEYS.ADMIN_AUTH_KEY}:${data}`;
17+
const sessionKey = 'admin-rss-history-reject';
1518

1619
beforeAll(async () => {
1720
app = global.testApp;
@@ -23,7 +26,7 @@ describe(`GET ${URL} E2E Test`, () => {
2326
);
2427
[rssRejectList] = await Promise.all([
2528
rssRejectRepository.save(rssAccepts),
26-
redisService.set('auth:testSessionId', 'test1234'),
29+
redisService.set(redisKeyMake(sessionKey), 'test1234'),
2730
]);
2831
rssRejectList.reverse();
2932
});
@@ -40,7 +43,9 @@ describe(`GET ${URL} E2E Test`, () => {
4043

4144
it('[401] 관리자 로그인 쿠키가 만료됐을 경우 RSS 거절 기록 조회를 실패한다.', async () => {
4245
// Http when
43-
const response = await agent.get(URL).set('Cookie', 'sessionId=invalid');
46+
const response = await agent
47+
.get(URL)
48+
.set('Cookie', `sessionId=Wrong${sessionKey}`);
4449

4550
// Http then
4651
const { data } = response.body;
@@ -52,7 +57,7 @@ describe(`GET ${URL} E2E Test`, () => {
5257
// Http when
5358
const response = await agent
5459
.get(URL)
55-
.set('Cookie', 'sessionId=testSessionId');
60+
.set('Cookie', `sessionId=${sessionKey}`);
5661

5762
// Http then
5863
const { data } = response.body;

server/test/rss/e2e/reject.e2e-spec.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
1616
let rssRepository: RssRepository;
1717
let rssRejectRepository: RssRejectRepository;
1818
let redisService: RedisService;
19-
const adminSessionId = 'testSessionId';
19+
const redisKeyMake = (data: string) => `${REDIS_KEYS.ADMIN_AUTH_KEY}:${data}`;
20+
const sessionKey = 'admin-rss-reject';
2021

2122
beforeAll(async () => {
2223
app = global.testApp;
@@ -29,10 +30,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
2930
beforeEach(async () => {
3031
await Promise.all([
3132
rssRepository.delete({}),
32-
redisService.set(
33-
`${REDIS_KEYS.ADMIN_AUTH_KEY}:${adminSessionId}`,
34-
'test_admin',
35-
),
33+
redisService.set(redisKeyMake(sessionKey), 'test1234'),
3634
]);
3735
});
3836

@@ -50,7 +48,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
5048
// Http when
5149
const response = await agent
5250
.post(`${URL}/${Number.MAX_SAFE_INTEGER}`)
53-
.set('Cookie', 'sessionId=invalid');
51+
.set('Cookie', `sessionId=Wrong${sessionKey}`);
5452

5553
// Http then
5654
const { data } = response.body;
@@ -68,7 +66,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
6866
// Http when
6967
const response = await agent
7068
.post(`${URL}/${Number.MAX_SAFE_INTEGER}`)
71-
.set('Cookie', `sessionId=${adminSessionId}`)
69+
.set('Cookie', `sessionId=${sessionKey}`)
7270
.send(requestDTO);
7371

7472
// Http then
@@ -88,7 +86,7 @@ describe(`POST ${URL}/{rssId} E2E Test`, () => {
8886
// Http when
8987
const response = await agent
9088
.post(`${URL}/${rss.id}`)
91-
.set('Cookie', `sessionId=${adminSessionId}`)
89+
.set('Cookie', `sessionId=${sessionKey}`)
9290
.send(requestDto);
9391

9492
// Http then

server/test/rss/e2e/remove-certificate.e2e-spec.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
2828
let userRepository: UserRepository;
2929
let likeRepository: LikeRepository;
3030
let rssRepository: RssRepository;
31+
const redisKeyMake = (data: string) => `${REDIS_KEYS.RSS_REMOVE_KEY}:${data}`;
32+
const rssDeleteCode = 'rss-remove-certificate';
3133

3234
beforeAll(() => {
3335
app = global.testApp;
@@ -42,29 +44,25 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
4244
});
4345

4446
it('[404] RSS 삭제 요청이 만료되었거나 없을 경우 RSS 삭제 인증을 실패한다.', async () => {
45-
// given
46-
const certificateCode = 'test';
47-
const redisKey = `${REDIS_KEYS.RSS_REMOVE_KEY}:${certificateCode}`;
48-
4947
// Http when
50-
const response = await agent.delete(`${URL}/${certificateCode}`);
48+
const response = await agent.delete(`${URL}/Wrong${rssDeleteCode}`);
5149

5250
// Http then
5351
const { data } = response.body;
5452
expect(response.status).toBe(HttpStatus.NOT_FOUND);
5553
expect(data).toBeUndefined();
5654

5755
// DB, Redis when
58-
const savedRssRemoveURL = await redisService.get(redisKey);
56+
const savedRssRemoveURL = await redisService.get(
57+
redisKeyMake(rssDeleteCode),
58+
);
5959

6060
// DB, Redis then
6161
expect(savedRssRemoveURL).toBeNull();
6262
});
6363

6464
it('[200] 삭제 신청된 RSS가 승인된 RSS에 있을 경우 승인된 RSS와 관련된 모든 데이터들의 삭제를 성공한다.', async () => {
6565
// given
66-
const certificateCode = 'test';
67-
const redisKey = `${REDIS_KEYS.RSS_REMOVE_KEY}:${certificateCode}`;
6866
const rssAccept = await rssAcceptRepository.save(
6967
RssFixture.createRssFixture(),
7068
);
@@ -77,10 +75,10 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
7775
await commentRepository.save(
7876
CommentFixture.createCommentFixture(feed, user),
7977
);
80-
await redisService.set(redisKey, rssAccept.rssUrl);
78+
await redisService.set(redisKeyMake(rssDeleteCode), rssAccept.rssUrl);
8179

8280
// Http when
83-
const response = await agent.delete(`${URL}/${certificateCode}`);
81+
const response = await agent.delete(`${URL}/${rssDeleteCode}`);
8482

8583
// Http then
8684
const { data } = response.body;
@@ -94,7 +92,9 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
9492
const savedFeed = await feedRepository.findBy({ blog: rssAccept });
9593
const savedComment = await commentRepository.findBy({ feed });
9694
const savedLike = await likeRepository.findBy({ feed });
97-
const savedRssRemoveURL = await redisService.get(redisKey);
95+
const savedRssRemoveURL = await redisService.get(
96+
redisKeyMake(rssDeleteCode),
97+
);
9898

9999
// DB, Redis then
100100
expect(savedRssAccept).toBeNull();
@@ -106,13 +106,11 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
106106

107107
it('[200] 삭제 신청된 RSS가 대기중인 RSS에 있을 경우 대기중인 RSS 데이터 삭제를 성공한다.', async () => {
108108
// given
109-
const certificateCode = 'test';
110-
const redisKey = `${REDIS_KEYS.RSS_REMOVE_KEY}:${certificateCode}`;
111109
const rss = await rssRepository.save(RssFixture.createRssFixture());
112-
await redisService.set(redisKey, rss.rssUrl);
110+
await redisService.set(redisKeyMake(rssDeleteCode), rss.rssUrl);
113111

114112
// Http when
115-
const response = await agent.delete(`${URL}/${certificateCode}`);
113+
const response = await agent.delete(`${URL}/${rssDeleteCode}`);
116114

117115
// Http then
118116
const { data } = response.body;
@@ -123,7 +121,9 @@ describe(`DELETE ${URL}/{code} E2E Test`, () => {
123121
const savedRss = await rssRepository.findOneBy({
124122
rssUrl: rss.rssUrl,
125123
});
126-
const savedRssRemoveURL = await redisService.get(redisKey);
124+
const savedRssRemoveURL = await redisService.get(
125+
redisKeyMake(rssDeleteCode),
126+
);
127127

128128
// DB, Redis then
129129
expect(savedRss).toBeNull();

0 commit comments

Comments
 (0)