From 8bbad4523e7ae6ac9c6efab919f03a345d9ae224 Mon Sep 17 00:00:00 2001 From: Banerjee Aditya Date: Thu, 8 Feb 2024 17:25:12 +0800 Subject: [PATCH 1/6] update gitignore and add bunfig.toml --- .gitignore | 3 ++- telegram-bot/bunfig.toml | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 telegram-bot/bunfig.toml diff --git a/.gitignore b/.gitignore index 496ee2c..0095c05 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.DS_Store \ No newline at end of file +.DS_Store +logs \ No newline at end of file diff --git a/telegram-bot/bunfig.toml b/telegram-bot/bunfig.toml new file mode 100644 index 0000000..f739c23 --- /dev/null +++ b/telegram-bot/bunfig.toml @@ -0,0 +1,5 @@ +[test] +root = 'src/__tests__' +coverage = true +coverageThreshold = { line = 0.9, function = 0.9, statement = 0.9, branch = 0.9 } +coverageSkipTestFiles = true From 925912d9e4ddb6cdc671e707afd2a75d6e9ac559 Mon Sep 17 00:00:00 2001 From: Banerjee Aditya Date: Thu, 8 Feb 2024 17:25:32 +0800 Subject: [PATCH 2/6] add tests for telebot logger --- .../src/__tests__/components/logger.test.ts | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 telegram-bot/src/__tests__/components/logger.test.ts diff --git a/telegram-bot/src/__tests__/components/logger.test.ts b/telegram-bot/src/__tests__/components/logger.test.ts new file mode 100644 index 0000000..8e63a7e --- /dev/null +++ b/telegram-bot/src/__tests__/components/logger.test.ts @@ -0,0 +1,58 @@ +import { describe, expect, it, spyOn } from 'bun:test'; +import log4js from 'log4js'; +import { Logger } from 'components/logger'; + +describe('Logger', () => { + const loggerConfigSpy = spyOn(log4js, 'configure'); + const loggerGetSpy = spyOn(log4js, 'getLogger'); + + it('should construct a logger', () => { + try { + // @ts-ignore + new Logger(); + } catch (error) { + expect(error).not.toBeDefined(); + } + }); + + it('should call log4js.configure with default log level', () => { + Logger.getLogger(); + expect(loggerConfigSpy).toHaveBeenCalledWith({ + appenders: { + console: { type: 'console' }, + file: { type: 'file', filename: 'logs/combined.log' }, + error: { type: 'file', filename: 'logs/error.log' }, + }, + categories: { + default: { appenders: ['console', 'file'], level: 'debug' }, + error: { appenders: ['error', 'file'], level: 'error' }, + }, + }); + }); + + it('should call log4js.configure with custom log level', () => { + Logger.configure('info'); + Logger.getLogger(); + expect(loggerConfigSpy).toHaveBeenCalledWith({ + appenders: { + console: { type: 'console' }, + file: { type: 'file', filename: 'logs/combined.log' }, + error: { type: 'file', filename: 'logs/error.log' }, + }, + categories: { + default: { appenders: ['console', 'file'], level: 'debug' }, + error: { appenders: ['error', 'file'], level: 'error' }, + }, + }); + }); + + it('should call log4js.getLogger with default category', () => { + Logger.getLogger(); + expect(loggerGetSpy).toHaveBeenCalledWith('default'); + }); + + it('should call log4js.getLogger with custom category', () => { + Logger.getLogger('custom'); + expect(loggerGetSpy).toHaveBeenCalledWith('custom'); + }); +}); From b9f329e886fb4d00e06ec7b7facad98f9bab5887 Mon Sep 17 00:00:00 2001 From: Banerjee Aditya Date: Thu, 8 Feb 2024 17:38:09 +0800 Subject: [PATCH 3/6] add tests for telebot server component --- telegram-bot/bun.lockb | Bin 89300 -> 95695 bytes telegram-bot/package.json | 4 +- .../src/__tests__/components/server.test.ts | 36 ++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 telegram-bot/src/__tests__/components/server.test.ts diff --git a/telegram-bot/bun.lockb b/telegram-bot/bun.lockb index e415ae25d4a016be2303f903b96c6b7ba11a54dd..82920ee6137823e3579c9ace234d61ff0758b8b8 100755 GIT binary patch delta 16646 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 diff --git a/telegram-bot/package.json b/telegram-bot/package.json index c8be7d6..8104b08 100644 --- a/telegram-bot/package.json +++ b/telegram-bot/package.json @@ -15,7 +15,9 @@ "@types/bun": "latest", "@types/express": "^4.17.21", "@types/node-telegram-bot-api": "^0.64.2", - "prettier": "^3.2.5" + "@types/supertest": "^6.0.2", + "prettier": "^3.2.5", + "supertest": "^6.3.4" }, "peerDependencies": { "typescript": "^5.0.0" diff --git a/telegram-bot/src/__tests__/components/server.test.ts b/telegram-bot/src/__tests__/components/server.test.ts new file mode 100644 index 0000000..4260c96 --- /dev/null +++ b/telegram-bot/src/__tests__/components/server.test.ts @@ -0,0 +1,36 @@ +import { describe, it, expect, spyOn, beforeAll } from 'bun:test'; +import { Bot } from 'components/bot'; +import { Server } from 'components/server'; +import request from 'supertest'; + +describe('Server', () => { + let server: Server; + let bot: Bot; + + spyOn(Bot.prototype, 'processUpdate').mockResolvedValue( + undefined as unknown as never, + ); + + beforeAll(() => { + // @ts-ignore + bot = new Bot(); + server = Server.getInstance(); + server.setupBot(bot); + }); + + it('should return OK for GET /health', async () => { + // @ts-ignore + const response = await request(server.app).get('/health'); + expect(response.status).toBe(200); + expect(response.text).toBe('OK'); + }); + + it('should call bot.processUpdate for POST /:token', async () => { + // @ts-ignore + const response = await request(server.app) + .post(`/${process.env.TELEGRAM_BOT_TOKEN}`) + .send({}); + expect(response.status).toBe(200); + expect(bot.processUpdate).toHaveBeenCalled(); + }); +}); From 333f90c07a6eaf4efcd12109d030c87545fc580f Mon Sep 17 00:00:00 2001 From: Banerjee Aditya Date: Thu, 8 Feb 2024 17:48:15 +0800 Subject: [PATCH 4/6] add telebot api client tests --- telegram-bot/bun.lockb | Bin 95695 -> 96498 bytes telegram-bot/package.json | 1 + .../__tests__/components/apiClient.test.ts | 50 ++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 telegram-bot/src/__tests__/components/apiClient.test.ts diff --git a/telegram-bot/bun.lockb b/telegram-bot/bun.lockb index 82920ee6137823e3579c9ace234d61ff0758b8b8..dead2bcced57ef8f8c3330cb839873711bafb7ca 100755 GIT binary patch delta 14130 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 G+x{QD@wXlT delta 13881 zcmeHNX>?UZwmx;q4ICgCk^s56ArlaW%o8`^LJmPD3CJLAh|OSt0AWhVpnyYyQ#&hN zt!1!L!aRt8s3@p}R$BzY5hXy>G}54m4DI+Fc;9yh11@RaNNo;sFiR0)mG zzZMrnhpstemhC^GnpRV__^xQrRHy`jnNu>Sm~{!@b?{M(cSTo^Z=q>zz>EOB4Ac{# zY3)GU*wm^22K8Z(msAv$mlrM2O6JZeE-$I9I0<=M$lWmN0i7ABY3zAMQAO$Xb2aTe zcy>Msl>IcI=k}mkt~mIg`(;y~$8Nkvk5arN}# z`RyTK17~W#M?-qP9>bvAjaD4d7m#yi4%m+D1;s4ZJZ9_P56Xd5g0h3@pwu4)ZyBOA z@YMH$(*8G?p=yrg1PW}h8*Xxh?}O)vSAlv#?*rusP9Z#`jiBtPs;a~c*+?j{g9k8t z(yo!#6ki8Q2WEiMZa66G%c|xsm{K~mxU6Ef{9}ut!v1K_{(FPcK_+U_)X7>G@Cug!QIueT~x7P?vz<2mFFU4pMWUOAzQ5)ltZ69yQ+9{N%_=S za$Z2ELTBLfD&P&C7vrtY97ktXl$Dpv(X`Ewa{yC%SoK9SuQTrN> z9n~C^O#z*9HutiIH?1P6cz$Jhku!}mD@x~1E16xKnP3fNYVqW%>99A)_F|Pxb9XO1 zn`G5iE+{KbDyh)wk}bZXvZ%7EqPXHH>N%MofHF80#dFP|?zQ=~cKhPuq-iDP6_xke z{2OwMJ6f-@x!JP8ol?CE90Pc5hBc`LHr)z2`C^=idt3cYUQk(#L04<3Pz-`X(Ud90 zWtA10^jQl3-mqwXNhum=f6lfXbF$zT@N}REb*24&)QhaT)y*X-q@n~ZPeMNax@!uM^Cb#MpD6ef7v-Qq) z4+?R&^aL9sQx*mr`aGd&sW2d9QBrmQm`vF@qObI{H$*2{h`&Q*E&eW&4fy-A^n@6$ zuUzt)kX#WfYeNh%T{htFD(ML|+}#5-ZJ=xn_KR7vHq_8JfyczvxMfp&pZgTJQF21C zU+?GEG$aZ7jP2?Z6|y$W5F2Cz{+^Vc4u<L*?80Ob^qhyaP*ysKh+yJ>W#IIkDfFd0@;$WYC)6X1z z*(N>VhJG3{`VId=d?HEKh8tp`Y(UKsER1nhTVHknl6sU}8tNCf$y$%$J_vrWTpH6i z03jb^`u{RYR$p~tKG%=!yR4$G1>(wX?a|Wcp4(?}VcMIeh27*b*Lut6F z1ta1<>4`M-cObjkauE~L1G(JH-3-ps$B^86z>PP1i$?<4y@mMPW#Dq@z57X&#!*8A zN>7yG9*5*HCsRBoYoiSDzHEpx^ccMD7&Mox3-^huWnr}8-T~P#hScrB>kxAh;uj^- z6T@&8#u)B1koGmhlGstx#+sw4L20OIrwP-)8{A-UEhNU~Zig2ig5>e*<55D&BLtNH z6&&m!s0UFRYswj}L|GeW=(phYM;k~BjO%@H1Le|izaHVS=D{V=lY1JtiKYjypkxOz z*e4>Tr>mhq8lh=ev+x5+A!f*0$R5EPjXr3ysJ%}=XmbIw$V`gDZiap<_5dp(nVzqL z8wh>$7w*$_EK#d9IB|t6j5qW}kR_X*)**p6$p*-dKt}J;D#|C~WMOwhOp>+T4gKLL zECbZI%|!hKTsAn3$*)I7U(mCdC~JEduJ5Adp&q&J5i#hP14XJ7_B8a};F}w2v6frt z4rcm;;~LRqU8ql#$--WSz8W$+`!U6z$cA2q=qx=6hCU+BS&f)b@vy8-FvMQjkYKo5 zcCq`^hoHpPu!!*94vr~}^@~Z^DH{?EJ+!MeP3G#?3&2_4L0>!|Ym*H9ZOFLlTQG3K zEj`JGp4&~+(jY^tWS=ONwaJEi9b{NYp?=rdZZaYzSMM2*EHsrEqXn`y1;!xb5RqXp zCZs3T5P7mN)zIf)ckYWCxQgv*9XM=W;eK&SdeRI%7O#88)-7XWeEJ-4)HOFEu}(Im z8KQ&qq#ODbJ*_@98Jq6YYr%~-^$<<{D{zc0vI_qAr6^JHO$p})|}3PTIi`VZhZ z39Xm|x{+YjS&^;=$GQM>v)m?YGY!|*3Gz^8uHGY2)9{a}gLE1z3$qMeLcrl-cZ>I7 z!*0kzVkF9l-nse@cn@1u41FRJ(F$`B=4GaA=xyjv*fR8-;B$WlF56t)aVgH+Op^^h zLtg`)!GK;5tPF6>baVab;pl>PF;nS2_toIC86y4uW;xc%L2yA^t-`Z)4)~uEI7^=5+&T{`XXH(^5^Q_ z3@3bb5k9>HoVC#wW%%?JHiyB4``nG-2FeM&{CX@>kQ<))w$Tf~S(_&ucGrQ!8p9^j zgcAO-J8ZTca4xc=Of#M`nV*AUUtV;K4jn5U~QSrqLP%Ve!# zxIcv~T{gD&yS+YhGsM(QK*{nX7OQlrtnF`z2HDWx(8JN(ve1;{6Qg8pp5a~w0TMaN zuYZCP$7!Wblq?)z=+klXp)61~W%~3D;F#7(JfuVdD(G`dbHkef&eG(xE=Q3*n6~tT z;H-cZp!)cr`M_^1EcdhE`pKnHe%HVH$%rAjB1aYuG4zEy$N8`TL7B617Q7KHoe!T4}kI^W&NLR`jAZ@ z0p*-80chtj&H*13%m#HfT}dGxQYx+`gNKw3t+VNRP(GwI`~<*`H`(+lQ0i|5SpN(_ zd(Q*Zdx8B^;YC|e56Ucf4Pb-U0gik>5CVJ*@c9^EyC#4Jj{(#_4)FOcliG`ewceC}n+j^vw^Or!15^eb}DNY1@SiuOU zfzoiMO?`GlQX%^lMw|ZT*wPDWG+K?bb0MYO=Y-Wi3YLNG zw&HK0?C=HX(~+HaJ5m<^{l7uZj{gqIcCVXDjs?2`DHZnF3UAr+OHt~*hk6=* z-`2a3QhpF}RyEl45GXrtq!3RQ3oL(V3n=8&6Wm08e<5NLet#kU{zClyh4}jm@lr3y z-(QH>AT_=)|6jZi^`BpeTMNf0;(LEtzIaXctSgW`>Vo8bb@}3T*#Pb!xQCYK<9E8I z+&4R>`f;oMBGkcy&&0IG2Yr+E3@Lhr&jHhZUYq_&7Y% zkB2`#9|F|jQ3wC&U_Kw=FJ(M7)w6)-V}L~-sCU`2CR-K=x`r~I5&r?O1Fm*Igp_{* zkhTIwvw(+Rbu7}kBox@@pSFz7rP_MOZ5f^8QH#$BfcoTv0XqK~V4e~AN${@S_$10K zwgc9qKuOMa z0Y-zH$_{|Xdq!dzPzNjr9+acMN~z{YS0A7+kP8^V0N`?9ATS6R3=9SGf#JXiU?eaK zVA#e0R{>*ztAPR_5l9A70EUbqVFWnioMFx$235`JF+WldL+J>>^Y=RdL&Y=vet?Jm zR{(x2@C#)fumRWzYytQ+vl3VZ;HyrX1C#;x0sQ(a2ly5F08jx`0vW)5X6Bo4;4R=C z;9cMV@ILSXa1b~IF!o##Tmi2Gdw{(_SD+gZ4|E5Z4-6y2#!sbZfTsX{;xjon16zPh z@L53b@%Zy81k6$(FNcViUz*rk2!eC ze!?n>^KgJ1Fl~GYF!IcRJzG0`H$6~i(02o`$;IbGs~LKx2vg-R03BlOTfj2_Q))Bt z2Cxs<4=}yn23i2DW2$i@WqLILOfe3M{1Lm%bYnJ9-UNIMT*qGfA_>5g%#`xn&OnK;T@pwz_r+8GV5M$M2LJZ5Q0*fTC zDIOF3*`B|5DsYL3smZ-FlT*zx1f%A;#+y4;Y(LZ=H5tjN$!X|Rb#@7la4VlnjPUY@ zry%I9x$9JMd{K`fwq7c7T0IU0F;$&%iA7?BDs3S=UguI-?BSG&-6zH#hk90W8qJP{?xb)xG=K^#_kejND`^AcD@# zyRf{h0abr{^Kf%bomxuU&XqlPNab_O9v$q&4PNe1Z_|ecb&`7ZEv=hyrM0)6SQ%B{ zWE<+uBw=7xwk|S7mTGE?pkV}NU_6Lo9mCW|?Ev{XXD$k!xK;IQeL-bAmDff@sCyub zbZ#gfh^#+y)zh!6Gs0})6&K%R!&naVNv)8$-sO5Zl-SQ## z++dFciDvuUQ#Hbj*SXyIS<#d3ewC{a*m@XSt!m#E{j66BBxZhe3_z}JSCc3(&6t^M zPKU>u6|MktHQB-_^*xm>q1qfIBC?!olj{$RTmScaHs4{7HV2!eZry+y_r&;fv9rg# z=gdQ9^Xj5)(~Pq;%!IwDgG<&}(`Dzkqki#{_g*p#=AyM%qm}Z`2ru3*F1d+VNn?jf zbq+@KE}ou?6u1jm!BH;+iwH;6?q|JfgZ1_woOCM#3eL`9TQ(bCn5q|#!S==`W=c7k zr3ypf?kJTPZpLqM2#A^IVQOcHaC@Cgr-K#@Sh8c+pdd3?IowapKEndjl5tG=*)kT0 z>4q)1c=9aQFTH)4d&zFKiJP*SdKczg^CGbFO{Iom;;ha3-{#NW*X=Rd8|JU?hxYuL zdL09>QOr_V9k7Es_dQ?KTfVpNqxhCij^gO4`gMYjjcO@23UNq1>cwmBsQT24*T}gD z6%~oS(79IlK<$tj=e+Av%-2{3-yf~ioQ`PLQT?eSw*M|_2RN^D|20KOHF0mzm!>*4 zh8(TGI!(Rt%HJ8S?5;xlNgcZTn_!=gJG^gWB1<)hw;K#Ewa@l4<;`!#{5jEY3q9GVEG?cZ*Df2tu{izYU8oZI3!V} zpcn6QoNU|RND&|RkCpYS``zXeeDz`++9G8{VHWODH$}jP<&-$7_M(+oq>fRDv`;_+ zVk7UZ4ktkFRwEdn|29mU)#ymHZlz|C{MKl_s7_Jc3|fMIbMNFVhTICC*SRZv=T32(>!w#9_~@qu+D_xyN86>AQhBd> zn@z{7ljJ^7(OtkDRXJV62-n#pb!QimF6z_{NPlhNrDtjvdluJK-119jGi@(bd^fBE z%SXF+b$>T8!|F6cyrB}};fb}!dY!w`H+=biPW6T|oEhzPs$Huj^)BlA!lA3=?&!xH zmq*>$9g}6wCSH`?#g(=%Ugv7`>zi`7PaWGghUPPqF(S=$@CtQf4>87>-ihkd9wH+v zF~(Z2-vz}z)1m*eGcM7H71S1?{gs_5BU6)VbWd|oxAzp&e`Dv5UfgeQ=hn41uEpb{ zmt`I^_lYzn$}cxi95>Bf;Lq9W{sctOT!hJi8*RuqDaqju4$JH@3C>yiG`)+VzCZk_~ysSq^5b(cKQrc8xqAL*Q7owIZ5mn zIqJtG;psi3pLLAc`SHYmj416t8J4oGFAe7k_g@Z7Yq9F?uXfsf;83-ppNdJv_kd+W zB&q6T92RY9q;u6fY~ko_OCLCelP`ZA;4|4!`;$fZ&zjC9@R#~6e7^U{&%M9i$uKo16>HMDp8oX} zebx@x=fAhvRHCYbf@3Mtxu?GFn$dT)Kehp1LC$RbTc4564fY#8pT6(TkdtxNDn8J0;DwlGMDk=1yDB=g(kx!c*0gX=1?Wjd)wN#?0Jv^Eg9xSyjFb zd^_;x|GGc<^n;$WuiEuHi#Nvx?)~J { + let apiClient: ApiClient; + let mock: MockAdapter; + + beforeAll(() => { + apiClient = ApiClient.getInstance(); + // @ts-ignore + mock = new MockAdapter(apiClient.client); + }); + + afterEach(() => { + mock.reset(); + }); + + it('should make a GET request', async () => { + const responseData = { foo: 'bar' }; + mock.onGet('/test').reply(200, responseData); + + const data = await apiClient.get('/test'); + expect(data).toEqual(responseData); + }); + + it('should make a POST request', async () => { + const responseData = { foo: 'bar' }; + mock.onPost('/test').reply(200, responseData); + + const data = await apiClient.post('/test', { baz: 'qux' }); + expect(data).toEqual(responseData); + }); + + it('should make a PUT request', async () => { + const responseData = { foo: 'bar' }; + mock.onPut('/test').reply(200, responseData); + + const data = await apiClient.put('/test', { baz: 'qux' }); + expect(data).toEqual(responseData); + }); + + it('should make a DELETE request', async () => { + const responseData = { foo: 'bar' }; + mock.onDelete('/test').reply(200, responseData); + + const data = await apiClient.delete('/test'); + expect(data).toEqual(responseData); + }); +}); From 09c63c54b167e9c9f30b3122cda999a186868b4f Mon Sep 17 00:00:00 2001 From: Banerjee Aditya Date: Thu, 8 Feb 2024 18:02:43 +0800 Subject: [PATCH 5/6] add test telegram bot job to deploy.yml --- .github/workflows/deploy.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d8443cf..2c80ec7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -64,10 +64,29 @@ jobs: env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} - deploy-telegram-bot: + test-telegram-bot: needs: deploy-backend runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: Install dependencies + run: cd telegram-bot && bun install + + - name: Run tests + run: cd telegram-bot && bun test + + deploy-telegram-bot: + needs: test-telegram-bot + runs-on: ubuntu-latest + steps: - name: Checkout code uses: actions/checkout@v2 From e5105d6eba43c63e47dd93fd74cdc84e62dccea1 Mon Sep 17 00:00:00 2001 From: Aditya Banerjee Date: Fri, 9 Feb 2024 00:14:52 +0800 Subject: [PATCH 6/6] fix health job for deploy.yml --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2c80ec7..03a0cc6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -194,8 +194,8 @@ jobs: - name: Set environment variables run: | cd health && heroku config:set \ - SERVER_LIST=${{ secrets.TELEGRAM_BOT_TOKEN }} \ - PING_INTERVAL=${{ secrets.TELEGRAM_BOT_WEBHOOK_URL }} \ + SERVER_LIST=${{ secrets.SERVER_LIST }} \ + PING_INTERVAL=${{ secrets.PING_INTERVAL }} \ --app echofinder-health env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}