diff --git a/lib/cartodb/controllers/layergroup.js b/lib/cartodb/controllers/layergroup.js index 10b5324b..79268d6e 100644 --- a/lib/cartodb/controllers/layergroup.js +++ b/lib/cartodb/controllers/layergroup.js @@ -392,7 +392,7 @@ LayergroupController.prototype.getAffectedTables = function(user, dbName, layerg assert.ifError(err); var queries = []; - mapConfig.getLayers().map(function(layer) { + mapConfig.getLayers().forEach(function(layer) { queries.push(layer.options.sql); if (layer.options.affected_tables) { layer.options.affected_tables.map(function(table) { diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 3b06ac02..b3ca2b4a 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -307,7 +307,7 @@ MapController.prototype.afterLayergroupCreate = function(req, res, mapconfig, la }); var sql = []; - mapconfig.getLayers().map(function(layer) { + mapconfig.getLayers().forEach(function(layer) { sql.push(layer.options.sql); if (layer.options.affected_tables) { layer.options.affected_tables.map(function(table) { diff --git a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js index c6467488..8cb63f48 100644 --- a/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/analysis-mapconfig-adapter.js @@ -334,7 +334,9 @@ function AnalysisError(message) { function getAllAffectedTablesFromSourceNodes(node) { var affectedTables = node.getAllInputNodes(function (node) { return node.getType() === 'source'; - }).reduce(function(list, node) { return list.concat(node.getAffectedTables()); },[]); + }).reduce(function(list, node) { + return list.concat(node.getAffectedTables()); + },[]); return affectedTables; } diff --git a/test/acceptance/x_cache_channel.js b/test/acceptance/cache/cache_headers.js similarity index 81% rename from test/acceptance/x_cache_channel.js rename to test/acceptance/cache/cache_headers.js index 298c0ef0..13ca77dc 100644 --- a/test/acceptance/x_cache_channel.js +++ b/test/acceptance/cache/cache_headers.js @@ -1,16 +1,16 @@ -var testHelper = require('../support/test_helper'); +var testHelper = require('../../support/test_helper'); -var assert = require('../support/assert'); +var assert = require('../../support/assert'); var qs = require('querystring'); -var CartodbWindshaft = require('../../lib/cartodb/server'); -var serverOptions = require('../../lib/cartodb/server_options'); +var CartodbWindshaft = require('../../../lib/cartodb/server'); +var serverOptions = require('../../../lib/cartodb/server_options'); var server = new CartodbWindshaft(serverOptions); server.setMaxListeners(0); -var LayergroupToken = require('../support/layergroup-token'); +var LayergroupToken = require('../../support/layergroup-token'); -describe('get requests x-cache-channel', function() { +describe('get requests with cache headers', function() { var keysToDelete; beforeEach(function() { @@ -27,11 +27,14 @@ describe('get requests x-cache-channel', function() { var mapConfigs = [ { - "description": "header should be present", - "x_cache_channel": "test_windshaft_cartodb_user_1_db:public.test_table", + "description": "cache headers should be present", + "cache_headers": { + "x_cache_channel": "test_windshaft_cartodb_user_1_db:public.test_table", + "surrogate_keys": "t:77pJnX" + }, "data": { - version: '1.4.0', + version: '1.5.0', layers: [ { options: { @@ -63,10 +66,13 @@ describe('get requests x-cache-channel', function() { }, }, { - "description": "header should be present and be composed with source table name", - "x_cache_channel": "test_windshaft_cartodb_user_1_db:" + - "public.analysis_2f13a3dbd7_9eb239903a1afd8a69130d1ece0fc8b38de8592d" + - ",public.test_table", + "description": "cache headers should be present and be composed with source table name", + "cache_headers": { + "x_cache_channel": "test_windshaft_cartodb_user_1_db:" + + "public.analysis_2f13a3dbd7_9eb239903a1afd8a69130d1ece0fc8b38de8592d" + + ",public.test_table", + "surrogate_keys": "t:77pJnX t:iL4eth" + }, "data": { version: '1.5.0', @@ -136,22 +142,24 @@ describe('get requests x-cache-channel', function() { }; } - function validateXCacheChannel(done, expectedCacheChannel) { + function validateCacheHeaders(done, expectedCacheHeaders) { return function(res, err) { if (err) { return done(err); } assert.ok(res.headers['x-cache-channel']); - if (expectedCacheChannel) { - assert.equal(res.headers['x-cache-channel'], expectedCacheChannel); + assert.ok(res.headers['surrogate-key']); + if (expectedCacheHeaders) { + assert.equal(res.headers['x-cache-channel'], expectedCacheHeaders.x_cache_channel); + assert.equal(res.headers['surrogate-key'], expectedCacheHeaders.surrogate_keys); } done(); }; } - function noXCacheChannelHeader(done) { + function noCacheHeaders(done) { return function(res, err) { if (err) { return done(err); @@ -161,6 +169,10 @@ describe('get requests x-cache-channel', function() { !res.headers['x-cache-channel'], 'did not expect x-cache-channel header, got: `' + res.headers['x-cache-channel'] + '`' ); + assert.ok( + !res.headers['surrogate-key'], + 'did not expect surrogate-key header, got: `' + res.headers['surrogate-key'] + '`' + ); done(); }; } @@ -185,9 +197,9 @@ describe('get requests x-cache-channel', function() { mapConfigs.forEach(function(mapConfigData) { describe(mapConfigData.description, function() { var mapConfig = mapConfigData.data; - var expectedCacheChannel = mapConfigData.x_cache_channel; + var expectedCacheHeaders = mapConfigData.cache_headers; it('/api/v1/map Map instantiation', function(done) { - var testFn = validateXCacheChannel(done, expectedCacheChannel); + var testFn = validateCacheHeaders(done, expectedCacheHeaders); withLayergroupId(mapConfig, function(err, layergroupId, res) { testFn(res); }); @@ -198,7 +210,7 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/' + layergroupId + '/0/0/0@2x.png', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); @@ -208,7 +220,7 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/' + layergroupId + '/0/0/0.png', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); @@ -218,7 +230,7 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/' + layergroupId + '/0/0/0/0.png', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); @@ -228,7 +240,7 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/' + layergroupId + '/0/attributes/1', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); @@ -238,7 +250,7 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/static/center/' + layergroupId + '/0/0/0/400/300.png', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); @@ -248,21 +260,21 @@ describe('get requests x-cache-channel', function() { assert.response( server, getRequest('/api/v1/map/static/bbox/' + layergroupId + '/-45,-45,45,45/400/300.png', true), - validateXCacheChannel(done, expectedCacheChannel) + validateCacheHeaders(done, expectedCacheHeaders) ); }); }); }); }); - describe('header should NOT be present', function() { + describe('cache headers should NOT be present', function() { it('/', function(done) { assert.response( server, getRequest('/'), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); @@ -271,7 +283,7 @@ describe('get requests x-cache-channel', function() { server, getRequest('/version'), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); @@ -280,7 +292,7 @@ describe('get requests x-cache-channel', function() { server, getRequest('/health'), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); @@ -289,7 +301,7 @@ describe('get requests x-cache-channel', function() { server, getRequest('/api/v1/map/named', true), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); @@ -352,7 +364,7 @@ describe('get requests x-cache-channel', function() { server, getRequest('/api/v1/map/named/' + templateName, true), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); @@ -361,7 +373,7 @@ describe('get requests x-cache-channel', function() { server, getRequest('/api/v1/map/named/' + templateName, true, 'cb'), statusOkResponse, - noXCacheChannelHeader(done) + noCacheHeaders(done) ); }); });