From 75da4c778442636642d0354e9f9354d976984bd2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= <mbajtos@cz.ibm.com>
Date: Tue, 31 May 2016 18:48:47 +0200
Subject: [PATCH 1/3] Deprecate getters for express 3.x middleware

In LoopBack 3.0, we are removing these getters, see #2394.
---
 lib/express-middleware.js    | 21 +++++++++++++--------
 server/middleware/favicon.js |  8 +++++++-
 test/access-token.test.js    |  3 ++-
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/lib/express-middleware.js b/lib/express-middleware.js
index cc7596ff..98fae040 100644
--- a/lib/express-middleware.js
+++ b/lib/express-middleware.js
@@ -4,6 +4,7 @@
 // License text available at https://opensource.org/licenses/MIT
 
 var path = require('path');
+var deprecated = require('depd')('loopback');
 
 var middlewares = exports;
 
@@ -29,12 +30,10 @@ var middlewareModules = {
   'cookieParser': 'cookie-parser',
   'cookieSession': 'cookie-session',
   'csrf': 'csurf',
-  'errorHandler': 'errorhandler',
   'session': 'express-session',
   'methodOverride': 'method-override',
   'logger': 'morgan',
   'responseTime': 'response-time',
-  'favicon': 'serve-favicon',
   'directory': 'serve-index',
   // 'static': 'serve-static',
   'vhost': 'vhost'
@@ -44,14 +43,20 @@ middlewares.bodyParser = safeRequire('body-parser');
 middlewares.json = middlewares.bodyParser && middlewares.bodyParser.json;
 middlewares.urlencoded = middlewares.bodyParser && middlewares.bodyParser.urlencoded;
 
+['bodyParser', 'json', 'urlencoded'].forEach(function(name) {
+  if (!middlewares[name]) return;
+  middlewares[name] = deprecated.function(
+    middlewares[name],
+    deprecationMessage(name, 'body-parser'));
+});
+
 for (var m in middlewareModules) {
   var moduleName = middlewareModules[m];
   middlewares[m] = safeRequire(moduleName) || createMiddlewareNotInstalled(m, moduleName);
+  deprecated.property(middlewares, m, deprecationMessage(m, moduleName));
 }
 
-// serve-favicon requires a path
-var favicon = middlewares.favicon;
-middlewares.favicon = function(icon, options) {
-  icon = icon || path.join(__dirname, '../favicon.ico');
-  return favicon(icon, options);
-};
+function deprecationMessage(accessor, moduleName) {
+  return 'loopback.' + accessor + ' is deprecated. ' +
+    'Use `require(\'' + moduleName + '\');` instead.';
+}
diff --git a/server/middleware/favicon.js b/server/middleware/favicon.js
index b5cf10ce..48ffac4f 100644
--- a/server/middleware/favicon.js
+++ b/server/middleware/favicon.js
@@ -3,8 +3,14 @@
 // This file is licensed under the MIT License.
 // License text available at https://opensource.org/licenses/MIT
 
+var favicon = require('serve-favicon');
+var path = require('path');
+
 /**
  * Serve the LoopBack favicon.
  * @header loopback.favicon()
  */
-module.exports = require('../../lib/express-middleware').favicon;
+module.exports = function(icon, options) {
+  icon = icon || path.join(__dirname, '../../favicon.ico');
+  return favicon(icon, options);
+};
diff --git a/test/access-token.test.js b/test/access-token.test.js
index 573cae5a..53b0996e 100644
--- a/test/access-token.test.js
+++ b/test/access-token.test.js
@@ -3,6 +3,7 @@
 // This file is licensed under the MIT License.
 // License text available at https://opensource.org/licenses/MIT
 
+var cookieParser = require('cookie-parser');
 var loopback = require('../');
 var extend = require('util')._extend;
 var Token = loopback.AccessToken.extend('MyToken');
@@ -500,7 +501,7 @@ function createTestApp(testToken, settings, done) {
 
   var app = loopback();
 
-  app.use(loopback.cookieParser('secret'));
+  app.use(cookieParser('secret'));
   app.use(loopback.token(tokenSettings));
   app.get('/token', function(req, res) {
     res.cookie('authorization', testToken.id, {signed: true});

From 05f8774ed698f76849647f2c2c40f518af358a6b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= <mbajtos@cz.ibm.com>
Date: Tue, 31 May 2016 18:58:14 +0200
Subject: [PATCH 2/3] jscsrc: remove jsDoc rule

The rule is no longer supported.
---
 .jscsrc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.jscsrc b/.jscsrc
index 0362337e..ba97a76d 100644
--- a/.jscsrc
+++ b/.jscsrc
@@ -14,8 +14,5 @@
      "value": 150,
      "allowComments": true,
      "allowRegex": true
-  },
-  "jsDoc": {
-    "requireParamTypes": true
   }
 }

From b013e66883fc264135b0623e24dd8c0b162e82a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= <mbajtos@cz.ibm.com>
Date: Wed, 1 Jun 2016 09:26:45 +0200
Subject: [PATCH 3/3] test: increase timeouts on CI

---
 test/rest.middleware.test.js | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/rest.middleware.test.js b/test/rest.middleware.test.js
index 2e372f0e..f2a97d02 100644
--- a/test/rest.middleware.test.js
+++ b/test/rest.middleware.test.js
@@ -17,6 +17,9 @@ describe('loopback.rest', function() {
     MyModel.attachTo(db);
   });
 
+  if (process.env.CI)
+    this.timeout(3000);
+
   it('works out-of-the-box', function(done) {
     app.model(MyModel);
     app.use(loopback.rest());