From 5f4943d1d5cdd6664b9e6d14e1f1527717e9b133 Mon Sep 17 00:00:00 2001 From: Joshua Date: Fri, 14 Dec 2018 15:59:12 +0000 Subject: [PATCH 01/20] new server test with precommit hook to secure .env files, set up CI environment (#5) * new server test with precommit hook to secure .env files, set up CI environment (#3) * [TESTS] added all registered routes to api server test * [WIP] abstracting config to env where it makes sense, refactoring elsewhere, adding more tests * [WIP] fixed tests so they fail as expected * [WIP] * [DEBUG] fixed issues with the env configuration, added correct tests * [MISC] env didn't get readded on last precommit * [TESTS] added longer wait time for server as sometimtimes tests fail arbitrarily --- .env.enc | Bin 0 -> 1968 bytes .env.example | 4 + .gitignore | 2 + .travis.yml | 19 +++-- package.json | 7 ++ src/api/index.js | 35 ++++---- src/example.config.js | 4 +- src/index.js | 9 ++- src/initialize.js | 12 +-- src/lib/Controller.js | 1 + src/lib/Fetcher.js | 2 +- src/middleware/index.js | 5 +- src/sheets_config.js | 19 +++++ test/server_process.js | 103 ++++++++++++++++++++++++ yarn.lock | 173 +++++++++++++++++++++++++++++++++++++++- 15 files changed, 351 insertions(+), 44 deletions(-) create mode 100644 .env.enc create mode 100644 .env.example create mode 100644 src/sheets_config.js create mode 100644 test/server_process.js diff --git a/.env.enc b/.env.enc new file mode 100644 index 0000000000000000000000000000000000000000..dfcfe8d3382e9d6b26274d3832cbc04c8da6f4af GIT binary patch literal 1968 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 { res.json(controller.blueprints()) }) + api.get('/update', (req, res) => { + controller + .update() + .then(msg => + res.json({ + success: msg + }) + ) + .catch(err => + res.status(404) + .send({ error: err.message, err }) + ) + }) + api.get('/:sheet/:tab/:resource/:frag', (req, res) => { const { sheet, tab, resource, frag } = req.params controller @@ -27,8 +41,9 @@ export default ({ config, controller }) => { }) api.get('/:sheet/:tab/:resource', (req, res) => { + const { sheet, tab, resource } = req.params controller - .retrieve(req.params.sheet, req.params.tab, req.params.resource) + .retrieve(sheet, tab, resource) .then(data => res.json(data)) .catch(err => res.status(err.status || 404) @@ -36,30 +51,16 @@ export default ({ config, controller }) => { ) }) - api.get('/update', (req, res) => { - controller - .update() - .then(msg => - res.json({ - success: msg - }) - ) - .catch(err => - res.status(404) - .send({ error: err.message }) - ) - }) - // ERROR routes. Note that it is important that these come AFTER routes // like /update, so that the regex does not greedily match these routes. api.get('/:sheet', (req, res) => { - res.status(404) + res.status(400) .send({ error: copy.errors.onlysheet }) }) api.get('/:sheet/:tab', (req, res) => { - res.status(404) + res.status(400) .send({ error: copy.errors.onlyTab }) }) diff --git a/src/example.config.js b/src/example.config.js index c4c190c..29c4a80 100644 --- a/src/example.config.js +++ b/src/example.config.js @@ -3,12 +3,10 @@ import BP from './lib/blueprinters' export default { port: 4040, googleSheets: { - email: 'SOME_SERVICE_ACCOUNT_EMAIL', - privateKey: 'SOME_SERVICE_ACCOUNT_PRIVATE_KEY', sheets: [ { name: 'example', - id: '1UC7DkCFeUXHfpUxUGruExwFbP4pqVBdJLOKfo6wDDGk', + id: '15gb_aYJw7WSVZmtS0FZvcpGx1-kwKX3VHH8YV6La4hY', tabs: { export_events: [BP.deeprows, BP.rows], export_categories: [BP.groups, BP.rows], diff --git a/src/index.js b/src/index.js index c2a483b..1e4ccd2 100755 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,10 @@ import express from 'express' import initialize from './initialize' import middleware from './middleware' import api from './api' -import config from './config' +// import config from './sheets_config' +import dotenv from 'dotenv' + +dotenv.config() let app = express() app.server = http.createServer(app) @@ -15,6 +18,8 @@ if (process.env.NODE_ENV === 'development') { app.use(cors()) } +const config = process.env + initialize(controller => { app.use( middleware({ @@ -30,7 +35,7 @@ initialize(controller => { }) ) - app.server.listen(process.env.PORT || config.port, () => { + app.server.listen(process.env.PORT || 4040, () => { console.log(`Started on port ${app.server.address().port}`) }) }) diff --git a/src/initialize.js b/src/initialize.js index d7a5e25..75c2a94 100755 --- a/src/initialize.js +++ b/src/initialize.js @@ -1,13 +1,13 @@ import StoreJson from './models/StoreJson' import Fetcher from './lib/Fetcher' import Controller from './lib/Controller' -import config from './config' +import sheetsConfig from './sheets_config' -const { googleSheets } = config -const { sheets, privateKey, email } = googleSheets +const { googleSheets } = sheetsConfig +const { sheets } = googleSheets function authenticate (_fetcher) { - return _fetcher.fetcher.authenticate(email, privateKey).then(msg => { + return _fetcher.fetcher.authenticate(process.env.SERVICE_ACCOUNT_EMAIL, process.env.SERVICE_ACCOUNT_PRIVATE_KEY).then(msg => { console.log(msg) return true }) @@ -24,7 +24,7 @@ export default callback => { Promise.all(fetchers.map(authenticate)) .then(() => { console.log(`===================`) - console.log(`grant access to: ${email}`) + console.log(`grant access to: ${process.env.SERVICE_ACCOUNT_EMAIL}`) console.log(`===================`) // NB: reformat fetchers as config for controller @@ -39,7 +39,7 @@ export default callback => { console.log(err) console.log( `ERROR: the server couldn't connect to all of the sheets you provided. Ensure you have granted access to ${ - email + process.env.SERVICE_ACCOUNT_EMAIL } on ALL listed sheets.` ) }) diff --git a/src/lib/Controller.js b/src/lib/Controller.js index b9e9351..d188fb9 100644 --- a/src/lib/Controller.js +++ b/src/lib/Controller.js @@ -36,6 +36,7 @@ class Controller { retrieve (sheet, tab, resource) { if (this._sheetExists(sheet)) { const fetcher = this.fetchers[sheet] + // console.log(fetcher); return fetcher.retrieve(tab, resource) } else { return Promise.reject(new Error(copy.errors.noResource(sheet))) diff --git a/src/lib/Fetcher.js b/src/lib/Fetcher.js index f62c79f..164eff5 100644 --- a/src/lib/Fetcher.js +++ b/src/lib/Fetcher.js @@ -189,7 +189,7 @@ class Fetcher { retrieveFrag (tab, resource, frag) { const title = fmtName(tab) - const url = `${this.id}/${tab}/${resource}/${frag}` + const url = `${this.sheetName}/${tab}/${resource}/${frag || ''}` return this.db.load(url, this.blueprints[title]) } } diff --git a/src/middleware/index.js b/src/middleware/index.js index 6876175..0399649 100755 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -1,5 +1,4 @@ import { Router } from 'express' -import { mapboxAccessToken } from '../config' import morgan from 'morgan' import mapbox from './mapbox' @@ -10,8 +9,8 @@ export default ({ config, db }) => { /* logging middleware */ routes.use(morgan('dev')) - if (mapboxAccessToken) { - routes.get('/mapbox/:z/:y/:x', mapbox(mapboxAccessToken)) + if (process.env.MAPBOX_TOKEN) { + routes.get('/mapbox/:z/:y/:x', mapbox(process.env.MAPBOX_TOKEN)) } return routes diff --git a/src/sheets_config.js b/src/sheets_config.js new file mode 100644 index 0000000..96996c3 --- /dev/null +++ b/src/sheets_config.js @@ -0,0 +1,19 @@ +import BP from './lib/blueprinters' + +export default { + googleSheets: { + sheets: [ + { + name: 'example', + id: '1UC7DkCFeUXHfpUxUGruExwFbP4pqVBdJLOKfo6wDDGk', + tabs: { + export_events: [BP.deeprows, BP.rows], + export_categories: [BP.groups, BP.rows], + export_sources: BP.ids, + export_sites: BP.rows, + export_tags: BP.tree + } + } + ] + } +} diff --git a/test/server_process.js b/test/server_process.js new file mode 100644 index 0000000..02d7341 --- /dev/null +++ b/test/server_process.js @@ -0,0 +1,103 @@ +var assert = require('assert'); +var child_process = require('child_process') +var http = require('http'); +import test from 'ava' + +const SERVER_LAUNCH_WAIT_TIME = 10 * 1000; + +var server_proc = null; +var server_exited = false; + +test.before.cb(t => { + console.log("launching server...") + server_proc = child_process.spawn('yarn', ['dev'], { + cwd: '.', + stdio: 'ignore' + }); + + server_proc.on('exit', function(code, signal) { + server_exited = true; + }); + + setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME); +}); + +test.after(function() { + console.log("killing server...") + server_proc.kill('SIGKILL'); +}); + +test('should launch', t => { + t.false(server_exited); +}); + +var passUrls = [ + // Express API registered routes: + // / + '/api/', + // /blueprints + '/api/blueprints', + // /update + '/api/update', + // /:sheet/:tab/:resource + '/api/example/export_events/rows', + // /:sheet/:tab/:resource/:frag + '/api/example/export_events/rows/1' +]; + +var failUrls = [ + // /:sheet + '/api/example', + // /:sheet/:tab + '/api/example/events' +] + +passUrls.forEach(function(url) { + test.cb('should respond successfully to request for "' + url + '"', t => { + http.get({ + hostname: 'localhost', + port: 4040, + path: url, + agent: false + }, function(res) { + var result_data = ''; + + if(res.statusCode != 200) { + t.fail('Server response was not 200.'); + } else { + res.on('data', function(data) { result_data += data }); + + res.on('end', function() { + if (result_data.length > 0) { + t.pass(); + } else { + t.fail("Server returned no data."); + } + }); + } + + t.end(); + }) + }); +}); + +failUrls.forEach(function(url) { + test.cb('should fail to respond to request for "' + url + '"', t => { + http.get({ + hostname: 'localhost', + port: 4040, + path: url, + agent: false + }, function(res) { + var result_data = ''; + + if(res.statusCode < 400) { + t.fail('Server response was not erroneous.'); + } else { + t.pass(); + } + + t.end(); + }) + }); +}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 715154a..e7a78cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -996,16 +996,35 @@ call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" dependencies: callsites "^0.2.0" +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" @@ -1274,6 +1293,16 @@ cors@^2.8.5: object-assign "^4" vary "^1" +cosmiconfig@^5.0.6: + version "5.0.7" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" + integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -1288,7 +1317,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -1470,6 +1499,11 @@ dot-prop@^4.1.0, dot-prop@^4.2.0: dependencies: is-obj "^1.0.0" +dotenv@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" + integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1503,6 +1537,13 @@ encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + equal-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" @@ -1741,6 +1782,19 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1910,6 +1964,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" @@ -2009,6 +2070,13 @@ get-stream@^3.0.0: version "3.0.0" resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2226,6 +2294,22 @@ http-errors@^1.3.0: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +husky@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-1.2.0.tgz#d631dda1e4a9ee8ba69a10b0c51a0e2c66e711e5" + integrity sha512-/ib3+iycykXC0tYIxsyqierikVa9DA2DrT32UEirqNEFVqOj1bFMTgP3jAz8HM7FgC/C8pc/BTUa9MV2GEkZaA== + dependencies: + cosmiconfig "^5.0.6" + execa "^1.0.0" + find-up "^3.0.0" + get-stdin "^6.0.0" + is-ci "^1.2.1" + pkg-dir "^3.0.0" + please-upgrade-node "^3.1.1" + read-pkg "^4.0.1" + run-node "^1.0.0" + slash "^2.0.0" + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -2256,6 +2340,14 @@ ignore@^4.0.2: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -2358,7 +2450,7 @@ is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" -is-ci@^1.0.10, is-ci@^1.2.0: +is-ci@^1.0.10, is-ci@^1.2.0, is-ci@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" dependencies: @@ -2396,6 +2488,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + is-error@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" @@ -2577,7 +2674,7 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0, js-yaml@^3.11.0: +js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -2687,6 +2784,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" @@ -3145,7 +3250,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3212,12 +3317,26 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -3226,6 +3345,11 @@ p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + package-hash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" @@ -3370,6 +3494,20 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +please-upgrade-node@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" + integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== + dependencies: + semver-compare "^1.0.0" + plur@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/plur/-/plur-3.0.1.tgz#268652d605f816699b42b86248de73c9acd06a7c" @@ -3433,6 +3571,14 @@ pstree.remy@^1.1.2: resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a" integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -3501,6 +3647,15 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + readable-stream@^2.0.2, readable-stream@^2.0.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -3677,6 +3832,11 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + run-parallel@^1.1.2: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" @@ -3705,6 +3865,11 @@ sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" From 219adc1e5e7c13722322854d53c1a2c347cf7965 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 16:56:37 +0000 Subject: [PATCH 02/20] refactor to scripts --- .travis.yml | 4 +--- package.json | 2 +- scripts/decrypt.sh | 2 ++ scripts/encrypt.sh | 6 ++++++ 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 scripts/decrypt.sh create mode 100644 scripts/encrypt.sh diff --git a/.travis.yml b/.travis.yml index bdcfd65..b4598f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,7 @@ before_script: install: - yarn script: +- if [ "TRAVIS_PULL_REQUEST" = "false" ]; then bash ./scripts/decrypt.sh; fi - yarn build - yarn lint - yarn test -before_install: -- openssl aes-256-cbc -K $encrypted_4f23b46f1ec6_key -iv $encrypted_4f23b46f1ec6_iv - -in .env.enc -out .env -d diff --git a/package.json b/package.json index e397911..6d1dacf 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "husky": { "hooks": { - "pre-commit": "yarn test && yarn lint && travis encrypt-file .env --add --force && git add ." + "pre-push": "yarn test && yarn lint && travis encrypt-file .env --add --force && git add .env.enc && git commit -m \"add encrypted key\"" } }, "repository": { diff --git a/scripts/decrypt.sh b/scripts/decrypt.sh new file mode 100644 index 0000000..2b3a5f3 --- /dev/null +++ b/scripts/decrypt.sh @@ -0,0 +1,2 @@ +#!/bin/bash +openssl aes-256-cbc -K $encrypted_4f23b46f1ec6_key -iv $encrypted_4f23b46f1ec6_iv -in .env.enc -out .env -d diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh new file mode 100644 index 0000000..4bfeae2 --- /dev/null +++ b/scripts/encrypt.sh @@ -0,0 +1,6 @@ +#!/bin/bash +yarn test +yarn lint +travis encrypt-file .env --add --force +git add .env.enc +git commit -m "add encrypted private key for travis testing" From 82b4dceef01b91b2a8b9b7deac595071cc753936 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 16:59:47 +0000 Subject: [PATCH 03/20] rm test/lint from encrypt --- scripts/encrypt.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 4bfeae2..e07104d 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,6 +1,4 @@ #!/bin/bash -yarn test -yarn lint travis encrypt-file .env --add --force git add .env.enc git commit -m "add encrypted private key for travis testing" From 95a501aba2a92327dffb0f6742e3c4975405d273 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 17:24:50 +0000 Subject: [PATCH 04/20] fix lint and prev commit errors --- package.json | 8 +++++--- src/lib/Controller.js | 1 - src/lib/Fetcher.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6d1dacf..005ae98 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dev": "NODE_ENV=development nodemon -w src --exec \"babel-node src\"", "build": "NODE_ENV=production npx babel src -d dist", "start": "node dist", - "lint": "standard \"src/**/*.js\" \"test/**/*/js\"", + "lint": "standard \"src/**/*.js\" \"test/**/*.js\"", "test-watch": "ava --watch", "test": "ava --verbose" }, @@ -33,7 +33,7 @@ "graphql": "^0.13.2", "morgan": "^1.8.0", "mz": "^2.7.0", - "node-fetch": "^2.2.0", + "node-fetch": "^2.3.0", "object-hash": "^1.3.0", "ramda": "^0.25.0", "resource-router-middleware": "^0.6.0" @@ -42,6 +42,7 @@ "@babel/cli": "^7.1.2", "@babel/core": "^7.1.2", "@babel/node": "^7.0.0", + "@babel/polyfill": "^7.0.0", "@babel/preset-env": "^7.1.0", "@babel/register": "^7.0.0", "ava": "1.0.0-beta.8", @@ -59,7 +60,8 @@ "test/**/*.js" ], "require": [ - "@babel/register" + "@babel/register", + "@babel/polyfill" ] }, "bugs": { diff --git a/src/lib/Controller.js b/src/lib/Controller.js index d188fb9..b9e9351 100644 --- a/src/lib/Controller.js +++ b/src/lib/Controller.js @@ -36,7 +36,6 @@ class Controller { retrieve (sheet, tab, resource) { if (this._sheetExists(sheet)) { const fetcher = this.fetchers[sheet] - // console.log(fetcher); return fetcher.retrieve(tab, resource) } else { return Promise.reject(new Error(copy.errors.noResource(sheet))) diff --git a/src/lib/Fetcher.js b/src/lib/Fetcher.js index 164eff5..cd571dc 100644 --- a/src/lib/Fetcher.js +++ b/src/lib/Fetcher.js @@ -189,7 +189,7 @@ class Fetcher { retrieveFrag (tab, resource, frag) { const title = fmtName(tab) - const url = `${this.sheetName}/${tab}/${resource}/${frag || ''}` + const url = `${this.id}/${tab}/${resource}/${frag || ''}` return this.db.load(url, this.blueprints[title]) } } From 18ddc6c48b30b685a5820d1eefee5a7f94de2c78 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 17:50:00 +0000 Subject: [PATCH 05/20] leverage ava's async features to ensure order in server_process tests --- test/server_process.js | 130 ++++++++++++++++++++--------------------- yarn.lock | 30 +--------- 2 files changed, 65 insertions(+), 95 deletions(-) diff --git a/test/server_process.js b/test/server_process.js index 02d7341..70e7f70 100644 --- a/test/server_process.js +++ b/test/server_process.js @@ -1,51 +1,71 @@ -var assert = require('assert'); -var child_process = require('child_process') -var http = require('http'); import test from 'ava' +import fetch from 'node-fetch' +import child_process from 'child_process' -const SERVER_LAUNCH_WAIT_TIME = 10 * 1000; - -var server_proc = null; -var server_exited = false; +const SERVER_LAUNCH_WAIT_TIME = 10 * 1000 +const SERVER_ROOT = 'http://localhost:4040' +let server_proc = null +let server_exited = false +function checkStatus(res) { + if (res.ok) { + return res + } else { + throw new Error('Route is not present') + } +} +/* SETUP: launch a development server with a wait time */ test.before.cb(t => { console.log("launching server...") server_proc = child_process.spawn('yarn', ['dev'], { cwd: '.', stdio: 'ignore' - }); + }) server_proc.on('exit', function(code, signal) { - server_exited = true; - }); + server_exited = true + }) - setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME); -}); + setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME) +}) +/* CLEANUP: kill the server */ test.after(function() { console.log("killing server...") - server_proc.kill('SIGKILL'); -}); + server_proc.kill('SIGKILL') +}) test('should launch', t => { - t.false(server_exited); -}); + t.false(server_exited) +}) -var passUrls = [ - // Express API registered routes: + +test('should update', t => { + const expected = { + success: "All sheets updated" + } + + return fetch(`${SERVER_ROOT}/api/update`) + .then(checkStatus) + .then(res => res.json()) + .then(json => { + t.deepEqual(json, expected) + }) +}) + + +const passUrls = [ // / '/api/', // /blueprints '/api/blueprints', - // /update - '/api/update', // /:sheet/:tab/:resource '/api/example/export_events/rows', // /:sheet/:tab/:resource/:frag '/api/example/export_events/rows/1' -]; +] -var failUrls = [ +const failUrls = [ // /:sheet '/api/example', // /:sheet/:tab @@ -53,51 +73,25 @@ var failUrls = [ ] passUrls.forEach(function(url) { - test.cb('should respond successfully to request for "' + url + '"', t => { - http.get({ - hostname: 'localhost', - port: 4040, - path: url, - agent: false - }, function(res) { - var result_data = ''; - - if(res.statusCode != 200) { - t.fail('Server response was not 200.'); - } else { - res.on('data', function(data) { result_data += data }); - - res.on('end', function() { - if (result_data.length > 0) { - t.pass(); - } else { - t.fail("Server returned no data."); - } - }); - } - - t.end(); - }) - }); -}); + test(`should respond successfully to request for ${url}`, t => { + return fetch(`${SERVER_ROOT}${url}`) + .then(checkStatus) + .then(res => res.json()) + .then(json => { + t.pass() + }) + }) +}) failUrls.forEach(function(url) { - test.cb('should fail to respond to request for "' + url + '"', t => { - http.get({ - hostname: 'localhost', - port: 4040, - path: url, - agent: false - }, function(res) { - var result_data = ''; - - if(res.statusCode < 400) { - t.fail('Server response was not erroneous.'); - } else { - t.pass(); - } - - t.end(); - }) - }); -}); \ No newline at end of file + test(`should respond with 404 for ${url}`, t => { + return fetch(`${SERVER_ROOT}${url}`) + .then(res => { + if (!res.ok) { + t.pass() + } else { + t.fail() + } + }) + }) +}) diff --git a/yarn.lock b/yarn.lock index e7a78cb..d6922dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -999,7 +999,6 @@ call-signature@0.0.2: caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= dependencies: callsites "^2.0.0" @@ -1012,7 +1011,6 @@ caller-path@^0.1.0: caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= dependencies: caller-callsite "^2.0.0" @@ -1023,7 +1021,6 @@ callsites@^0.2.0: callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= camelcase-keys@^4.0.0: version "4.2.0" @@ -1296,7 +1293,6 @@ cors@^2.8.5: cosmiconfig@^5.0.6: version "5.0.7" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" - integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== dependencies: import-fresh "^2.0.0" is-directory "^0.3.1" @@ -1502,7 +1498,6 @@ dot-prop@^4.1.0, dot-prop@^4.2.0: dotenv@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" - integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== duplexer3@^0.1.4: version "0.1.4" @@ -1540,7 +1535,6 @@ encodeurl@~1.0.2: end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" @@ -1785,7 +1779,6 @@ execa@^0.7.0: execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" @@ -1967,7 +1960,6 @@ find-up@^2.0.0, find-up@^2.1.0: find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" @@ -2073,7 +2065,6 @@ get-stream@^3.0.0: get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" @@ -2297,7 +2288,6 @@ http-errors@^1.3.0: husky@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/husky/-/husky-1.2.0.tgz#d631dda1e4a9ee8ba69a10b0c51a0e2c66e711e5" - integrity sha512-/ib3+iycykXC0tYIxsyqierikVa9DA2DrT32UEirqNEFVqOj1bFMTgP3jAz8HM7FgC/C8pc/BTUa9MV2GEkZaA== dependencies: cosmiconfig "^5.0.6" execa "^1.0.0" @@ -2343,7 +2333,6 @@ ignore@^4.0.2: import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= dependencies: caller-path "^2.0.0" resolve-from "^3.0.0" @@ -2491,7 +2480,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-error@^2.2.1: version "2.2.1" @@ -2787,7 +2775,6 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -3094,9 +3081,9 @@ nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" -node-fetch@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" +node-fetch@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" node-forge@^0.7.4: version "0.7.6" @@ -3130,7 +3117,6 @@ node-releases@^1.0.0-alpha.14: nodemon@1.18.7: version "1.18.7" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.7.tgz#716b66bf3e89ac4fcfb38a9e61887a03fc82efbb" - integrity sha512-xuC1V0F5EcEyKQ1VhHYD13owznQbUw29JKvZ8bVH7TmuvVNHvvbp9pLgE4PjTMRJVe0pJ8fGRvwR2nMiosIsPQ== dependencies: chokidar "^2.0.4" debug "^3.1.0" @@ -3320,7 +3306,6 @@ p-limit@^1.1.0: p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== dependencies: p-try "^2.0.0" @@ -3333,7 +3318,6 @@ p-locate@^2.0.0: p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" @@ -3348,7 +3332,6 @@ p-try@^1.0.0: p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== package-hash@^2.0.0: version "2.0.0" @@ -3497,14 +3480,12 @@ pkg-dir@^2.0.0: pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" please-upgrade-node@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== dependencies: semver-compare "^1.0.0" @@ -3569,12 +3550,10 @@ pseudomap@^1.0.2: pstree.remy@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a" - integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA== pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -3650,7 +3629,6 @@ read-pkg@^3.0.0: read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= dependencies: normalize-package-data "^2.3.2" parse-json "^4.0.0" @@ -3835,7 +3813,6 @@ run-async@^2.2.0: run-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== run-parallel@^1.1.2: version "1.1.9" @@ -3868,7 +3845,6 @@ sax@^1.2.4: semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= semver-diff@^2.0.0: version "2.1.0" From 1f2a2953b1d0e9b7b0703f475aa105e9503b15d5 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 18:23:48 +0000 Subject: [PATCH 06/20] fix lint --- test/internals.js | 10 ++--- test/serverProcess.js | 95 +++++++++++++++++++++++++++++++++++++++++ test/server_process.js | 97 ------------------------------------------ 3 files changed, 99 insertions(+), 103 deletions(-) create mode 100644 test/serverProcess.js delete mode 100644 test/server_process.js diff --git a/test/internals.js b/test/internals.js index 99274a1..537c8cb 100644 --- a/test/internals.js +++ b/test/internals.js @@ -1,8 +1,6 @@ import test from 'ava' -import R from 'ramda' import { - defaultBlueprint, - defaultResource, + defaultBlueprint } from '../src/lib/blueprinters' import rows from '../src/blueprinters/rows' @@ -29,7 +27,7 @@ test('defaultBlueprint exports', t => { test('rows blueprinter', t => { const expected = [ { h1: 1, h2: 2, h3: 3 }, - { h1: 4, h2: 5, h3: 6 }, + { h1: 4, h2: 5, h3: 6 } ] const actual = rows(egInput1) t.deepEqual(expected, actual) @@ -37,8 +35,8 @@ test('rows blueprinter', t => { test('deeprows blueprinter', t => { const expected = [ - { 'hs': [1,2,3] }, - { 'hs': [4,5,6] } + { 'hs': [1, 2, 3] }, + { 'hs': [4, 5, 6] } ] const actual = deeprows(egInput1) t.deepEqual(expected, actual) diff --git a/test/serverProcess.js b/test/serverProcess.js new file mode 100644 index 0000000..ae705d8 --- /dev/null +++ b/test/serverProcess.js @@ -0,0 +1,95 @@ +import test from 'ava' +import fetch from 'node-fetch' +import childProcess from 'child_process' + +const SERVER_LAUNCH_WAIT_TIME = 10 * 1000 +const SERVER_ROOT = 'http://localhost:4040' +let serverProc = null +let serverExited = false +function checkStatus (res) { + if (res.ok) { + return res + } else { + throw new Error('Route is not present') + } +} + +/* SETUP: launch a development server with a wait time */ +test.before.cb(t => { + console.log('launching server...') + serverProc = childProcess.spawn('yarn', ['dev'], { + cwd: '.', + stdio: 'ignore' + }) + + serverProc.on('exit', function (code, signal) { + serverExited = true + }) + + setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME) +}) + +/* CLEANUP: kill the server */ +test.after(function () { + console.log('killing server...') + serverProc.kill('SIGKILL') +}) + +test('should launch', t => { + t.false(serverExited) +}) + +test('should update', t => { + const expected = { + success: 'All sheets updated' + } + + return fetch(`${SERVER_ROOT}/api/update`) + .then(checkStatus) + .then(res => res.json()) + .then(json => { + t.deepEqual(json, expected) + }) +}) + +const passUrls = [ + // / + '/api/', + // /blueprints + '/api/blueprints', + // /:sheet/:tab/:resource + '/api/example/export_events/rows', + // /:sheet/:tab/:resource/:frag + '/api/example/export_events/rows/1' +] + +const failUrls = [ + // /:sheet + '/api/example', + // /:sheet/:tab + '/api/example/events' +] + +passUrls.forEach(function (url) { + test(`should respond successfully to request for ${url}`, t => { + return fetch(`${SERVER_ROOT}${url}`) + .then(checkStatus) + .then(res => res.json()) + .then(json => { + t.pass() + }) + }) +}) + +failUrls.forEach(function (url) { + test(`should respond with 404 for ${url}`, t => { + return fetch(`${SERVER_ROOT}${url}`) + .then(res => { + if (!res.ok) { + t.pass() + } else { + t.fail() + } + }) + }) +}) diff --git a/test/server_process.js b/test/server_process.js deleted file mode 100644 index 70e7f70..0000000 --- a/test/server_process.js +++ /dev/null @@ -1,97 +0,0 @@ -import test from 'ava' -import fetch from 'node-fetch' -import child_process from 'child_process' - -const SERVER_LAUNCH_WAIT_TIME = 10 * 1000 -const SERVER_ROOT = 'http://localhost:4040' -let server_proc = null -let server_exited = false -function checkStatus(res) { - if (res.ok) { - return res - } else { - throw new Error('Route is not present') - } -} - -/* SETUP: launch a development server with a wait time */ -test.before.cb(t => { - console.log("launching server...") - server_proc = child_process.spawn('yarn', ['dev'], { - cwd: '.', - stdio: 'ignore' - }) - - server_proc.on('exit', function(code, signal) { - server_exited = true - }) - - setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME) -}) - -/* CLEANUP: kill the server */ -test.after(function() { - console.log("killing server...") - server_proc.kill('SIGKILL') -}) - -test('should launch', t => { - t.false(server_exited) -}) - - -test('should update', t => { - const expected = { - success: "All sheets updated" - } - - return fetch(`${SERVER_ROOT}/api/update`) - .then(checkStatus) - .then(res => res.json()) - .then(json => { - t.deepEqual(json, expected) - }) -}) - - -const passUrls = [ - // / - '/api/', - // /blueprints - '/api/blueprints', - // /:sheet/:tab/:resource - '/api/example/export_events/rows', - // /:sheet/:tab/:resource/:frag - '/api/example/export_events/rows/1' -] - -const failUrls = [ - // /:sheet - '/api/example', - // /:sheet/:tab - '/api/example/events' -] - -passUrls.forEach(function(url) { - test(`should respond successfully to request for ${url}`, t => { - return fetch(`${SERVER_ROOT}${url}`) - .then(checkStatus) - .then(res => res.json()) - .then(json => { - t.pass() - }) - }) -}) - -failUrls.forEach(function(url) { - test(`should respond with 404 for ${url}`, t => { - return fetch(`${SERVER_ROOT}${url}`) - .then(res => { - if (!res.ok) { - t.pass() - } else { - t.fail() - } - }) - }) -}) From c49cb2b59e857d0588d79546387c026bf9bcac00 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 18:40:53 +0000 Subject: [PATCH 07/20] fix encrypt script --- scripts/encrypt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index e07104d..6fb2054 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,4 +1,4 @@ #!/bin/bash -travis encrypt-file .env --add --force +travis encrypt-file .env --force git add .env.enc -git commit -m "add encrypted private key for travis testing" +git commit -m "TRAVIS: add encrypted key" From 837139eb787fadf907eaa60869970f053c41d8e7 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 18:41:16 +0000 Subject: [PATCH 08/20] add encrypted key --- .env.enc | Bin 1968 -> 1888 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.env.enc b/.env.enc index dfcfe8d3382e9d6b26274d3832cbc04c8da6f4af..24833cc3687c4ba22c57ed617f829d36dddb13d6 100644 GIT binary patch literal 1888 zcmV-m2cP&IeV{fHApsC#%|HbMs31;IM4=`RP)nkZ&3aO$n1S3t|Kbl`3RKv2qzc3{ z|U(SgZ1m*zZ?G(#fybbj`3A0)#gsuW#mk0Gi$qFEf@Aqtl13>n%J zd(ipg4s{9@@rcUkrFq32lJlxP%jns<7cI0gD%GFz z-D(oQ_IfbJmH1xNYmeQLa=K4H?lb<|r`OUqV{+{l;86O)Vz??ed}esg44iX0Vgnoy zaA?RQb?jN86kkB|kY_c)inO6MpW&bu729-z#=}kej&c|12rloUCwtG4NXCm*?Mj2x z0UVgTD@>ya9g@dFE@YK!>%BQ@`dglT^c7H&&`K*5(@jGxp}+N-L?R0Kt~G-*vA*pd zSRme>y3+dVzPPeV5jl70^e}W7bL?nrER01ay|NG5gm}-V3~>Zuq@%jIAvRW@ZLS5# zp&4QUAc7U>3h_ilL2C!3c<#?Hu|*wVeVEAo0KKreULs}C?itHThYXc#y{X#T$@ue{ zRgs?&VPW@yc2HGE5frk%Ss!?MLZ;!D1cnh1EQTMoGV_=vJQTtBylh~U@q2W@XTx$X zE?-ujK^1u{<-*A6`0aeYZZr7{vu|Vnal%Q%PWN7fE_iOqMs!U;oZRKV-xm6R#dd~{ zuTz>f=F9&?uu&;(26Z0RC2qG?vIA*(C*OqxrNa<$VHnEa;PK$gIL5%h(I^)vd_C=Y zE0*9EO>s^`C*Ft`(Ly+K<06y%Q z2KMCvwROeKEPDo>d>~p5CC5I~#jSlD;dp3ER-Xq$)GO9CtmnacFfuv0+oZ3up7rBi zEg;@(|6ve>(<9B!U8wteXTZS2)FLsE>C@3N7-dPJ2xrItRbWEGHt9=T!C|dFNF0IY z-PPQ^O(HCrZ9^ILF9NKi2|JFmdF(6cNK;t4BOl2sz%aDuy5yr=kior`EnH+hrB2e) zwt;q4l@+V?X&uC&^-plf2aeEgOSAyg)bj=@$74m*kg9;)=Aw$1{|WOD_!O|wg1kfvxU}KjH=3Qo{^gfG4luIZ>@&stE&UnMM^mTcuBzxgQZe3_aHi3;g6> zb};DnlbA!@>uA|HST~W>w9+^Nba3I|%XF2yeZ8SVR$n-F$hERB!aHf1lOh+(gbh!& zt$10&xzEuabuDie33MvR zF(LQx(RT)#pWyb=MyWP8o^ysfDQFX0HZYH$Xe*GHJJ>d2Q>_RJm4c7WOi zHRJi62SS=rxvFDbZr}QZkoNsw4$yAROW0ymc?m=hpC)m@_b?XE$fX3}VT}%?UnW^p zxi^S{-?f6my6(9Mcw(=_z)B4%!;f(isAvBVlBbLuT2dUaG#QI=*C4FPx&xY|9K1_! z9QA`F%O}|@zXk0-%^LJV#`)c{Ks^5MwRtBhyg7RK?0KInvkQuoUaF5TBPzjx5_}u2 zW1JTY#R`$tD7o=FV7ww(j69^ECT(nbPLTGSQFqJ-DA?J45%*T7rsIxW10foxN80`% zz~k6og>S!&R4W}MTv%yc22X@V>~H48gIyv?Vk)}8ojvT_B?tb$<(QB|535ZNFB08l`<&dWfA@3NCZi~z&-v4H5jtO;$v<+sHXwoiNmo8PLO>CB4D*c>&KbJ<5mJB4o z4I1(w$cWF@Ah2b{))*BQhK{0?6ZTFc&FLz$8gl};VC_W0^Jo5RV$^!#HrF0X?%K=& zZXX!JC1G_F(uqq<1J*9}zmJ3kKzm8N05+XF|7^RZa1v*A3~~;yUH4%Ujnl?shCWB2 zQhN3CUpuqCL+{}R{fdNNnQpKj9fe0ii+y78@t&k9DlE`UwTFEC-8GYcEticHaA+2M ajXqk%si@K+^2DoLNFA%6(thEWt7SmW@|0=- literal 1968 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 Date: Fri, 14 Dec 2018 18:43:55 +0000 Subject: [PATCH 09/20] fix travis decrypt logic --- .travis.yml | 3 +++ scripts/decrypt.sh | 2 -- scripts/encrypt.sh | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 scripts/decrypt.sh diff --git a/.travis.yml b/.travis.yml index b4598f5..0f43430 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,3 +14,6 @@ script: - yarn build - yarn lint - yarn test +before_install: +- openssl aes-256-cbc -K $encrypted_eeb74e8d35d1_key -iv $encrypted_eeb74e8d35d1_iv + -in .env.enc -out .env -d diff --git a/scripts/decrypt.sh b/scripts/decrypt.sh deleted file mode 100644 index 2b3a5f3..0000000 --- a/scripts/decrypt.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -openssl aes-256-cbc -K $encrypted_4f23b46f1ec6_key -iv $encrypted_4f23b46f1ec6_iv -in .env.enc -out .env -d diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 6fb2054..478f082 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,4 +1,4 @@ #!/bin/bash -travis encrypt-file .env --force +travis encrypt-file .env --add --force git add .env.enc git commit -m "TRAVIS: add encrypted key" From b6b7299d81cd9349e2a09290adebe5b7a966ec0e Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Fri, 14 Dec 2018 18:44:15 +0000 Subject: [PATCH 10/20] add encrypted key --- .env.enc | Bin 1888 -> 1888 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.env.enc b/.env.enc index 24833cc3687c4ba22c57ed617f829d36dddb13d6..bf4ebdd7e6383bbb03d182a7ded8bd938ab0fb10 100644 GIT binary patch literal 1888 zcmV-m2cP&Qg#%NIObkf7QadW;wR@8v75!mqy3y;HPyIKnzHWv)rc-7X54g7M+9kh| zcR-l4(_|)W)T2FHBEV)+McPj>7*lacJf5MIjFi8kiWr9fxMPz}+x?K`=J=a!!CdU4 zm=?o-g+_ra$ucnL#8v)su`3#bb8F-=UwWxn5p?;(H50fuSv!FQ?CeKT^Z(Pl68EA| z?O%#Vl9A{z<&Aoa5AuLF(k{J160un-9^NH(x~LG`@ii5eJRNO_U;(LZ9ov``mtRYb z$cu_Zw%HjCV{X`>y%Al^tN?^C5(MVT#4+VIdUfO)LYutb%kZCsA)rboWIT`J=l+2E zY?C858BJ`oX=cImt5u9^t(c2AQ)*Xyq;VUDGDh7mcDl&3u2durwo3hO!nC}!bIQ=r zp9eHtH{~AW3?e*p;4WBU37U&rq-R(x9D3Rr2Wde*7Du~=d1?eZc%b$7wHC#T;n#DG z`4B)<#?|#qFRalPEtPq0wIPgtkA|l?kQx@u`bv9N5$^wow6q{i^4Xz&h2_bNTn@GN zzXZHjo(QN+*tRLLg_6?I)$Hg42XY{=AbXw7?~}#~U=&eOIkr!Z%D+)_o5T)}*6~}p zzc5h`#@s=_!x-Qtm4sVu7KZ0XSNm1T+W8chm1&CU&A<#~gPK=CO=!D{!4m}dF}8yh z#B3b3z8G-Eo62CePmQ=2KQm+Q5YXQqC|=_)u$zY~+feBL^-Ck&BRKPyM*mY)?9XsTng}{N+fygMaei1IH0njdQ4*NPF&3u1}01231c!tip)HkHSu&iE~ro*57wNJCz_RnoH6!h{24hwCD zKgw1&>Je1kbe*xFp17SEwk@kCz5cHc*kqp&bRgqMZpE)i&Y2gAt5gm>9|>$RBnWd# zb54Ttu_}GU%~N0V#tBSmP3p$m>77$o%37t<3H$|I{p9Gmif(T@`|t7aFP@Bs^6b;m zH3Z@?_+F@*ZAQUYwiQ|XxkeByj3~lP5a`RGL-dE^Z^mDC zbssd?T^N(BYoQ+a+KuW+Hw@(EEKRIs`fKt1wna=B^+)1DbzS{J3VyCd9=rx?yxTU? z7B=ry`<5r@9aor8fUn#{hin5Ke%Px2tF@&GM#s$l^j8lvQugXEPw8ubZ}I=T55J3U zPJ_Vd+nWyhQ{8cv&(me#bbai%dLZ2l`OGk(w>lLJETUFcb;W8Ld-Kr$qEZfoYk_}) z@3*CX1J?4>grS_JWq;bS&tm}EEXG}t`3w8H!X;m!w6@qDH{Sub8V3XlAw_?acNSy+ zxh!YJM^GEZWbc_mQW<;VFWjw|HzG+$Mf->?`wpaBv(nbQ%XTBh0P5w2v{F(%zHK@g z%$)CZ)V*l)?1qZtY}XeG$B|;`0M{qibdy4T#Am5`T}LEmFhUWhUfRd1^3eO%r)9zT z{t3;da^7>O3oQG2z2wW755vs>G?F03G^H@JW4v_2Db8EGcLw>^(^hK;VnC27@WOfD zj=)Cv#nqslAW~Wc%y;2-3n5fx{xlEF-!_H3>%xAs3bPJ7NO}@svxyRpK{bQF241K} z`RM!*&4u#Ov486>3JR>GYZ5FOdKPv=UQ_oqL{5zzzg%1X17@h&e{g!ZqU~e1SxvY@ zjO?~qM#a`jSKMgUqRzVUxxO znrnH% zbZ;G&K;{dIQHvIR89{7hDmC{q{E1kMwCJ5AyHiOMYMe%@@XIcFNFJpb?Wn+Pn1_N6 zyYY4pSA~kUFO7qI8_FKgagy9vzt|mdmWv{+$QlJ1yvwn6LlTnkp_r^!DP?vn^7 a{6={EStFjQ8>63B41b$lBs$8=TQeTB@vbER literal 1888 zcmV-m2cP&IeV{fHApsC#%|HbMs31;IM4=`RP)nkZ&3aO$n1S3t|Kbl`3RKv2qzc3{ z|U(SgZ1m*zZ?G(#fybbj`3A0)#gsuW#mk0Gi$qFEf@Aqtl13>n%J zd(ipg4s{9@@rcUkrFq32lJlxP%jns<7cI0gD%GFz z-D(oQ_IfbJmH1xNYmeQLa=K4H?lb<|r`OUqV{+{l;86O)Vz??ed}esg44iX0Vgnoy zaA?RQb?jN86kkB|kY_c)inO6MpW&bu729-z#=}kej&c|12rloUCwtG4NXCm*?Mj2x z0UVgTD@>ya9g@dFE@YK!>%BQ@`dglT^c7H&&`K*5(@jGxp}+N-L?R0Kt~G-*vA*pd zSRme>y3+dVzPPeV5jl70^e}W7bL?nrER01ay|NG5gm}-V3~>Zuq@%jIAvRW@ZLS5# zp&4QUAc7U>3h_ilL2C!3c<#?Hu|*wVeVEAo0KKreULs}C?itHThYXc#y{X#T$@ue{ zRgs?&VPW@yc2HGE5frk%Ss!?MLZ;!D1cnh1EQTMoGV_=vJQTtBylh~U@q2W@XTx$X zE?-ujK^1u{<-*A6`0aeYZZr7{vu|Vnal%Q%PWN7fE_iOqMs!U;oZRKV-xm6R#dd~{ zuTz>f=F9&?uu&;(26Z0RC2qG?vIA*(C*OqxrNa<$VHnEa;PK$gIL5%h(I^)vd_C=Y zE0*9EO>s^`C*Ft`(Ly+K<06y%Q z2KMCvwROeKEPDo>d>~p5CC5I~#jSlD;dp3ER-Xq$)GO9CtmnacFfuv0+oZ3up7rBi zEg;@(|6ve>(<9B!U8wteXTZS2)FLsE>C@3N7-dPJ2xrItRbWEGHt9=T!C|dFNF0IY z-PPQ^O(HCrZ9^ILF9NKi2|JFmdF(6cNK;t4BOl2sz%aDuy5yr=kior`EnH+hrB2e) zwt;q4l@+V?X&uC&^-plf2aeEgOSAyg)bj=@$74m*kg9;)=Aw$1{|WOD_!O|wg1kfvxU}KjH=3Qo{^gfG4luIZ>@&stE&UnMM^mTcuBzxgQZe3_aHi3;g6> zb};DnlbA!@>uA|HST~W>w9+^Nba3I|%XF2yeZ8SVR$n-F$hERB!aHf1lOh+(gbh!& zt$10&xzEuabuDie33MvR zF(LQx(RT)#pWyb=MyWP8o^ysfDQFX0HZYH$Xe*GHJJ>d2Q>_RJm4c7WOi zHRJi62SS=rxvFDbZr}QZkoNsw4$yAROW0ymc?m=hpC)m@_b?XE$fX3}VT}%?UnW^p zxi^S{-?f6my6(9Mcw(=_z)B4%!;f(isAvBVlBbLuT2dUaG#QI=*C4FPx&xY|9K1_! z9QA`F%O}|@zXk0-%^LJV#`)c{Ks^5MwRtBhyg7RK?0KInvkQuoUaF5TBPzjx5_}u2 zW1JTY#R`$tD7o=FV7ww(j69^ECT(nbPLTGSQFqJ-DA?J45%*T7rsIxW10foxN80`% zz~k6og>S!&R4W}MTv%yc22X@V>~H48gIyv?Vk)}8ojvT_B?tb$<(QB|535ZNFB08l`<&dWfA@3NCZi~z&-v4H5jtO;$v<+sHXwoiNmo8PLO>CB4D*c>&KbJ<5mJB4o z4I1(w$cWF@Ah2b{))*BQhK{0?6ZTFc&FLz$8gl};VC_W0^Jo5RV$^!#HrF0X?%K=& zZXX!JC1G_F(uqq<1J*9}zmJ3kKzm8N05+XF|7^RZa1v*A3~~;yUH4%Ujnl?shCWB2 zQhN3CUpuqCL+{}R{fdNNnQpKj9fe0ii+y78@t&k9DlE`UwTFEC-8GYcEticHaA+2M ajXqk%si@K+^2DoLNFA%6(thEWt7SmW@|0=- From 909b9fd21b5be0c8a475fd03e561f5291456fb32 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sat, 15 Dec 2018 09:35:53 +0000 Subject: [PATCH 11/20] run bash in pre-push hook --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 005ae98..6addd6f 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "husky": { "hooks": { - "pre-push": "yarn test && yarn lint && travis encrypt-file .env --add --force && git add .env.enc && git commit -m \"add encrypted key\"" + "pre-push": "sh ./scripts/encrypt.sh" } }, "repository": { From 64ca47ee8eeb6ec2a8504ef8ccebbd2ff816fa44 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sat, 15 Dec 2018 10:58:28 +0000 Subject: [PATCH 12/20] amend serverProcess test to update first --- .env.enc | Bin 1888 -> 1936 bytes .travis.yml | 3 +-- test/serverProcess.js | 31 ++++++++++++++++--------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.env.enc b/.env.enc index bf4ebdd7e6383bbb03d182a7ded8bd938ab0fb10..15d3065e31bb5ce0acd50bbe6926863bf250665c 100644 GIT binary patch literal 1936 zcmV;B2XFXBYqv}be_UWw5s)=i#=`Mu$JX&#z7Z#;0714baFY zYFNU;2UL81Kdw$UIJZ5}F-?|+c3L1nH5i_MW>hS6DNO|6Lvqp-zM7$u=wC{yaKAN3$PZB{iyL8A_M9g?hU13 z06*f4NB6@+?@0IR$G$fc1-UT35A1pbF!nENmaudl7T8RIG&tL?W(IwDVz=(PXQM0# zd40H05K7!=6&sY*r9Gi*WI-CqE ze`7m38N^u}LEoSh7JPfO)HBHhE0w~I*hX-;rdX0vnuK5^)9t6XP!PaO$w;vyyV|Fz zY#{F|F35=9i(njmzjBLu+C(auRzEB9A$9}2B6c5e%d+zwDFokcYqKRD^+`; z1MBLuCaJjO-WJ#f>RPUPPk)njNDg{}5>na;Cd7{t5pc~N6!bUC3Zg_BsaIrn(H!}` z=_G6etYacZbp$$uk^J*`3Tjim;(2c*9iEKhM8p+kxPl^0&szbVpIj*8*`Z{2fIWlc zOE;Z06(x?Cjkk#u@k~>7RnD2y$~U3o3eb@uE+5rU-wB_?3KnW=;`o+WPXG(E`TwYF z&Ur`h{Yen7uq}p^0ezOIUyj38iZB&3`7)wgf~8d17S@(ul|1XwBJDQdZ~+b@*8U48 zBhCS|O41So`AN7Ic=1dhbpNyS>kb}#{Q4mNb&1>YDFLdt#KvUlEE+=-DY(G}Cv!SGDjE?W z(c#1ol#~QWs7~H?+(`Gan&Gy94INUFq%Z<3tdofCsQD{1Br|8mV2)B|<$J;KN*do{ zKGQibGa{s}BpUWZ;<*6wVl_X<@qx6PoR#8hh;u}(tmsZ=J>;0hnrpkz5NbWsBTmFf zDQ$P+pH{c%d!s#^~iSb}xQJy|E z{~*p$^nFiuG<$I+0e%4dXZk43x~UljNVY#a9W6i8eIsFdkjuDa-r}MrQ||L)P+E7c z#ctHWVEoU+Zr@~QvQ-rN%d{qigN#wj1T0NTvPdR|IIb6eg?YEpvHQh~_k6Cw9Qap* z0SnL>G9E;1bzz%3b$*f!s*Q9JAPF}>?kvY7sC4I?qcInj$EXX!6afF}#!Y)P1>kf@ zB?BbnwRQ$Cdw8k)%wKlU%m%do1m3(*9S%$Q_QS4mt}Ch%u~OL%n79;uaMSSsn zK84Pw?&HAV%S{;o;dYL(w?jg8z1jHyc5SU^m{5U$TK`HfScnj*k9*81@Rla@X0);d)DF7BgKeUZ*_P4(M0 z#A5{AkTWkE6ZG?Sk@vL#L$EjpZ;!rh{s`~~472$UgW*%yk|$J&g8#=rf_04`4CH1O zw>Ch4_8^k1+#_<2ia%81Hw;-FJm!afMCX#i5d?9R-O3o1hH?ce*^FATfuinZHD(4v zhRKg9Uw{cG^IlT{=3@LCNq@Y)knL??aA(liz~J-ZO7b?Y{mCp_rG84H@6>E7weGPU zTvr3@GoruxgJY z;qA)7-E?U}eQ2+KIX;J-d7810S$%@I+d0jh%jnl%RNfcYCA5=U7_i-)^GmYJ0`<$J WxR^&m3uVb7Q}fFx?vVjCsdbuP=D literal 1888 zcmV-m2cP&Qg#%NIObkf7QadW;wR@8v75!mqy3y;HPyIKnzHWv)rc-7X54g7M+9kh| zcR-l4(_|)W)T2FHBEV)+McPj>7*lacJf5MIjFi8kiWr9fxMPz}+x?K`=J=a!!CdU4 zm=?o-g+_ra$ucnL#8v)su`3#bb8F-=UwWxn5p?;(H50fuSv!FQ?CeKT^Z(Pl68EA| z?O%#Vl9A{z<&Aoa5AuLF(k{J160un-9^NH(x~LG`@ii5eJRNO_U;(LZ9ov``mtRYb z$cu_Zw%HjCV{X`>y%Al^tN?^C5(MVT#4+VIdUfO)LYutb%kZCsA)rboWIT`J=l+2E zY?C858BJ`oX=cImt5u9^t(c2AQ)*Xyq;VUDGDh7mcDl&3u2durwo3hO!nC}!bIQ=r zp9eHtH{~AW3?e*p;4WBU37U&rq-R(x9D3Rr2Wde*7Du~=d1?eZc%b$7wHC#T;n#DG z`4B)<#?|#qFRalPEtPq0wIPgtkA|l?kQx@u`bv9N5$^wow6q{i^4Xz&h2_bNTn@GN zzXZHjo(QN+*tRLLg_6?I)$Hg42XY{=AbXw7?~}#~U=&eOIkr!Z%D+)_o5T)}*6~}p zzc5h`#@s=_!x-Qtm4sVu7KZ0XSNm1T+W8chm1&CU&A<#~gPK=CO=!D{!4m}dF}8yh z#B3b3z8G-Eo62CePmQ=2KQm+Q5YXQqC|=_)u$zY~+feBL^-Ck&BRKPyM*mY)?9XsTng}{N+fygMaei1IH0njdQ4*NPF&3u1}01231c!tip)HkHSu&iE~ro*57wNJCz_RnoH6!h{24hwCD zKgw1&>Je1kbe*xFp17SEwk@kCz5cHc*kqp&bRgqMZpE)i&Y2gAt5gm>9|>$RBnWd# zb54Ttu_}GU%~N0V#tBSmP3p$m>77$o%37t<3H$|I{p9Gmif(T@`|t7aFP@Bs^6b;m zH3Z@?_+F@*ZAQUYwiQ|XxkeByj3~lP5a`RGL-dE^Z^mDC zbssd?T^N(BYoQ+a+KuW+Hw@(EEKRIs`fKt1wna=B^+)1DbzS{J3VyCd9=rx?yxTU? z7B=ry`<5r@9aor8fUn#{hin5Ke%Px2tF@&GM#s$l^j8lvQugXEPw8ubZ}I=T55J3U zPJ_Vd+nWyhQ{8cv&(me#bbai%dLZ2l`OGk(w>lLJETUFcb;W8Ld-Kr$qEZfoYk_}) z@3*CX1J?4>grS_JWq;bS&tm}EEXG}t`3w8H!X;m!w6@qDH{Sub8V3XlAw_?acNSy+ zxh!YJM^GEZWbc_mQW<;VFWjw|HzG+$Mf->?`wpaBv(nbQ%XTBh0P5w2v{F(%zHK@g z%$)CZ)V*l)?1qZtY}XeG$B|;`0M{qibdy4T#Am5`T}LEmFhUWhUfRd1^3eO%r)9zT z{t3;da^7>O3oQG2z2wW755vs>G?F03G^H@JW4v_2Db8EGcLw>^(^hK;VnC27@WOfD zj=)Cv#nqslAW~Wc%y;2-3n5fx{xlEF-!_H3>%xAs3bPJ7NO}@svxyRpK{bQF241K} z`RM!*&4u#Ov486>3JR>GYZ5FOdKPv=UQ_oqL{5zzzg%1X17@h&e{g!ZqU~e1SxvY@ zjO?~qM#a`jSKMgUqRzVUxxO znrnH% zbZ;G&K;{dIQHvIR89{7hDmC{q{E1kMwCJ5AyHiOMYMe%@@XIcFNFJpb?Wn+Pn1_N6 zyYY4pSA~kUFO7qI8_FKgagy9vzt|mdmWv{+$QlJ1yvwn6LlTnkp_r^!DP?vn^7 a{6={EStFjQ8>63B41b$lBs$8=TQeTB@vbER diff --git a/.travis.yml b/.travis.yml index 0f43430..4517fe9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,10 +10,9 @@ before_script: install: - yarn script: -- if [ "TRAVIS_PULL_REQUEST" = "false" ]; then bash ./scripts/decrypt.sh; fi - yarn build - yarn lint - yarn test before_install: -- openssl aes-256-cbc -K $encrypted_eeb74e8d35d1_key -iv $encrypted_eeb74e8d35d1_iv +- openssl aes-256-cbc -K $encrypted_fb307c69bf51_key -iv $encrypted_fb307c69bf51_iv -in .env.enc -out .env -d diff --git a/test/serverProcess.js b/test/serverProcess.js index ae705d8..b6ff5a4 100644 --- a/test/serverProcess.js +++ b/test/serverProcess.js @@ -16,7 +16,7 @@ function checkStatus (res) { /* SETUP: launch a development server with a wait time */ test.before.cb(t => { - console.log('launching server...') + console.log('SETUP: launching server and updating...') serverProc = childProcess.spawn('yarn', ['dev'], { cwd: '.', stdio: 'ignore' @@ -26,7 +26,21 @@ test.before.cb(t => { serverExited = true }) - setTimeout(t.end, SERVER_LAUNCH_WAIT_TIME) + function pingUpdate () { + const expected = { + success: 'All sheets updated' + } + + return fetch(`${SERVER_ROOT}/api/update`) + .then(checkStatus) + .then(res => res.json()) + .then(json => { + t.deepEqual(json, expected) + t.end() + }) + } + + setTimeout(pingUpdate, SERVER_LAUNCH_WAIT_TIME) }) /* CLEANUP: kill the server */ @@ -39,19 +53,6 @@ test('should launch', t => { t.false(serverExited) }) -test('should update', t => { - const expected = { - success: 'All sheets updated' - } - - return fetch(`${SERVER_ROOT}/api/update`) - .then(checkStatus) - .then(res => res.json()) - .then(json => { - t.deepEqual(json, expected) - }) -}) - const passUrls = [ // / '/api/', From 4328ceb464710cbd67355caffbaa48d6c2be289c Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sat, 15 Dec 2018 10:59:20 +0000 Subject: [PATCH 13/20] encrypt script for travis --- .env.enc | Bin 1936 -> 1936 bytes package.json | 3 ++- scripts/encrypt.sh | 25 ++++++++++++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.env.enc b/.env.enc index 15d3065e31bb5ce0acd50bbe6926863bf250665c..4af7c7879f56f0b4b52c93be788174bf3e8d24d4 100644 GIT binary patch literal 1936 zcmV;B2XFZQt&;#6VkglQO`hw7Wrhw+b}>Y4m{bZHz&yTDT$L?9d67DrEU&w5p6s(j zv5PCJ*WU`bLg0k#|GyUm!09xQdTJ9&!_F52QZM&;QXJNt;kHE8iotB%>AHrgDh{XV zx0Y>2MSEfwod_)VmKiF{X0CpT5>KSaG}AvJSWsM*jfGl5{Mf?tfv^42waSHMNmgsz z$Ll>`4`L>XiwAok-a^t9YW_+kEUiYjKdHIjoIIRyMD+IiHSM1@pLXUWFlK5=bo(15 zHmUG$L{u1|Y?+aa%E_vSPQxQ8fGVR$9}Z~Vul!5>&|NUJg4`54D`o*99WZ`o%l1W` z4SWf2rgs;(5{5WR?5;F^_?j%AFHAEiHWhmWdB!Z*$(M{N&59`GIPZv-EluLBT5y;- z30P&_DZn+M#~+b;KK4pbncHZ-!>C$po#A{us{E6k6Pz}jRt0$w)3fov0o2IL#X31x zT}M#fyrU++!=)$A#=-$Up`!|iMZnZm6pg6kfVtu|7=5Ky3QSmB$fIRyR9Ur`&N`Of zI@)Z+v6L3HJ}6v~&viO1?Jw^qsi^L5tdqDa@dRdXc#X$?F1N7u`(C3^)yv|h`bKJx ziIj^pcQV`+_9viM$&V5L);7ECQQen_WmPFUk#1D zNdI#F7R3Hlrq|8Ln@x z7T`bBY7OK|Jwr|xt-1&l=HDCbXE(ESkNy=VAb%*1rHR=qtRyi4=BBDtOf6Z2^`S;9 z{?wcTbk`g@n!$_6ROAFw@Hpkat8ueS2y-dz@0oH0d0E)QY?oOOg$>GbNtw1<=B|)n z6=C^_*3DBdHj^|qd%B-k;E8WH^w8a3JHr3MtkSr8szDJ2x6^y59^BvDW>1HOv^4rX zDw-L#{cb?P&~U=er6DY)3iR0z&=9&-7Io`rTZGIweHHJcSr|yGtSv81p~g@xl=7MK zx=$m1W=W-d3WtozO-0GCVa@S~+p5p@M(C+dwOexRw}I~&XbL?kE2K;3EyGJBjdG9N zXdfS+Pys}X@5x&$o(z%JqQYc+wY&S1j3(vGvp7_=I%j#pl%oG#EQwK_sjK+dK-ZZa z_{HonCbg3tF3DVvrA?fLx8 zH0zNP;1eY`C};8G!10k@*2rmPWSokxeJh*CFHMmM52Zl*WS@sifW8)IOSk5)HHb9P z$^Io!@`je;NCm%e!Ecczew^7n#Do@7{C-XG+}#&Jx1{vObtW<3==nI|tq;cV6p47{ zsh34at@?b=`C&Cx^^0>Ug#s5qBFzIS`pXvEmEV1uy+)@I+e%Bo5dg} z7%R5v?&o9q+OZ)3S8#H4^`ES@GG99jd_UP&`gW}2s|k}d^Ged^)2V2ivh&6Z_Fg+@ zgdl=7W(nF6sO$`s<4-Y$){Z+^!~!nlD%x-w$op95%AuQSF?PY)3?Sqc&1wNxT+4@g zBm(665W5iC0AZm$Q;&2%1Cgd=hCX6vAUKJv^v`Cz+^**8!%ohB&UQfz*%cFl29Mog z8qxD4Y!?0smSN-s$cIhjP8USpZqb1=C@Gx@9Izb=>x;RA(843x>hmScXOJB4X0%fb zy`nRL2q)p;r9Gz*7XVSEKkE-H&U^l%d9<-ebCECT+iTMMhnmOsHOQ3dO?;fH!fbj; zb^p_npr3qUJ=hTNmCH=+;G@{IRmv9i^wgZIrl+V5`vBp3Nz20(__OyT)!Patg{?lNAa7FU>3g6!Hy(MY~ z>M4Tj-co9Ih_E5mq#2!;4tPt#&MC(aq2g16Zb*s-dxGi3xlkwa8a@i>+1Zk88l(u+ W_z7#7dGw}uGicH*JTrH}=z{Z4<>2T5 literal 1936 zcmV;B2XFXBYqv}be_UWw5s)=i#=`Mu$JX&#z7Z#;0714baFY zYFNU;2UL81Kdw$UIJZ5}F-?|+c3L1nH5i_MW>hS6DNO|6Lvqp-zM7$u=wC{yaKAN3$PZB{iyL8A_M9g?hU13 z06*f4NB6@+?@0IR$G$fc1-UT35A1pbF!nENmaudl7T8RIG&tL?W(IwDVz=(PXQM0# zd40H05K7!=6&sY*r9Gi*WI-CqE ze`7m38N^u}LEoSh7JPfO)HBHhE0w~I*hX-;rdX0vnuK5^)9t6XP!PaO$w;vyyV|Fz zY#{F|F35=9i(njmzjBLu+C(auRzEB9A$9}2B6c5e%d+zwDFokcYqKRD^+`; z1MBLuCaJjO-WJ#f>RPUPPk)njNDg{}5>na;Cd7{t5pc~N6!bUC3Zg_BsaIrn(H!}` z=_G6etYacZbp$$uk^J*`3Tjim;(2c*9iEKhM8p+kxPl^0&szbVpIj*8*`Z{2fIWlc zOE;Z06(x?Cjkk#u@k~>7RnD2y$~U3o3eb@uE+5rU-wB_?3KnW=;`o+WPXG(E`TwYF z&Ur`h{Yen7uq}p^0ezOIUyj38iZB&3`7)wgf~8d17S@(ul|1XwBJDQdZ~+b@*8U48 zBhCS|O41So`AN7Ic=1dhbpNyS>kb}#{Q4mNb&1>YDFLdt#KvUlEE+=-DY(G}Cv!SGDjE?W z(c#1ol#~QWs7~H?+(`Gan&Gy94INUFq%Z<3tdofCsQD{1Br|8mV2)B|<$J;KN*do{ zKGQibGa{s}BpUWZ;<*6wVl_X<@qx6PoR#8hh;u}(tmsZ=J>;0hnrpkz5NbWsBTmFf zDQ$P+pH{c%d!s#^~iSb}xQJy|E z{~*p$^nFiuG<$I+0e%4dXZk43x~UljNVY#a9W6i8eIsFdkjuDa-r}MrQ||L)P+E7c z#ctHWVEoU+Zr@~QvQ-rN%d{qigN#wj1T0NTvPdR|IIb6eg?YEpvHQh~_k6Cw9Qap* z0SnL>G9E;1bzz%3b$*f!s*Q9JAPF}>?kvY7sC4I?qcInj$EXX!6afF}#!Y)P1>kf@ zB?BbnwRQ$Cdw8k)%wKlU%m%do1m3(*9S%$Q_QS4mt}Ch%u~OL%n79;uaMSSsn zK84Pw?&HAV%S{;o;dYL(w?jg8z1jHyc5SU^m{5U$TK`HfScnj*k9*81@Rla@X0);d)DF7BgKeUZ*_P4(M0 z#A5{AkTWkE6ZG?Sk@vL#L$EjpZ;!rh{s`~~472$UgW*%yk|$J&g8#=rf_04`4CH1O zw>Ch4_8^k1+#_<2ia%81Hw;-FJm!afMCX#i5d?9R-O3o1hH?ce*^FATfuinZHD(4v zhRKg9Uw{cG^IlT{=3@LCNq@Y)knL??aA(liz~J-ZO7b?Y{mCp_rG84H@6>E7weGPU zTvr3@GoruxgJY z;qA)7-E?U}eQ2+KIX;J-d7810S$%@I+d0jh%jnl%RNfcYCA5=U7_i-)^GmYJ0`<$J WxR^&m3uVb7Q}fFx?vVjCsdbuP=D diff --git a/package.json b/package.json index 6addd6f..7779af5 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ }, "husky": { "hooks": { - "pre-push": "sh ./scripts/encrypt.sh" + "pre-commit": "sh ./scripts/encrypt.sh", + "pre-push": "yarn lint && yarn test" } }, "repository": { diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 478f082..a832a25 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,4 +1,23 @@ #!/bin/bash -travis encrypt-file .env --add --force -git add .env.enc -git commit -m "TRAVIS: add encrypted key" +echo "Encrypting .env file for Travis..." +if hash travis 2>/dev/null; then + if [ ! -f .env ]; then + echo "============================================================================================" + echo "ERROR: You must create a .env file and add your credentials. See .env.example for an example" + echo "============================================================================================" + exit 3 + else + travis encrypt-file .env --add --force --pro + git add .env.enc + git add .travis.yml + echo ".env.enc created and added to commit" + fi +else + echo "============================================================================================" + echo "ERROR: Travis CLI is not installed on your local. Please install from:" + echo "\thttps://github.com/travis-ci/travis.rb" + echo "After installing, make sure that you login with:" + echo "\ttravis login --pro" + echo "============================================================================================" + exit 3 +fi From b06c8536b97d4f5bfd1cbbf16a5127e670a2b588 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sat, 15 Dec 2018 11:07:30 +0000 Subject: [PATCH 14/20] rm old config.js --- .env.enc | Bin 1936 -> 1936 bytes .travis.yml | 1 - src/example.config.js | 20 -------------------- 3 files changed, 21 deletions(-) delete mode 100644 src/example.config.js diff --git a/.env.enc b/.env.enc index 4af7c7879f56f0b4b52c93be788174bf3e8d24d4..6eb31d54cc02d3bb674c8941a57559875abbb50d 100644 GIT binary patch literal 1936 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 W_z7#7dGw}uGicH*JTrH}=z{Z4<>2T5 diff --git a/.travis.yml b/.travis.yml index 4517fe9..164ebb0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ cache: - node_modules before_script: - npm install -g yarn -- cp ./src/example.config.js ./src/config.js install: - yarn script: diff --git a/src/example.config.js b/src/example.config.js deleted file mode 100644 index 29c4a80..0000000 --- a/src/example.config.js +++ /dev/null @@ -1,20 +0,0 @@ -import BP from './lib/blueprinters' - -export default { - port: 4040, - googleSheets: { - sheets: [ - { - name: 'example', - id: '15gb_aYJw7WSVZmtS0FZvcpGx1-kwKX3VHH8YV6La4hY', - tabs: { - export_events: [BP.deeprows, BP.rows], - export_categories: [BP.groups, BP.rows], - export_sources: BP.ids, - export_sites: BP.rows, - export_tags: BP.tree - } - } - ] - } -} From 9f96e6ea8dc40babc8ce58da0db7a728ebe2108b Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sat, 15 Dec 2018 16:22:33 +0000 Subject: [PATCH 15/20] update encrypt --- .env.enc | Bin 1936 -> 1936 bytes scripts/encrypt.sh | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.enc b/.env.enc index 6eb31d54cc02d3bb674c8941a57559875abbb50d..063d190c7a653a6bec0f2853247e52c1780e631b 100644 GIT binary patch literal 1936 zcmV;B2XFX&X{a{QUWJIs3$v|xOVdMa+kIOmgYJQuvSQ~ojAIzj37#PHs<@9PLM%w+ zaz^lO()$#c%@H>n2WmNjG@`xnQz{Ysm@i5}RxuX^Y?xlZ?8{xGPgl`0FX_hV|1C&C z4OBHewJj?sL49egGh?|&j6MMTfaa+QLbMl>AQxFx1=kmQ81=A%%u8|(H!s~UF+p;E zPtm=A(qK}x4hQE!Y9|F#Dl&AnTWjMcm8Lm(0PSLX+tX={R(K90!<5~faBuLmj*79X z;r(>n0oWASD@O1G-ub(ZN7eG4Z^=3x34H6~BdWZ5l~a!B4!?>q5s&M8>M(h7u-k0e zP48x!rVoJ;Lqv*{8z|bt)`%3fX{;Z^j`&v~k({^mTZLK!)0W01(wR+s(!#cf-ciko~x8x;iaF)OPv6;+Ub`lwzlQK(H5eJp+`{^(6B?;;@gV5==vJ-#16cF$?cCT#GKWN3slO z=y`oyuycH)5C+OJwYPG8JicP61d%a5`!_r1!w9~n_BFe%=nriv+0Latt1by5V-AS z1s3?XwO)o`5D!Xh@i=wkQg+tRq)q55W65qg0>5H??hhmbpPm zLg)pL8ait;%qme175R)I)^*ePK`m2>jqKxSHm!8rQ4a3scH30 z22|c<20lX9z3gvF#8+RCEzz?$e@{T&PJvET0^QFML4VmVb)I_oMpSj>w}LU=y8#O~ zw#;3)pc=npat1=`r-k;LFc8ROY?purjPixv7-Z`c?|q!G)nJ=Hf-3n$pp=7AvW zXje&b*C~HcukN6EyM~jfPgGgmX=Dmq=I~GDFX1kWtpRA>3}(v`|F)-9)N9m1U5?Fc z=IAbC0Y;{SPj%F(dTZ1R_1#WCnTGp;PCQ0-r14+Qi=uvv!v0EDKF2e@^Q!?60!OLx zJvp0Y(bivi>ObdO{c6?S9u}XrVSuY=p!5nR-qar z^xNe(=;P)|=b^)gFIVDKIi>A$0zlR(Tiq^YNl-%3X0?P(H$7`s)q5ZhaB-U8X(5HA zih)Q`^GTqQ4WGvt905A-h`9Ck{iM&Qvz7_#=wo0Hym7@EN~pJlP<*)M3XFRV3?nM>YVu>c zGqbuI5_6D2(_F*$Cz3w5PGqkOJ;R{F7p~K578Y6-fyKtx0f^TSZQP)hxcm}LtSv!@ zL?<2B&>Iwj$C3&?;eQvI)Yo{?&a<`W2hacAV z_!|!BS;sTI-WylXbnM*70Xet=Qvv4_s+0Dg2Db)o>5{kqqO6@sdZgH8emyJ?`>RvF zO3d$5^~ZBK2Gz4+tP0%2e^;2E<0QByu{;58epkxBSjQ$UwgSH&W4AyW&|m0Xoi=9I Wns6`Zouzp4pUeTxP*Dm>JG}|msl)03 literal 1936 zcmV;B2XFWmoZqslf-$wfnrP(XcJC4r=#r0*js$ zRm!<-3HMiU(PZ{FlTKY16?=z0n4FLHQmi>=B)YC|VvJKCY2>t?J!}LSBh43bN2;x= zjU2b5kPgUJ^XeD|4}IDtrtK=^Bb^?U72&Vd|JhZhO3x4~xPTLoLNkACc^dJM@jR6g z#R)v{$RkyJSK_;Ao2EQkX2?zRCPZc1fv0^E-y$hUxymMnTJ4slQYNgTfj;db>R_R}vzzrf^BO?&~)EeWfJ5a;}5ytjzgb&8@tkarzYfwje2=uF=Fy-|S35M(`iwPL z+E(D1!5@E-OKn`{ROF6@KboVK#Iv#XlN)nUao^*OOjvlDcE*tTZE8PXBq%8;M{WjM zkY3)<|RGR=}0hPo@gwtZg#Uu1j8etVk!@jQ&|EN)^5D zH7s49z%Rs|%|GO{V!|iXa)bbbFpttFa{*>iCDiwpl69NzMbp3sMTX}E# z7nxuJ(+@~Tx-aBWAEwJ3pOIy>dTDdK)PZk9waZm|zYZ%6&2i^`e&{$_P;woS@Qg?w znnM6Q#SK^;r4OwN-ll__JpiWBd13xI5((@;Pat9+C|sSDcoHkL;XSs?1!Xw6sQ(&Z_Z23V%|nrer#wt zE@BLhGRYf~wMFasc@lmHCq_-14#KK7&J=gdm*G1xbM$OX=VYecPLcor1Gy7gxY=L# zbytFsmRXqD6iQEJ)I5jao9^Q(_K=+Jkrkc^Nf8EDs|CsHDMx;Arn_RwYF^4UT??4k zAo1DuB$jb!D)SM4IF;*amao)$Yenkzy_YC+rW2r}b>YSm#N}EM6UFSW{=KJDxkD4j z<+&NJPKthxX=+eCfGL9sfn>yPIZ6lxS_0Acn}*HmErR?A$mju&qDx~@&6sHaPk*ltJrLlpL$LDxvDdQia!$NQ=+7GwKMQJ68QvT$)9()zQsENr>fQoVLE5T*XNm ziOSaOkTsR<*>CErW7;}LU<8OPC>?zzmzwpXC(FP9KPFTp)jioAK+cw53dfNroRdo2 z!xz?{82OZ`r4CD{fcQq2z6@nVF7nBz@A4VcJ@qydLQCi@E;u=5+bl9%x3kk+V6Y2- z84{7jdm&~A15@|WY1M}>+|aop8r;BDNn#o$8~<(QH3Mi`IlPYr;ypI;vV10ttY2D@ zk?af1{q)v{^PlR%Cfjyn1Sj?r$ftAPZ@b96=nbqpud1y*?(^mS z6wla!v;D%79QO4>iD-mKVotB4@*J0AbXg7~>&DV0bTPRlyZ(E!c^Xm~ zN>3G;1WoR)_5qQ0j!)Qav&j$>+}e{DrNk9r<6+`CMtT;-kF|{>C(`UldfGMAQwQC; z4cC#{)iM|ZI9*&k-zG|a(29Q566>IN`8y?Io+r$BZjg6DGzjTm~E@IlbmZGisT?A zllAUGrWQ7}bED#aZB$50h5N$666gHaO~Wi7mZ`+R9@UN;**Rxq9 zY}Q~I2!A8ryg)aJf7f*?rh8gI/dev/null; then echo "============================================================================================" exit 3 else - travis encrypt-file .env --add --force --pro + travis encrypt-file .env --add --force --org git add .env.enc git add .travis.yml echo ".env.enc created and added to commit" From ddeeb3f5881e1f888cb69b08d1e005904e56887d Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Mon, 17 Dec 2018 10:49:12 +0000 Subject: [PATCH 16/20] refactor encrypt script to be more readable --- .env.enc | Bin 1936 -> 1888 bytes .travis.yml | 2 ++ scripts/encrypt.sh | 35 ++++++++++++++++++++++------------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/.env.enc b/.env.enc index 063d190c7a653a6bec0f2853247e52c1780e631b..4424eafaf51a9c82bd56511360d5c14657dcd51c 100644 GIT binary patch literal 1888 zcmV-m2cP%>pD+}5V1lbyQ0?~Xnd{xR0zY3U5D`%$h1z_4<9Q1z&7VS!J#jxXI}SRw zu*Fx_ST1Aq=*?aq%pVnFG1M#rQV8itSkQUd;T6 zP&h8PJ^c3~o=k;{yeHUYd2Q8iKev)Xy&4z3*B@sDIAlHMz>V6_IdL z8CQ*}W974wu4+d052{t%fg*IrN#?bBj_T_2*V#U|Nzx769arUQG+CG%AX6L)@Pj2D zcQ^LfIqn8Bg;5w(#PcX`-Aw=jzrAsCPuGMYC?#hF>;H9~uls54f}-ue9+Gw-eCnI- zSM3478+f(SS-@@r0KMs5%1?}iEloA1B%WQ zV^S+5Ik}Z8BV)}?M6A_9*1ybUlw)tx3Ne=TvH5A$!sa%jC0Ria4>0&-sbQ}mWr6v&GmaY7-o43)DN>% zddV0q;pB^&S^D`aU64$+fz8ax#(~f_<@i*mbmz`G-W{fQAv|k*Xjtq;$2c$v{)o9h zt=HUJKL;%(qvK7vh}2k>k#PpD$D5hbYd|wMFWc3|s+eZdDMPlBI5U9Vh*-03>u?;F zafTiqTqXJZ90V|hC?<>Oo{$S30&?;lk5sz5&u_j)%(#DtMA-f)xd&k>O(*#l^OPrC zgEo8JUE6l|)ox`DR8B(^FwXtRK?d{>i^Dla{PtVfm+`Q)MBWQt)c(Myi?VIY>B~CT zNG(=S@mplv%!|t|>!Pc$|d?OZD`W36Xzd6I?4w)J`evhTK zZ$0+lIQDb8nQ-beODos^KKThn;NG}sp6Gqa=ONqU)&Yr?IgqL(`zJn_-r-310h7r4 zZ7<5*x?VDl66XD`?b2onrsZQ9$GhRuLX%nFJRS1r)|zZZ3>**;TBasWDLM)WXBQsVGj!h0MWE?qv6ia#WmJND zSr0Hu`O+s_d{@j0?NV;fWJ6mq05=wxPdZ^M*2+?C{7vP0LMo- zK`TOl_#$&T3EnrwWp1yR&GF?AB&kkjHkOFPsYkpL#r7U|4fNE`o{-N)nNsIZ@S)?- zl%Hz__58v6Ipf?WWdqpGc#wSmcYXuP@GGP~3R$GGF)Jx0RkI84iL}lQo`ykW_tQ5ITNxZe>Fo5eN*b;QyM%goRqDcf#2Rgw;BFb{QgZc zcln*i0-?DigClC3#FmxDg=gqyh^V#oLH1rjw^iG>Bz1~@bVp>Az$3h%0bWjRpW`VF z(K_kmOb~hK*$i&P%Nv5owCu;Onh*~{SKIbD>B;$3o*|Qx)y^Y&knvbEl^laeZ;^hu zBuie*N-$k7gIHG0z?wp{K7d$VfPjZv^ww=2A$oT(yo|KZXp5Mv$3svZ>(a4;&^Z5@ z1xZnqevAJHY(83RLi22|*J=lM0!nBle8*_m$w-t%rMt8NAFg=- literal 1936 zcmV;B2XFX&X{a{QUWJIs3$v|xOVdMa+kIOmgYJQuvSQ~ojAIzj37#PHs<@9PLM%w+ zaz^lO()$#c%@H>n2WmNjG@`xnQz{Ysm@i5}RxuX^Y?xlZ?8{xGPgl`0FX_hV|1C&C z4OBHewJj?sL49egGh?|&j6MMTfaa+QLbMl>AQxFx1=kmQ81=A%%u8|(H!s~UF+p;E zPtm=A(qK}x4hQE!Y9|F#Dl&AnTWjMcm8Lm(0PSLX+tX={R(K90!<5~faBuLmj*79X z;r(>n0oWASD@O1G-ub(ZN7eG4Z^=3x34H6~BdWZ5l~a!B4!?>q5s&M8>M(h7u-k0e zP48x!rVoJ;Lqv*{8z|bt)`%3fX{;Z^j`&v~k({^mTZLK!)0W01(wR+s(!#cf-ciko~x8x;iaF)OPv6;+Ub`lwzlQK(H5eJp+`{^(6B?;;@gV5==vJ-#16cF$?cCT#GKWN3slO z=y`oyuycH)5C+OJwYPG8JicP61d%a5`!_r1!w9~n_BFe%=nriv+0Latt1by5V-AS z1s3?XwO)o`5D!Xh@i=wkQg+tRq)q55W65qg0>5H??hhmbpPm zLg)pL8ait;%qme175R)I)^*ePK`m2>jqKxSHm!8rQ4a3scH30 z22|c<20lX9z3gvF#8+RCEzz?$e@{T&PJvET0^QFML4VmVb)I_oMpSj>w}LU=y8#O~ zw#;3)pc=npat1=`r-k;LFc8ROY?purjPixv7-Z`c?|q!G)nJ=Hf-3n$pp=7AvW zXje&b*C~HcukN6EyM~jfPgGgmX=Dmq=I~GDFX1kWtpRA>3}(v`|F)-9)N9m1U5?Fc z=IAbC0Y;{SPj%F(dTZ1R_1#WCnTGp;PCQ0-r14+Qi=uvv!v0EDKF2e@^Q!?60!OLx zJvp0Y(bivi>ObdO{c6?S9u}XrVSuY=p!5nR-qar z^xNe(=;P)|=b^)gFIVDKIi>A$0zlR(Tiq^YNl-%3X0?P(H$7`s)q5ZhaB-U8X(5HA zih)Q`^GTqQ4WGvt905A-h`9Ck{iM&Qvz7_#=wo0Hym7@EN~pJlP<*)M3XFRV3?nM>YVu>c zGqbuI5_6D2(_F*$Cz3w5PGqkOJ;R{F7p~K578Y6-fyKtx0f^TSZQP)hxcm}LtSv!@ zL?<2B&>Iwj$C3&?;eQvI)Yo{?&a<`W2hacAV z_!|!BS;sTI-WylXbnM*70Xet=Qvv4_s+0Dg2Db)o>5{kqqO6@sdZgH8emyJ?`>RvF zO3d$5^~ZBK2Gz4+tP0%2e^;2E<0QByu{;58epkxBSjQ$UwgSH&W4AyW&|m0Xoi=9I Wns6`Zouzp4pUeTxP*Dm>JG}|msl)03 diff --git a/.travis.yml b/.travis.yml index 164ebb0..e3a8761 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,5 +13,7 @@ script: - yarn lint - yarn test before_install: +- openssl aes-256-cbc -K $encrypted_eeb74e8d35d1_key -iv $encrypted_eeb74e8d35d1_iv + -in .env.enc -out .env -d - openssl aes-256-cbc -K $encrypted_fb307c69bf51_key -iv $encrypted_fb307c69bf51_iv -in .env.enc -out .env -d diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 509b2c1..932f43f 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,18 +1,14 @@ #!/bin/bash echo "Encrypting .env file for Travis..." -if hash travis 2>/dev/null; then - if [ ! -f .env ]; then - echo "============================================================================================" - echo "ERROR: You must create a .env file and add your credentials. See .env.example for an example" - echo "============================================================================================" - exit 3 - else - travis encrypt-file .env --add --force --org - git add .env.enc - git add .travis.yml - echo ".env.enc created and added to commit" - fi -else + +# confirm that user has access to forensic architecture datasheet +# if [ ! -z "$(travis repos | grep "forensic-architecture/datasheet-server")" ] +# echo "No travis encrypt possible, skipping this step." +# exit 0 +# fi + +# confirm travis is installed +if [ ! hash travis 2>/dev/null ]; then echo "============================================================================================" echo "ERROR: Travis CLI is not installed on your local. Please install from:" echo "\thttps://github.com/travis-ci/travis.rb" @@ -21,3 +17,16 @@ else echo "============================================================================================" exit 3 fi + +# confirm there is a .env file to encrypt +if [ ! -f .env ]; then + echo "============================================================================================" + echo "ERROR: You must create a .env file and add your credentials. See .env.example for an example" + echo "============================================================================================" + exit 3 +fi + +travis encrypt-file .env --add --force --org +git add .env.enc +git add .travis.yml +echo ".env.enc created and added to commit" From 9ffc7c88d05218ffa1340a875c61a5aa5e3d909d Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Mon, 17 Dec 2018 10:52:31 +0000 Subject: [PATCH 17/20] update travis config --- .env.enc | Bin 1888 -> 1888 bytes .travis.yml | 2 -- 2 files changed, 2 deletions(-) diff --git a/.env.enc b/.env.enc index 4424eafaf51a9c82bd56511360d5c14657dcd51c..32b3cc5c0942d3e8e5067689e422f90b78adcd06 100644 GIT binary patch literal 1888 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 diff --git a/.travis.yml b/.travis.yml index e3a8761..914e305 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,5 +15,3 @@ script: before_install: - openssl aes-256-cbc -K $encrypted_eeb74e8d35d1_key -iv $encrypted_eeb74e8d35d1_iv -in .env.enc -out .env -d -- openssl aes-256-cbc -K $encrypted_fb307c69bf51_key -iv $encrypted_fb307c69bf51_iv - -in .env.enc -out .env -d From 063586735cc00d7eeb7dbdf6ed3bf4d64819c38c Mon Sep 17 00:00:00 2001 From: Joshua Lieberman Date: Tue, 18 Dec 2018 14:21:15 +0000 Subject: [PATCH 18/20] adding regex to get rid of encryption information when sharing between multiple travis configs --- .env.enc | Bin 1888 -> 1888 bytes .gitignore | 3 ++- scripts/encrypt.sh | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.env.enc b/.env.enc index 32b3cc5c0942d3e8e5067689e422f90b78adcd06..cadfe705914a49f96738854b83ca42988e4172cd 100644 GIT binary patch literal 1888 zcmV-m2cP)XBeyan;2ueM!sl1GifQxB1^57Zc?8_|UdWJeg}x3(I`eI>my0axerYZq z|4U@?&H#wjzwrp;(pUuNk&joeq|1Ox(!Q1Y(NPI6bR%u@W?v$f93W)RW=_w=WcM4;%z$lt~pBZ*K; zFKR#9xIOMWN)Q9ChH8Qj?S1NfLWUM>|=%(OC(1nwP$sST#=PR z0af2mn*$Sr58Gq@Owv3CG#-O_buiIE=-bm1lb&3RsB-v6IyzC~N-ixHQ3&v|^(lcm zJXBxXaZ!`Pm_kiRK(?b&r)7hzRL}hrnOBuzwOM2-e?#nKtA1t&`V%IpPUSu(Im0r} zXwjv)4AO~+YZ99Irlo?hQd8AB_kU=L2Fc6YedvdDf z7%#299~7O0BWhCYR2=1-)jaVHl;Xjh)Fjr2R&w&Y%^3;Z-w(NwP3|d4>?jg%6dr;D z(HoA>n9EX)N0Q zlnL)pz*+J0KAAK$-$>fYsZ~G2N@O;Mrp;%>V-w&NoE9{>uR=!at<259WS)>qybN-$`NgC2_>q_ z2l11O8GvNUT&uL5cXvmh-jk`)`#anH9d1pk<`JPPk{UZCVH#p#2oB#oObrqWQzmJV zDkr7=p0f5FVKX5kLXc9j5Hh#|{LaMBt7Bd@&PB+*4|}+;6ma<(Il3(rwgllX(5DRk z&1+XU6@ro-)OG&2vz$x<{L|-z$4t5Q^uarRopVd>tvT>HLgMhDYC?r88u)`Q+Q);| zcb~obp_%n7iWZJK4fHTMF8M;-oNaTRC zaA`_!2-VIlI*safb5=srHA`v{dQh}m=GJBrGgX#$O%4;zYDhC<=8QT}!8qPodD16L zjLN-z6Rd+(fomyYQdD)|WJD@(z}!5wN^NVb8gB7km5FPZNyvV@R9X2nwpEeVK;=2; zx@}H8BaFw!^U5V2Hx~D7IRj}w@Car?n~DW>>s|d}1*LBU(rS*}KF>SMAf{J;4u%)m zvH$YRo|f!CtH)9l1TncSY)8lLI1fLj3dBiLq~dT1Tf zs}mqnTF&JgJz8f=+5VYhvcLi>Sxlwv zch~^*8wvkTgahb$YX59u2qP4uMI&Zl6U#k9FMy?({=_$e^m4mh zf^Yltdqi0Kuhaz(snYYo2JXPyz5&ml!U&!^N!U%CWJ&OWk8JIzl&WdZqydU)3e~6B zk{8?DD6l96c_{-~v+`>3& zAN8CAODPJVStBy>GHw!W<04xBBC>_nF}~8w8oX`H{s%=wV?*D8^Z}%d+RlWO2aB%y zS#5MPK#eR|?S5^!j;D=Z@n<~R{%e6kbiv;PH$;I~|JHK!r6O$IgZI+wkl(uRINAUA z3xHxTuh=FBY4;k0O0L8vNE_DzVo`2~g@Y04PBuD2oC{NHE{H>Jg_2nJxyit=y(ucW zZ+*s<1LE+>4@JzW>WR|~xG3Kws-iN?V>JOb@Zy8Afk=WMC#NBQZ>7oww<%vN!6{A! zZ%BuYucPMp!|T?Ohm1-sX4btYD>Nm8ireWpZiI2w5~&U~yXqlN7sG=P^yY)ZS2#rq zoUr)WXLn2jqAfQgBT~f!1bjmY-07g!;6hN<6T=KGIbJavdte4sGbL$Rb`lVKfM1PF a62qQAtVzzVAZ4(Tk0+jcV0;PCE$NXv-=|Ih literal 1888 zcmV-m2cP)4@Ly&m-Bl~+w9rmmjIHFOuT#|-=?9}(AwHP~UY{H79e?_9YpQ26jit_6 zkn-E38VY6=Mue=k`evzbS2=ZG7I~5)*wtYhqouZuAArXgxo{7kn)(Skw&fAMx(v=%=p1*_q0u1)80PG zCtVNEtaKa`<1e8~aV+#%#r&ZGFm<-cq1@2Gxr^46Sy^+ncG>jwl&!+S;SJ5hmfQJf zwUvnG?zSs3AO^ru9~;SDiQoiSy!yjevfKj_tt9^`1|~kKW-UGZ_nRjZ7@APw&Hhim zeM13`oM`|)8yG&&T=Fz^;Xq>Y{jGg}!Ug!4T^4hP=&{MUB;pBmSwNEJ1r57>+Gq28 zxqP>fa^L++CFtj3buDwmMtRto=rbu@G-%Yo22y~Lf$CrT>}2N~@Py4_6tdMefza*H ztOrMM$@GSkTed!-F5+^02y7A#&BKl7>pFJ8$%Zj%izm6K1f+ca=*vYrlR!SRcU}D^ zl*{imV1s!9UG)JdVhLV(NK)A{n?Br<(_ANJ>&_l8t_O>IbTb9oxhmg5O+S4DlJIxXO9kj=iR%jFaA zArMO1dkdnwV-QzI>u*zd_Yc7jA8=3`>$g|emREd8vLL~M$V{cNk!xkC_&7q<)WEsX)CLM_hSqp9C}vgRJX%@ z9IEaA%0SIZl1-Ar7DOD~MO$1zMjSJELI#t;NHFYL5Uki1(3C^NL$fl6P&cxzoH!^! zGtW1YHL{k4bBMUBmrSHIve=TTX(u=#l6c0PsuxEqthW=twa#6oKN(be-bplYWC``| z$+@J4#s06?c~uIXmFJUsY;->AMT0z(2hRva7=6osmx2v{Fxjw^QG&|%zgBO9BiIW{ z+8lpo`uEPZN)2Tf8KBjtFcCJMU&lA1q*{Fe2@2J|dJTp~yPEYuyj|EQy7eD3F!2$# zEj*}Gv!o}5$=+-31-YR!e5~$Lnhy6dRL6KYa+$}oM5`{k~6fk-ye@KUC&T;NZ#iG9Qej^A{64O#*guSa5R!h@9%NoFc46yIUc z7-l5Vnz!&VcM5xt44vJvPl=3M!v%SRjlcX(9d{(lV+}_|_ope!Y@OP6sgB!e((3@+ zwO;)0nV61Oz%r*B)H)EHFjNSc&-kjL9_xPTHMRbQ+@1P-N2IQe2#nIqCD(7gsw{mH((e6WOGf${OugcDr9|vS8x498*q|h%k9HACOE*C$OCytpGzNx2AkPd!&AD{CSmREWUB4XQpJi0y zp$zb%lM|1Ih<*N~iaEDte>fFUX-SQEr_pOC*&|Ma-bW7=Ar#@jH^uJ1eMh^+wMai* z`=m!+rD7%{8VJmi_!H#dND^i-_SFh66gloru!_2_{aR0jgIqtv1`Ps3&J6?qFl{sZg85Hwb>SY zy8?%X2cYt!6gxK-u@zJN?82IFXZR~j9>A*y8rv4|2^+2q>@@C708_r2dRWXP4E8*9cMzxGK^dD^E2Qb~?aa ztn>|hL8qq2RLN9M(=!F7n+WSq)=OiT3x0_kIycBcnO%-t<{NrtVxjfgAJiUqdz#4D zs3!q7Fysw%^-q}U1Vsb%TP#?}II_AiZX5UGvBmHYzljTzFtMzoiPbyngh~Nd>|%LC z4KOTebz<$6Lr0N%^Vwi82Stu(?wHW)cJ(7}i(j>2u&mRlrP|lnPG_*LQ!aN}$v*y!lDH&xomaLC-_JD+n~#xDCiGf{@NK9D zrs%Yb+eRG Date: Tue, 18 Dec 2018 15:00:05 +0000 Subject: [PATCH 19/20] only require travis encryption for maintainers --- .env.enc | Bin 1888 -> 1888 bytes scripts/encrypt.sh | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.env.enc b/.env.enc index cadfe705914a49f96738854b83ca42988e4172cd..732b530e64dcea15ec734582c8411460c85b2b88 100644 GIT binary patch literal 1888 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 a62qQAtVzzVAZ4(Tk0+jcV0;PCE$NXv-=|Ih diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 62757ae..4daa4c8 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -1,11 +1,11 @@ #!/bin/bash echo "Encrypting .env file for Travis..." -# confirm that user has access to forensic architecture datasheet -# if [ ! -z "$(travis repos | grep "forensic-architecture/datasheet-server")" ] -# echo "No travis encrypt possible, skipping this step." -# exit 0 -# fi +# confirm that the user has the core repo as origin, and is therefore a maintainer +if [ -z `git config --get remote.origin.url | grep "forensic-architecture/datasheet-server"` ]; then + echo "Travis encryption not required for satellite contributors, continuing.." + exit 0 +fi # confirm travis is installed if [ ! hash travis 2>/dev/null ]; then From e57334867936661aadaef41a4c0306b990df5934 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Tue, 18 Dec 2018 15:54:44 +0000 Subject: [PATCH 20/20] refactor travis encrypt to manual process before push --- package.json | 6 +++--- scripts/check-branch.sh | 11 +++++++++++ scripts/encrypt.sh | 8 ++++---- 3 files changed, 18 insertions(+), 7 deletions(-) create mode 100755 scripts/check-branch.sh diff --git a/package.json b/package.json index 7779af5..5caea99 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "start": "node dist", "lint": "standard \"src/**/*.js\" \"test/**/*.js\"", "test-watch": "ava --watch", - "test": "ava --verbose" + "test": "ava --verbose", + "travis-encrypt": "./scripts/encrypt.sh" }, "husky": { "hooks": { - "pre-commit": "sh ./scripts/encrypt.sh", - "pre-push": "yarn lint && yarn test" + "pre-push": "./scripts/check-branch.sh && yarn lint && yarn test" } }, "repository": { diff --git a/scripts/check-branch.sh b/scripts/check-branch.sh new file mode 100755 index 0000000..5d0983b --- /dev/null +++ b/scripts/check-branch.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +ENCRYPT_MESSAGE="\nThe .env.enc file has not changed its contents from the version on origin/develop.\nTo ensure that tests pass in Travis, you need to encrypt the contents of .env before pushing to the remote, so that the Travis server can use your service account credentials.\nEnsure that the Travis CLI is installed on your local, run\n\n\tnpm run travis-encrypt\n\nand then push to the remote again.\nIf you don't care whether your build passes on Travis, you can run:\n\n\tgit push --no-verify\n\nand bypass this check.\n\n" + +# check whether .env.enc has changed +if [ -z "`git diff origin/develop -- .env.enc`" ]; then + echo $ENCRYPT_MESSAGE + exit 1 +fi + + diff --git a/scripts/encrypt.sh b/scripts/encrypt.sh index 4daa4c8..1609b0b 100644 --- a/scripts/encrypt.sh +++ b/scripts/encrypt.sh @@ -2,10 +2,10 @@ echo "Encrypting .env file for Travis..." # confirm that the user has the core repo as origin, and is therefore a maintainer -if [ -z `git config --get remote.origin.url | grep "forensic-architecture/datasheet-server"` ]; then - echo "Travis encryption not required for satellite contributors, continuing.." - exit 0 -fi +# if [ -z `git config --get remote.origin.url | grep "forensic-architecture/datasheet-server"` ]; then +# echo "Travis encryption not required for satellite contributors, continuing.." +# exit 0 +# fi # confirm travis is installed if [ ! hash travis 2>/dev/null ]; then