From 3466db0aae8aba8d4410ef7cf6aa6e0c1b8c2c83 Mon Sep 17 00:00:00 2001 From: Hayden Faulds Date: Mon, 27 Nov 2017 17:09:51 +0000 Subject: [PATCH] add acceptance tests --- services/web/config/settings.defaults.coffee | 2 +- .../coffee/ProjectStructureTests.coffee | 200 ++++++++++++++++++ .../coffee/helpers/MockDocUpdaterApi.coffee | 29 +++ .../coffee/helpers/MockDocstoreApi.coffee | 1 + .../coffee/helpers/MockFileStoreApi.coffee | 20 ++ .../helpers/MockProjectHistoryApi.coffee | 18 ++ .../acceptance/coffee/helpers/User.coffee | 9 +- services/web/test/acceptance/files/1pixel.png | Bin 0 -> 3690 bytes services/web/test/acceptance/files/2pixel.png | Bin 0 -> 3694 bytes .../test/acceptance/files/test_project.zip | Bin 0 -> 3820 bytes .../web/test/acceptance/scripts/full-test.sh | 2 +- 11 files changed, 276 insertions(+), 5 deletions(-) create mode 100644 services/web/test/acceptance/coffee/ProjectStructureTests.coffee create mode 100644 services/web/test/acceptance/coffee/helpers/MockFileStoreApi.coffee create mode 100644 services/web/test/acceptance/coffee/helpers/MockProjectHistoryApi.coffee create mode 100644 services/web/test/acceptance/files/1pixel.png create mode 100644 services/web/test/acceptance/files/2pixel.png create mode 100644 services/web/test/acceptance/files/test_project.zip diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index 98d1c9e031..65a8bf1e91 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -111,7 +111,7 @@ module.exports = settings = trackchanges: url : "http://localhost:3015" project_history: - enabled: false + enabled: process.env.PROJECT_HISTORY_ENABLED == 'true' or false url : "http://localhost:3054" docstore: url : "http://#{process.env['DOCSTORE_HOST'] or 'localhost'}:3016" diff --git a/services/web/test/acceptance/coffee/ProjectStructureTests.coffee b/services/web/test/acceptance/coffee/ProjectStructureTests.coffee new file mode 100644 index 0000000000..c7f429ac40 --- /dev/null +++ b/services/web/test/acceptance/coffee/ProjectStructureTests.coffee @@ -0,0 +1,200 @@ +async = require("async") +expect = require("chai").expect +Path = require "path" +fs = require "fs" +_ = require "underscore" + +ProjectGetter = require "../../../app/js/Features/Project/ProjectGetter.js" + +MockDocUpdaterApi = require './helpers/MockDocUpdaterApi' +MockFileStoreApi = require './helpers/MockFileStoreApi' +MockProjectHistoryApi = require './helpers/MockProjectHistoryApi' +request = require "./helpers/request" +User = require "./helpers/User" + +describe "ProjectStructureChanges", -> + before (done) -> + @owner = new User() + @owner.login done + + describe "creating a project from the example template", -> + before (done) -> + MockDocUpdaterApi.clearProjectStructureUpdates() + @owner.createProject "project", {template: "example"}, (error, project_id) => + throw error if error? + @example_project_id = project_id + done() + + it "should version creating a doc", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates + expect(updates.length).to.equal(2) + _.each updates, (update) => + expect(update.userId).to.equal(@owner._id) + expect(update.docLines).to.be.a('string') + expect(_.where(updates, pathname: "/main.tex").length).to.equal 1 + expect(_.where(updates, pathname: "/references.bib").length).to.equal 1 + + it "should version creating a file", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/universe.jpg") + expect(update.url).to.be.a('string'); + + describe "duplicating a project", -> + before (done) -> + MockDocUpdaterApi.clearProjectStructureUpdates() + @owner.request.post { + uri: "/Project/#{@example_project_id}/clone", + json: + projectName: 'new.tex' + }, (error, res, body) => + throw error if error? + if res.statusCode < 200 || res.statusCode >= 300 + throw new Error("failed to add doc #{res.statusCode}") + @dup_project_id = body.project_id + done() + + it "should version the dosc created", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@dup_project_id).docUpdates + expect(updates.length).to.equal(2) + _.each updates, (update) => + expect(update.userId).to.equal(@owner._id) + expect(update.docLines).to.be.a('string') + expect(_.where(updates, pathname: "/main.tex").length).to.equal(1) + expect(_.where(updates, pathname: "/references.bib").length).to.equal(1) + + it "should version the files created", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@dup_project_id).fileUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/universe.jpg") + expect(update.url).to.be.a('string'); + + describe "adding a doc", -> + before (done) -> + MockDocUpdaterApi.clearProjectStructureUpdates() + + ProjectGetter.getProject @example_project_id, (error, projects) => + throw error if error? + @owner.request.post { + uri: "project/#{@example_project_id}/doc", + json: + name: 'new.tex' + parent_folder_id: projects[0].rootFolder[0]._id + }, (error, res, body) => + throw error if error? + if res.statusCode < 200 || res.statusCode >= 300 + throw new Error("failed to add doc #{res.statusCode}") + done() + + it "should version the doc added", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/new.tex") + expect(update.docLines).to.be.a('string'); + + describe "uploading a project", -> + before (done) -> + MockDocUpdaterApi.clearProjectStructureUpdates() + + zip_file = fs.createReadStream(Path.resolve(__dirname + '/../files/test_project.zip')) + + req = @owner.request.post { + uri: "project/new/upload", + formData: + qqfile: zip_file + }, (error, res, body) => + throw error if error? + if res.statusCode < 200 || res.statusCode >= 300 + throw new Error("failed to upload project #{res.statusCode}") + @uploaded_project_id = JSON.parse(body).project_id + done() + + it "should version the dosc created", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@uploaded_project_id).docUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/main.tex") + expect(update.docLines).to.equal("Test") + + it "should version the files created", -> + updates = MockDocUpdaterApi.getProjectStructureUpdates(@uploaded_project_id).fileUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/1pixel.png") + expect(update.url).to.be.a('string'); + + describe "uploading a file", -> + before (done) -> + MockDocUpdaterApi.clearProjectStructureUpdates() + ProjectGetter.getProject @example_project_id, (error, projects) => + throw error if error? + @root_folder_id = projects[0].rootFolder[0]._id.toString() + done() + + it "should version a newly uploaded file", (done) -> + image_file = fs.createReadStream(Path.resolve(__dirname + '/../files/1pixel.png')) + + req = @owner.request.post { + uri: "project/#{@example_project_id}/upload", + qs: + folder_id: @root_folder_id + formData: + qqfile: + value: image_file + options: + filename: '1pixel.png', + contentType: 'image/png' + }, (error, res, body) => + throw error if error? + if res.statusCode < 200 || res.statusCode >= 300 + throw new Error("failed to upload file #{res.statusCode}") + + updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/1pixel.png") + expect(update.url).to.be.a('string'); + @original_file_url = update.url + + done() + + it "should version a replacement file", (done) -> + image_file = fs.createReadStream(Path.resolve(__dirname + '/../files/2pixel.png')) + + req = @owner.request.post { + uri: "project/#{@example_project_id}/upload", + qs: + folder_id: @root_folder_id + formData: + qqfile: + value: image_file + options: + filename: '1pixel.png', + contentType: 'image/png' + }, (error, res, body) => + throw error if error? + if res.statusCode < 200 || res.statusCode >= 300 + throw new Error("failed to upload file #{res.statusCode}") + + updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates + expect(updates.length).to.equal(1) + update = updates[0] + expect(update.userId).to.equal(@owner._id) + expect(update.pathname).to.equal("/1pixel.png") + expect(update.url).to.be.a('string'); + + done() + + describe "tpds", -> + it "should version add a doc" + it "should version add a new file" + it "should version replacing a file" diff --git a/services/web/test/acceptance/coffee/helpers/MockDocUpdaterApi.coffee b/services/web/test/acceptance/coffee/helpers/MockDocUpdaterApi.coffee index aefcd4513a..2147ac2691 100644 --- a/services/web/test/acceptance/coffee/helpers/MockDocUpdaterApi.coffee +++ b/services/web/test/acceptance/coffee/helpers/MockDocUpdaterApi.coffee @@ -1,11 +1,40 @@ express = require("express") app = express() +bodyParser = require "body-parser" +jsonParser = bodyParser.json() module.exports = MockDocUpdaterApi = + project_structures_updates: {} + + clearProjectStructureUpdates: () -> + @project_structures_updates = {} + + getProjectStructureUpdates: (project_id) -> + @project_structures_updates[project_id] + + addProjectStructureUpdates: (project_id, userId, docUpdates, fileUpdates) -> + @project_structures_updates[project_id] ||= { + docUpdates: [] + fileUpdates: [] + } + for update in docUpdates + update.userId = userId + @project_structures_updates[project_id].docUpdates.push(update) + + for update in fileUpdates + update.userId = userId + @project_structures_updates[project_id].fileUpdates.push(update) + run: () -> app.post "/project/:project_id/flush", (req, res, next) => res.sendStatus 200 + app.post "/project/:project_id", jsonParser, (req, res, next) => + project_id = req.params.project_id + {userId, docUpdates, fileUpdates} = req.body + @addProjectStructureUpdates(project_id, userId, docUpdates, fileUpdates) + res.sendStatus 200 + app.listen 3003, (error) -> throw error if error? .on "error", (error) -> diff --git a/services/web/test/acceptance/coffee/helpers/MockDocstoreApi.coffee b/services/web/test/acceptance/coffee/helpers/MockDocstoreApi.coffee index 2133d40b9f..c5b003ac75 100644 --- a/services/web/test/acceptance/coffee/helpers/MockDocstoreApi.coffee +++ b/services/web/test/acceptance/coffee/helpers/MockDocstoreApi.coffee @@ -13,6 +13,7 @@ module.exports = MockDocStoreApi = @docs[project_id][doc_id] = {lines, version, ranges} @docs[project_id][doc_id].rev ?= 0 @docs[project_id][doc_id].rev += 1 + @docs[project_id][doc_id]._id = doc_id res.json { modified: true rev: @docs[project_id][doc_id].rev diff --git a/services/web/test/acceptance/coffee/helpers/MockFileStoreApi.coffee b/services/web/test/acceptance/coffee/helpers/MockFileStoreApi.coffee new file mode 100644 index 0000000000..f3022302f4 --- /dev/null +++ b/services/web/test/acceptance/coffee/helpers/MockFileStoreApi.coffee @@ -0,0 +1,20 @@ +express = require("express") +app = express() + +module.exports = MockFileStoreApi = + files: {} + + run: () -> + app.post "/project/:project_id/file/:file_id", (req, res, next) => + req.on 'data', -> + + req.on 'end', -> + res.send 200 + + app.listen 3009, (error) -> + throw error if error? + .on "error", (error) -> + console.error "error starting MockFileStoreApi:", error.message + process.exit(1) + +MockFileStoreApi.run() diff --git a/services/web/test/acceptance/coffee/helpers/MockProjectHistoryApi.coffee b/services/web/test/acceptance/coffee/helpers/MockProjectHistoryApi.coffee new file mode 100644 index 0000000000..9027e22468 --- /dev/null +++ b/services/web/test/acceptance/coffee/helpers/MockProjectHistoryApi.coffee @@ -0,0 +1,18 @@ +express = require("express") +app = express() + +module.exports = MockProjectHistoryApi = + docs: {} + + run: () -> + app.post "/project", (req, res, next) => + res.json project: id: 1 + + app.listen 3054, (error) -> + throw error if error? + .on "error", (error) -> + console.error "error starting MockProjectHistoryApi:", error.message + process.exit(1) + + +MockProjectHistoryApi.run() diff --git a/services/web/test/acceptance/coffee/helpers/User.coffee b/services/web/test/acceptance/coffee/helpers/User.coffee index 6cd7edd7d4..ad728fb263 100644 --- a/services/web/test/acceptance/coffee/helpers/User.coffee +++ b/services/web/test/acceptance/coffee/helpers/User.coffee @@ -99,11 +99,14 @@ class User getProject: (project_id, callback = (error, project)->) -> db.projects.findOne {_id: ObjectId(project_id.toString())}, callback - createProject: (name, callback = (error, project_id) ->) -> + createProject: (name, options, callback = (error, oroject_id) ->) -> + if typeof options == "function" + callback = options + options = {} + @request.post { url: "/project/new", - json: - projectName: name + json: Object.assign({projectName: name}, options) }, (error, response, body) -> return callback(error) if error? if !body?.project_id? diff --git a/services/web/test/acceptance/files/1pixel.png b/services/web/test/acceptance/files/1pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..a97e79570bd0b360a61a563aa899ef747c985654 GIT binary patch literal 3690 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 literal 0 HcmV?d00001 diff --git a/services/web/test/acceptance/files/2pixel.png b/services/web/test/acceptance/files/2pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..dea591ec2490b22ecfce64453f367f8bf7e5ea07 GIT binary patch literal 3694 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 literal 0 HcmV?d00001 diff --git a/services/web/test/acceptance/scripts/full-test.sh b/services/web/test/acceptance/scripts/full-test.sh index ca10c32a0a..9351df81e3 100755 --- a/services/web/test/acceptance/scripts/full-test.sh +++ b/services/web/test/acceptance/scripts/full-test.sh @@ -3,7 +3,7 @@ # If you're running on OS X, you probably need to rebuild # some dependencies in the docker container, before it will start. # -# npm rebuild --update-binary +#npm rebuild --update-binary echo ">> Starting server..."