From d311dd4245d08356fc1418f1ad5b7c12f52c984d Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Mon, 16 Feb 2015 11:57:53 +0100 Subject: [PATCH] Use PgConnection to set db auth No need to use request context anymore X-Cache-Channel will be set now even for private tables: fixes #253 --- lib/cartodb/server_options.js | 39 +------------------ test/acceptance/named_layers.js | 2 +- .../mapconfig_named_layers_datasource.js | 5 ++- .../mapconfig_named_layers_expanded.js | 19 ++++----- 4 files changed, 15 insertions(+), 50 deletions(-) diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index a0f1808c..e0011795 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -281,17 +281,11 @@ module.exports = function(redisPool) { }; me.beforeLayergroupCreate = function(req, requestMapConfig, callback) { - mapConfigNamedLayersAdapter.getLayers(this.userByReq(req), requestMapConfig.layers, this, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(this.userByReq(req), requestMapConfig.layers, pgConnection, function(err, layers, datasource) { if (err) { return callback(err); } - if (!datasource.isEmpty()) { - setContext(req, 'queryTablesApiDatasource', _.find(datasource.layersDbParams, function(layerDbParams) { - return !!layerDbParams; - })); - } - requestMapConfig.layers = layers; return callback(null, requestMapConfig, datasource) }); @@ -727,36 +721,5 @@ module.exports = function(redisPool) { ); }; - /******************************************************************************************************************* - * Private methods - ******************************************************************************************************************/ - - /** - * Handles context for a given Request object - * @param {Object|IncomingMessage} req - * @param {String} key - * @returns {*} - */ - function getContext(req, key) { - return req.context && req.context[key]; - } - - /** - * Handles context for a given Request object - * @param {Object|IncomingMessage} req - * @param {String} key - * @param {*} value - * @returns {*} The previous value - */ - function setContext(req, key, value) { - var previousValue; - if (value) { - req.context = req.context || {}; - previousValue = req.context[key]; - req.context[key] = value; - } - return previousValue; - } - return me; }; diff --git a/test/acceptance/named_layers.js b/test/acceptance/named_layers.js index f1a67528..1d756a0a 100644 --- a/test/acceptance/named_layers.js +++ b/test/acceptance/named_layers.js @@ -430,7 +430,7 @@ suite('named_layers', function() { if (err) { throw err; } - //assert.ok(res.headers['X-Cache-Channel']); -> https://github.com/CartoDB/Windshaft-cartodb/issues/253 + test_helper.checkCache(res); return true; }, function deleteTemplate(err) { diff --git a/test/integration/mapconfig_named_layers_datasource.js b/test/integration/mapconfig_named_layers_datasource.js index e529a860..14fbc29c 100644 --- a/test/integration/mapconfig_named_layers_datasource.js +++ b/test/integration/mapconfig_named_layers_datasource.js @@ -3,7 +3,7 @@ var test_helper = require('../support/test_helper'); var assert = require('assert'); var RedisPool = require('redis-mpool'); var TemplateMaps = require('../../lib/cartodb/template_maps.js'); -var serverOptions = require(__dirname + '/../../lib/cartodb/server_options')(); +var PgConnection = require(__dirname + '/../../lib/cartodb/backends/pg_connection'); var MapConfigNamedLayersAdapter = require('../../lib/cartodb/models/mapconfig_named_layers_adapter'); var Step = require('step'); @@ -11,6 +11,7 @@ var _ = require('underscore'); // configure redis pool instance to use in tests var redisPool = RedisPool(global.environment.redis); +var pgConnection = new PgConnection(require('cartodb-redis')({ pool: redisPool })); var templateMaps = new TemplateMaps(redisPool, { max_user_templates: global.environment.maxUserTemplates @@ -280,7 +281,7 @@ suite('named_layers datasources', function() { testScenarios.forEach(function(testScenario) { test('should return a list of layers ' + testScenario.desc, function(done) { - mapConfigNamedLayersAdapter.getLayers(username, testScenario.config.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, testScenario.config.layers, pgConnection, function(err, layers, datasource) { testScenario.test(err, layers, datasource, done); }); }); diff --git a/test/integration/mapconfig_named_layers_expanded.js b/test/integration/mapconfig_named_layers_expanded.js index 26b5197a..72ab67cf 100644 --- a/test/integration/mapconfig_named_layers_expanded.js +++ b/test/integration/mapconfig_named_layers_expanded.js @@ -3,7 +3,7 @@ var testHelper = require('../support/test_helper'); var assert = require('assert'); var RedisPool = require('redis-mpool'); var TemplateMaps = require('../../lib/cartodb/template_maps.js'); -var serverOptions = require(__dirname + '/../../lib/cartodb/server_options')(); +var PgConnection = require(__dirname + '/../../lib/cartodb/backends/pg_connection'); var MapConfigNamedLayersAdapter = require('../../lib/cartodb/models/mapconfig_named_layers_adapter'); var Step = require('step'); @@ -13,6 +13,7 @@ suite('mapconfig_named_layers_adapter', function() { // configure redis pool instance to use in tests var redisPool = RedisPool(global.environment.redis); + var pgConnection = new PgConnection(require('cartodb-redis')({ pool: redisPool })); var templateMaps = new TemplateMaps(redisPool, { max_user_templates: global.environment.maxUserTemplates @@ -145,7 +146,7 @@ suite('mapconfig_named_layers_adapter', function() { var missingNamedMapLayerConfig = makeNamedMapLayerConfig({ config: {} }); - mapConfigNamedLayersAdapter.getLayers(username, missingNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, missingNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(err); assert.ok(!layers); assert.ok(!datasource); @@ -160,7 +161,7 @@ suite('mapconfig_named_layers_adapter', function() { var nonExistentNamedMapLayerConfig = makeNamedMapLayerConfig({ name: missingTemplateName }); - mapConfigNamedLayersAdapter.getLayers(username, nonExistentNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, nonExistentNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(err); assert.ok(!layers); assert.ok(!datasource); @@ -179,7 +180,7 @@ suite('mapconfig_named_layers_adapter', function() { var nonAuthTokensNamedMapLayerConfig = makeNamedMapLayerConfig({ name: tokenAuthTemplateName }); - mapConfigNamedLayersAdapter.getLayers(username, nonAuthTokensNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, nonAuthTokensNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(err); assert.ok(!layers); assert.ok(!datasource); @@ -199,7 +200,7 @@ suite('mapconfig_named_layers_adapter', function() { var nestedNamedMapLayerConfig = makeNamedMapLayerConfig({ name: nestedNamedMapTemplateName }); - mapConfigNamedLayersAdapter.getLayers(username, nestedNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, nestedNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(err); assert.ok(!layers); assert.ok(!datasource); @@ -214,7 +215,7 @@ suite('mapconfig_named_layers_adapter', function() { var validNamedMapMapLayerConfig = makeNamedMapLayerConfig({ name: templateName }); - mapConfigNamedLayersAdapter.getLayers(username, validNamedMapMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, validNamedMapMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(!err); assert.ok(layers.length, 1); assert.ok(layers[0].type, 'cartodb'); @@ -234,7 +235,7 @@ suite('mapconfig_named_layers_adapter', function() { name: tokenAuthTemplateName, auth_tokens: ['valid1'] }); - mapConfigNamedLayersAdapter.getLayers(username, validAuthTokensNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, validAuthTokensNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(!err); assert.equal(layers.length, 1); assert.notEqual(datasource.getLayerDatasource(0), undefined); @@ -254,7 +255,7 @@ suite('mapconfig_named_layers_adapter', function() { name: multipleLayersTemplateName, auth_tokens: ['valid2'] }); - mapConfigNamedLayersAdapter.getLayers(username, multipleLayersNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, multipleLayersNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(!err); assert.equal(layers.length, 2); @@ -288,7 +289,7 @@ suite('mapconfig_named_layers_adapter', function() { }, auth_tokens: ['valid2'] }); - mapConfigNamedLayersAdapter.getLayers(username, multipleLayersNamedMapLayerConfig.layers, serverOptions, function(err, layers, datasource) { + mapConfigNamedLayersAdapter.getLayers(username, multipleLayersNamedMapLayerConfig.layers, pgConnection, function(err, layers, datasource) { assert.ok(!err); assert.equal(layers.length, 2);