From 9c21194c68654e2152d70a28cc9261b13a2035a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 9 Jun 2020 12:21:47 +0200 Subject: [PATCH 1/3] Set cache buster equal to 0 when there is no affected tables in the mapconfig --- lib/api/middlewares/last-updated-time-layergroup.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/api/middlewares/last-updated-time-layergroup.js b/lib/api/middlewares/last-updated-time-layergroup.js index 1c4a3cab..63c4dac5 100644 --- a/lib/api/middlewares/last-updated-time-layergroup.js +++ b/lib/api/middlewares/last-updated-time-layergroup.js @@ -11,6 +11,10 @@ module.exports = function setLastUpdatedTimeToLayergroup () { } if (!affectedTables) { + res.locals.cache_buster = 0; + layergroup.layergroupid = `${layergroup.layergroupid}:${res.locals.cache_buster}`; + layergroup.last_updated = new Date(res.locals.cache_buster).toISOString(); + return next(); } From f235dcdeda9394fb8de195d537bf5ab9f376e920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 9 Jun 2020 13:05:39 +0200 Subject: [PATCH 2/3] Add test --- test/acceptance/layergroupid-test.js | 66 ++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 test/acceptance/layergroupid-test.js diff --git a/test/acceptance/layergroupid-test.js b/test/acceptance/layergroupid-test.js new file mode 100644 index 00000000..2cb8d2ca --- /dev/null +++ b/test/acceptance/layergroupid-test.js @@ -0,0 +1,66 @@ +'use strict'; + +require('../support/test-helper'); + +const assert = require('../support/assert'); +const TestClient = require('../support/test-client'); +const { parse: parseLayergroupToken } = require('../../lib/models/layergroup-token'); + +describe('layergroup id', function () { + const suites = [ + { + description: 'with empty layers should respond with cache buster equal to 0', + expectedCacheBuster: '0', + mapConfig: { + version: '1.8.0', + layers: [] + } + }, + { + description: 'with layer and dumb query (no affected tables) should respond with cache buster equal to 0', + expectedCacheBuster: '0', + mapConfig: { + version: '1.8.0', + layers: [{ + type: 'cartodb', + options: { + sql: TestClient.SQL.ONE_POINT + } + }] + } + }, + { + description: 'with layer and legit query should respond with cache buster', + expectedCacheBuster: '1234567890123', + mapConfig: { + version: '1.8.0', + layers: [{ + type: 'cartodb', + options: { + sql: 'SELECT * FROM test_table' + } + }] + } + } + ]; + + suites.forEach(({ description, expectedCacheBuster, mapConfig }) => { + it(description, function (done) { + const testClient = new TestClient(mapConfig); + + testClient.getLayergroup((err, body) => { + if (err) { + return done(err); + } + + const { layergroupid } = body; + assert.ok(typeof layergroupid === 'string'); + + const { cacheBuster } = parseLayergroupToken(layergroupid); + assert.strictEqual(cacheBuster, expectedCacheBuster); + + testClient.drain(done); + }); + }); + }); +}); From 23839f5b4aeba5d8d40c7f2c2ae1040e528dca84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 9 Jun 2020 15:00:53 +0200 Subject: [PATCH 3/3] Update NEWS --- NEWS.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/NEWS.md b/NEWS.md index 73ac9cbb..54a883ff 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,13 @@ # Changelog +## 9.0.1 +Released 2020-mm-dd + +Bug Fixes: +- While instantiating a map, set the `cache buster` equal to `0` when there are no affected tables in the MapConfig. Thus `layergroupid` has the same structure always: + - `${map_id}:${cache_buster}` for anonymous map + - `${user}@${template_hash}@${map_id}:${cache_buster}` for named map + ## 9.0.0 Released 2020-06-05