diff --git a/src/proxy/index.js b/src/proxy/index.js index f504a10a..cce66961 100644 --- a/src/proxy/index.js +++ b/src/proxy/index.js @@ -1,7 +1,7 @@ /* eslint-disable max-len */ const proxyApp = require('express')(); const bodyParser = require('body-parser'); -const routes = require('./routes'); +const routes = require('./routes').router; const config = require('../config'); const db = require('../db'); const { GIT_PROXY_SERVER_PORT: proxyHttpPort } = require('../config/env').Vars; diff --git a/src/proxy/routes/index.js b/src/proxy/routes/index.js index 142e5648..a451e9fa 100644 --- a/src/proxy/routes/index.js +++ b/src/proxy/routes/index.js @@ -39,12 +39,7 @@ router.use( message = action.blockedMessage; } - // ERROR PCT LINE -- MOVE THIS TO HELPER - const errorMessage = `ERR\t${message}`; - const len = 6 + errorMessage.length; - - const prefix = len.toString(16); - const packetMessage = `00${prefix}\x02${errorMessage}\n0000`; + packetMessage = handleMessage(message); res.status(200).send(packetMessage); @@ -69,4 +64,13 @@ router.use( }), ); -module.exports = router; +const handleMessage = async(message) => { + const errorMessage = `ERR\t${message}`; + const len = 6 + new TextEncoder().encode(errorMessage).length; + + const prefix = len.toString(16); + const packetMessage = `${prefix.padStart(4, '0')}\x02${errorMessage}\n0000`; + return packetMessage +} + +module.exports = {router, handleMessage}; diff --git a/test/testProxyRoute.js b/test/testProxyRoute.js new file mode 100644 index 00000000..c9869030 --- /dev/null +++ b/test/testProxyRoute.js @@ -0,0 +1,19 @@ + +const handleMessage = require('../src/proxy/routes').handleMessage; +const chai = require('chai'); + +const expect = chai.expect; + +// Use this test as a template +describe('proxy error messages', async () => { + + it('should handle short messages', async function () { + const res = await handleMessage('one'); + expect(res).to.contain('one'); + }); + + it('should handle emoji messages', async function () { + const res = await handleMessage('❌ push failed: too many errors'); + expect(res).to.contain('❌'); + }); +});