From e188a9c1efb885a6812643666e2573841a56e690 Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Sat, 28 Aug 2021 12:14:44 -0700 Subject: [PATCH] Pass linter --- .vscode/settings.json | 2 +- src/docker/DockerApi.ts | 1 + src/user/system/LoadBalancerManager.ts | 2 +- src/utils/ApacheMd5.ts | 14 +++++++-- tests/ApacheMd5.test.ts | 41 ++++++++++++++++++++++++++ tests/dockerutil.test.ts | 26 ++++++++++++++++ 6 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 tests/ApacheMd5.test.ts create mode 100644 tests/dockerutil.test.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 32e298e..dedfa07 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,5 +13,5 @@ }, "typescript.referencesCodeLens.enabled": true, "editor.defaultFormatter": "esbenp.prettier-vscode", - "cSpell.words": ["csrf", "definitelytyped", "promisified"] + "cSpell.words": ["csrf", "definitelytyped", "dockerode", "promisified"] } diff --git a/src/docker/DockerApi.ts b/src/docker/DockerApi.ts index 5830dae..79af80b 100644 --- a/src/docker/DockerApi.ts +++ b/src/docker/DockerApi.ts @@ -14,6 +14,7 @@ import EnvVars from '../utils/EnvVars' import Logger from '../utils/Logger' import Utils from '../utils/Utils' import Dockerode = require('dockerode') +// @ts-ignore import dockerodeUtils = require('dockerode/lib/util') const Base64 = Base64Provider.Base64 diff --git a/src/user/system/LoadBalancerManager.ts b/src/user/system/LoadBalancerManager.ts index 1ab3688..9ffcf1a 100644 --- a/src/user/system/LoadBalancerManager.ts +++ b/src/user/system/LoadBalancerManager.ts @@ -47,7 +47,7 @@ class LoadBalancerManager { private requestedReloadPromises: { dataStore: DataStore resolve: VoidFunction - reject: VoidFunction + reject: (reason: any) => void }[] private captainPublicRandomKey: string diff --git a/src/utils/ApacheMd5.ts b/src/utils/ApacheMd5.ts index a1b3982..1ba5b4e 100644 --- a/src/utils/ApacheMd5.ts +++ b/src/utils/ApacheMd5.ts @@ -8,6 +8,7 @@ import * as crypto from 'crypto' const itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +const DIGEST_ENCODING = 'base64' export default class ApacheMd5 { // To 64 bit version. static to64(index: number, count: number) { @@ -95,7 +96,8 @@ export default class ApacheMd5 { let final = crypto .createHash('md5') .update(password + salt + password, 'ascii') - .digest('binary') + //@ts-ignore + .digest(DIGEST_ENCODING) for (let pl = password.length; pl > 0; pl -= 16) { ctx += final.substr(0, pl > 16 ? 16 : pl) @@ -109,7 +111,12 @@ export default class ApacheMd5 { } } - final = crypto.createHash('md5').update(ctx, 'ascii').digest('binary') + //@ts-ignore + final = crypto + .createHash('md5') + .update(ctx, 'ascii') + //@ts-ignore + .digest(DIGEST_ENCODING) // 1000 loop. for (let i = 0; i < 1000; ++i) { @@ -140,7 +147,8 @@ export default class ApacheMd5 { final = crypto .createHash('md5') .update(ctxl, 'ascii') - .digest('binary') + //@ts-ignore + .digest(DIGEST_ENCODING) } return `${magic + salt}$${ApacheMd5.getPassword(final)}` diff --git a/tests/ApacheMd5.test.ts b/tests/ApacheMd5.test.ts new file mode 100644 index 0000000..85f0960 --- /dev/null +++ b/tests/ApacheMd5.test.ts @@ -0,0 +1,41 @@ +import ApacheMd5 from '../src/utils/ApacheMd5' + +test('apache_test', () => { + // Test for valid password. + { + const encrypted = ApacheMd5.createApacheHash( + 'su/P3R%se#ret!', + '$apr1$cF.rAvCe$YlzjmK4qu/ia6hC8CNfnm/' + ) + expect(encrypted).toBe('$apr1$cF.rAvCe$YlzjmK4qu/ia6hC8CNfnm/') + } + + // Test for valid short password. + { + const encrypted = ApacheMd5.createApacheHash( + '123456', + '$1$VV5.4y5.$JbhytGQBPmDHBbrSjF2i7.' + ) + expect(encrypted).toBe('$1$VV5.4y5.$JbhytGQBPmDHBbrSjF2i7.') + } + + // Test for invalid password. + { + const encrypted = + ApacheMd5.createApacheHash( + 'invalidPass', + '$apr1$cF.rAvCe$YlzjmK4qu/ia6hC8CNfnm/' + ) == '$apr1$cF.rAvCe$YlzjmK4qu/ia6hC8CNfnm/' + expect(encrypted).toBeFalsy() + } + + // Test for invalid short password. + { + const encrypted = + ApacheMd5.createApacheHash( + 'passw0rdpa55wore', + '$1$VV5.4y5.$9981ZZhKTHmeXFKQur4cV0' + ) == '$1$VV5.4y5.$9981ZZhKTHmeXFKQur4cV0' + expect(encrypted).toBeFalsy() + } +}) diff --git a/tests/dockerutil.test.ts b/tests/dockerutil.test.ts new file mode 100644 index 0000000..923cff8 --- /dev/null +++ b/tests/dockerutil.test.ts @@ -0,0 +1,26 @@ +// @ts-ignore +import dockerodeUtils = require('dockerode/lib/util') + +test('dockerodeUtils', () => { + { + const parsed = dockerodeUtils.parseRepositoryTag('lib/repo:tag.v1.0') + expect(parsed.tag).toBe('tag.v1.0') + expect(parsed.repository).toBe('lib/repo') + } + + { + const parsed = dockerodeUtils.parseRepositoryTag( + 'domain.com:3000/lib/repo:tag.v1.0' + ) + expect(parsed.tag).toBe('tag.v1.0') + expect(parsed.repository).toBe('domain.com:3000/lib/repo') + } + + { + const parsed = dockerodeUtils.parseRepositoryTag( + 'domain.com:3000/repo:tag.v1.0' + ) + expect(parsed.tag).toBe('tag.v1.0') + expect(parsed.repository).toBe('domain.com:3000/repo') + } +})