1- const { createHmac } = require ( "crypto" ) ;
2-
31const { initHandler, requestWithHandler } = require ( "../_api" ) ;
42
3+
54const SECRET = "secret" ;
65const PAYLOAD = JSON . stringify ( {
76 foo : "bar"
87} ) ;
98
9+
1010const requestWithWebhookHandler = ( ) => {
1111 return requestWithHandler (
1212 initHandler ( require ( "path" ) . join ( __dirname , "./app" ) ) ,
@@ -16,6 +16,7 @@ const requestWithWebhookHandler = () => {
1616 headers : {
1717 "User-Agent" : "GitHub-Hookshot/044aadd" ,
1818 "X-Hub-Signature-256" : `sha256=${
19+ require ( "crypto" ) .
1920 createHmac ( "sha256" , SECRET )
2021 . update ( PAYLOAD )
2122 . digest ( "hex" )
@@ -26,37 +27,55 @@ const requestWithWebhookHandler = () => {
2627 ) ;
2728} ;
2829
29- const README_FILE_PATH = require ( "path" ) . join ( __dirname , "./app" , "README.md" ) ;
30+
31+ const getFilePath = name => {
32+ return require ( "path" ) . join ( __dirname , "./app" , name ) ;
33+ }
34+ const fileExists = name => {
35+ return require ( "fs" ) . existsSync ( getFilePath ( name ) ) ;
36+ }
37+
3038const README_OVERRIDE_DATA = "OVERRIDE" ;
31- require ( "fs" ) . writeFileSync ( README_FILE_PATH , README_OVERRIDE_DATA ) ;
39+
40+ require ( "fs" ) . writeFileSync ( getFilePath ( "README.md" ) , README_OVERRIDE_DATA ) ;
41+ require ( "fs" ) . rmSync ( getFilePath ( "EMPTY.md" ) , { force : true } ) ;
42+ require ( "fs" ) . rmSync ( getFilePath ( "test/file-2.txt" ) , { force : true } ) ;
43+
3244
3345new UnitTest ( "POST_ GitHub:/ (dummy)" )
3446. actual ( async ( ) => {
3547 const res = await requestWithWebhookHandler ( ) ;
3648
37- const fileExists = name => {
38- return require ( "fs ")
39- . existsSync ( require ( "path" ) . join ( __dirname , "./app" , name ) ) ;
40- }
41-
42- new UnitTest ( "POST GitHub:/ (dummy) → .env (from local )" )
43- . actual ( fileExists ( ".env " ) )
44- . expect ( true ) ;
49+ await new Promise ( r => setTimeout ( ( ) => {
50+ new UnitTest ( "POST GitHub:/ (dummy) → .env (from local) ")
51+ . actual ( fileExists ( ".env" ) )
52+ . expect ( true ) ;
53+
54+ new UnitTest ( "POST GitHub:/ (dummy) → test/file.txt (from remote )" )
55+ . actual ( fileExists ( "test/file.txt " ) )
56+ . expect ( true ) ;
4557
46- new UnitTest ( "POST GitHub:/ (dummy) → test/file.txt (from remote )" )
47- . actual ( fileExists ( "test/file.txt" ) )
48- . expect ( true ) ;
58+ new UnitTest ( "POST GitHub:/ (dummy) ¬ test/file-2 .txt (non-whitelisted )" )
59+ . actual ( fileExists ( "test/file-2 .txt" ) )
60+ . expect ( false ) ;
4961
50- new UnitTest ( "POST GitHub:/ (dummy) ¬ non-existing.txt" )
51- . actual ( fileExists ( "non-existing.txt" ) )
52- . expect ( false ) ;
53-
54- setTimeout ( ( ) => {
62+ new UnitTest ( "POST GitHub:/ (dummy) ¬ EMPTY.md (non-whitelisted)" )
63+ . actual ( fileExists ( "EMPTY.md" ) )
64+ . expect ( false ) ;
65+
5566 new UnitTest ( "POST GitHub:/ (dummy) ¬ README.md override" )
56- . actual ( require ( "fs" ) . readFileSync ( README_FILE_PATH ) . toString ( ) . trim ( ) !== README_OVERRIDE_DATA )
67+ . actual (
68+ require ( "fs" )
69+ . readFileSync ( getFilePath ( "README.md" ) )
70+ . toString ( )
71+ . trim ( )
72+ !== README_OVERRIDE_DATA
73+ )
5774 . expect ( true ) ;
58- } , 750 ) ; // TODO: Improve (reliability)
59-
75+
76+ r ( ) ;
77+ } , 750 ) ) ; // TODO: Improve reliability (wait for emit files visibility)
78+
6079 return res ;
6180} )
6281. expect ( {
0 commit comments