11import {
22 DEFAULT_NOTION_BASE_URL ,
3+ DEFAULT_NOTION_POLL_CRON ,
34 DEFAULT_NOTION_TIMEOUT_MS ,
45 DEFAULT_NOTION_VERSION ,
56 resolveNotionConfig ,
7+ resolveNotionPollCron ,
68} from './notion.config' ;
79
810describe ( 'resolveNotionConfig' , ( ) => {
@@ -12,27 +14,28 @@ describe('resolveNotionConfig', () => {
1214 expect ( resolveNotionConfig ( { NOTION_TOKEN : ' ' } ) ) . toBeNull ( ) ;
1315 } ) ;
1416
15- it ( 'NOTION_TOKEN만 있으면 version/baseUrl/timeout은 디폴트, databaseIds는 빈 배열' , ( ) => {
17+ it ( 'NOTION_TOKEN만 있으면 version/baseUrl/timeout은 디폴트, databaseIds는 빈 배열, 서명은 null ' , ( ) => {
1618 expect ( resolveNotionConfig ( { NOTION_TOKEN : 't' } ) ) . toEqual ( {
1719 token : 't' ,
1820 version : DEFAULT_NOTION_VERSION ,
1921 baseUrl : DEFAULT_NOTION_BASE_URL ,
2022 timeoutMs : DEFAULT_NOTION_TIMEOUT_MS ,
2123 databaseIds : [ ] ,
24+ signingSecret : null ,
2225 } ) ;
2326 } ) ;
2427
2528 it ( 'NOTION_VERSION / NOTION_BASE_URL / NOTION_TIMEOUT_MS를 적용한다' , ( ) => {
2629 expect (
2730 resolveNotionConfig ( {
2831 NOTION_TOKEN : 't' ,
29- NOTION_VERSION : '2022-06-28 ' ,
32+ NOTION_VERSION : '2025-09-03 ' ,
3033 NOTION_BASE_URL : 'https://api.notion.com/' ,
3134 NOTION_TIMEOUT_MS : '15000' ,
3235 } ) ,
3336 ) . toMatchObject ( {
3437 token : 't' ,
35- version : '2022-06-28 ' ,
38+ version : '2025-09-03 ' ,
3639 baseUrl : 'https://api.notion.com' ,
3740 timeoutMs : 15000 ,
3841 } ) ;
@@ -75,4 +78,20 @@ describe('resolveNotionConfig', () => {
7578 resolveNotionConfig ( { NOTION_TOKEN : 't' , NOTION_BASE_URL : 'ftp://x' } ) ,
7679 ) . toThrow ( / N O T I O N _ B A S E _ U R L / ) ;
7780 } ) ;
81+
82+ it ( 'NOTION_SIGNING_SECRET을 파싱한다(즉시 버튼 HMAC 검증용). 미설정/공백이면 null' , ( ) => {
83+ expect ( resolveNotionConfig ( { NOTION_TOKEN : 't' , NOTION_SIGNING_SECRET : 's3cr3t' } ) ?. signingSecret ) . toBe (
84+ 's3cr3t' ,
85+ ) ;
86+ expect ( resolveNotionConfig ( { NOTION_TOKEN : 't' } ) ?. signingSecret ) . toBeNull ( ) ;
87+ expect ( resolveNotionConfig ( { NOTION_TOKEN : 't' , NOTION_SIGNING_SECRET : ' ' } ) ?. signingSecret ) . toBeNull ( ) ;
88+ } ) ;
89+ } ) ;
90+
91+ describe ( 'resolveNotionPollCron' , ( ) => {
92+ it ( '기본은 30분마다, NOTION_POLL_CRON이 있으면 그 값을 쓴다' , ( ) => {
93+ expect ( resolveNotionPollCron ( { } ) ) . toBe ( DEFAULT_NOTION_POLL_CRON ) ;
94+ expect ( resolveNotionPollCron ( { NOTION_POLL_CRON : '0 */5 * * * *' } ) ) . toBe ( '0 */5 * * * *' ) ;
95+ expect ( resolveNotionPollCron ( { NOTION_POLL_CRON : ' ' } ) ) . toBe ( DEFAULT_NOTION_POLL_CRON ) ;
96+ } ) ;
7897} ) ;
0 commit comments