From 1a7326efeba9c40e2776068ce01a434caa350b9e Mon Sep 17 00:00:00 2001
From: Fedor Lukyanov <sleekybadger@gmail.com>
Date: Mon, 7 Jan 2019 07:38:24 +0200
Subject: [PATCH] refactor: Extract mask token function from npm datasource to
 utils (#3040)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Helps with https://github.com/renovatebot/renovate/pull/3039 😄
---
 lib/config/decrypt.js                 |  2 +-
 lib/datasource/npm/get.js             |  3 +--
 lib/datasource/npm/index.js           |  2 --
 lib/datasource/npm/mask.js            | 14 --------------
 lib/platform/github/gh-got-wrapper.js | 11 +----------
 lib/util/mask.js                      | 13 +++++++++++++
 test/util/mask.spec.js                | 13 +++++++++++++
 7 files changed, 29 insertions(+), 29 deletions(-)
 delete mode 100644 lib/datasource/npm/mask.js
 create mode 100644 lib/util/mask.js
 create mode 100644 test/util/mask.spec.js

diff --git a/lib/config/decrypt.js b/lib/config/decrypt.js
index 939d40d31f..17c0d8aaa7 100644
--- a/lib/config/decrypt.js
+++ b/lib/config/decrypt.js
@@ -1,6 +1,6 @@
 const is = require('@sindresorhus/is');
 const crypto = require('crypto');
-const { maskToken } = require('../datasource/npm');
+const { maskToken } = require('../util/mask');
 
 module.exports = {
   decryptConfig,
diff --git a/lib/datasource/npm/get.js b/lib/datasource/npm/get.js
index fd7b996388..21b76c4039 100644
--- a/lib/datasource/npm/get.js
+++ b/lib/datasource/npm/get.js
@@ -8,9 +8,8 @@ const parse = require('github-url-from-git');
 const { isBase64 } = require('validator');
 
 const hostRules = require('../../util/host-rules');
-
+const { maskToken } = require('../../util/mask');
 const { getNpmrc } = require('./npmrc');
-const { maskToken } = require('./mask');
 
 module.exports = {
   getDependency,
diff --git a/lib/datasource/npm/index.js b/lib/datasource/npm/index.js
index 7c2790ee6f..5485934deb 100644
--- a/lib/datasource/npm/index.js
+++ b/lib/datasource/npm/index.js
@@ -1,11 +1,9 @@
 const { resetMemCache, resetCache } = require('./get');
 const { getPreset } = require('./presets');
 const { getPkgReleases } = require('./releases');
-const { maskToken } = require('./mask');
 const { setNpmrc } = require('./npmrc');
 
 module.exports = {
-  maskToken,
   setNpmrc,
   getPreset,
   getPkgReleases,
diff --git a/lib/datasource/npm/mask.js b/lib/datasource/npm/mask.js
deleted file mode 100644
index 4859086950..0000000000
--- a/lib/datasource/npm/mask.js
+++ /dev/null
@@ -1,14 +0,0 @@
-module.exports = {
-  maskToken,
-};
-
-// istanbul ignore next
-function maskToken(token) {
-  // istanbul ignore if
-  if (!token) {
-    return token;
-  }
-  return `${token.substring(0, 2)}${new Array(token.length - 3).join(
-    '*'
-  )}${token.slice(-2)}`;
-}
diff --git a/lib/platform/github/gh-got-wrapper.js b/lib/platform/github/gh-got-wrapper.js
index be130dd773..2981afa92d 100644
--- a/lib/platform/github/gh-got-wrapper.js
+++ b/lib/platform/github/gh-got-wrapper.js
@@ -3,6 +3,7 @@ const ghGot = require('gh-got');
 const delay = require('delay');
 const parseLinkHeader = require('parse-link-header');
 const hostRules = require('../../util/host-rules');
+const { maskToken } = require('../../util/mask');
 
 let cache = {};
 let stats = {};
@@ -196,16 +197,6 @@ async function get(path, options, retries = 5) {
   }
 }
 
-// istanbul ignore next
-function maskToken(token) {
-  if (!token) {
-    return token;
-  }
-  return `${token.substring(0, 2)}${new Array(token.length - 3).join(
-    '*'
-  )}${token.slice(-2)}`;
-}
-
 const helpers = ['get', 'post', 'put', 'patch', 'head', 'delete'];
 
 for (const x of helpers) {
diff --git a/lib/util/mask.js b/lib/util/mask.js
new file mode 100644
index 0000000000..0329f22970
--- /dev/null
+++ b/lib/util/mask.js
@@ -0,0 +1,13 @@
+function maskToken(str) {
+  return str
+    ? [
+        str.substring(0, 2),
+        new Array(str.length - 3).join('*'),
+        str.slice(-2),
+      ].join('')
+    : str;
+}
+
+module.exports = {
+  maskToken,
+};
diff --git a/test/util/mask.spec.js b/test/util/mask.spec.js
new file mode 100644
index 0000000000..ea7f199dcf
--- /dev/null
+++ b/test/util/mask.spec.js
@@ -0,0 +1,13 @@
+const { maskToken } = require('../../lib/util/mask');
+
+describe('util/mask', () => {
+  describe('.maskToken', () => {
+    it('returns value if passed value is falsy', () => {
+      expect(maskToken('')).toEqual('');
+    });
+
+    it('hides value content', () => {
+      expect(maskToken('123456789')).toEqual('12*****89');
+    });
+  });
+});
-- 
GitLab