Skip to content

Commit f550b09

Browse files
전화번호 스키마를 개선하여 발신번호를 전화번호 스키마로 통합하고, 숫자 및 하이픈 외의 문자를 포함할 수 없도록 검증 로직을 추가함. 관련 테스트 케이스를 추가하여 유효성 검사를 강화함.
1 parent 2c25999 commit f550b09

2 files changed

Lines changed: 23 additions & 11 deletions

File tree

src/models/requests/messages/sendMessage.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,14 @@ export const phoneNumberSchema = Schema.String.pipe(
99
decode: removeHyphens,
1010
encode: s => s,
1111
}),
12+
// 하이픈 제거 이후 값이 비어있지 않은지 확인 (예: "---" -> "")
1213
Schema.filter(s => s.trim().length > 0, {
13-
message: () => '수신 번호는 빈 문자열일 수 없습니다.',
14+
message: () => '전화번호는 빈 문자열일 수 없습니다.',
1415
}),
15-
);
16-
17-
export const fromPhoneNumberSchema = Schema.String.pipe(
18-
Schema.transform(Schema.String, {
19-
decode: removeHyphens,
20-
encode: s => s,
21-
}),
22-
Schema.filter(s => s.trim().length > 0, {
23-
message: () => '발신 번호는 빈 문자열일 수 없습니다.',
16+
// 숫자 및 하이픈만 허용하도록 강제. 하이픈 제거 후에는 숫자만 남아야 함
17+
Schema.filter(s => /^[0-9]+$/.test(s), {
18+
message: () =>
19+
'전화번호는 숫자 및 특수문자 - 외 문자를 포함할 수 없습니다.',
2420
}),
2521
);
2622

@@ -49,7 +45,7 @@ export const requestSendOneMessageSchema = messageSchema.pipe(
4945
Schema.extend(
5046
Schema.Struct({
5147
to: Schema.Union(phoneNumberSchema, Schema.Array(phoneNumberSchema)),
52-
from: Schema.optional(fromPhoneNumberSchema),
48+
from: Schema.optional(phoneNumberSchema),
5349
}),
5450
),
5551
);

test/models/requests/messages/sendMessage.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,22 @@ describe('phoneNumberSchema', () => {
4646

4747
expect(result).toBe('01012345678');
4848
});
49+
50+
it('should fail when phone number contains letters', () => {
51+
expect(() => {
52+
Schema.decodeUnknownSync(phoneNumberSchema)('010-ABCD-5678');
53+
}).toThrow();
54+
});
55+
56+
it('should fail when phone number contains plus sign or spaces', () => {
57+
expect(() => {
58+
Schema.decodeUnknownSync(phoneNumberSchema)('+82-10-1234-5678');
59+
}).toThrow();
60+
61+
expect(() => {
62+
Schema.decodeUnknownSync(phoneNumberSchema)('010 1234 5678');
63+
}).toThrow();
64+
});
4965
});
5066

5167
describe('requestSendOneMessageSchema', () => {

0 commit comments

Comments
 (0)