mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
Revert "Revert "Upgrade to mocha 5.0.1""
This commit is contained in:
parent
5ab65a5707
commit
f11f208772
20 changed files with 233 additions and 117 deletions
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
set -e;
|
||||
MOCHA="node_modules/.bin/mocha --recursive --reporter spec --timeout 15000"
|
||||
MOCHA="node_modules/.bin/mocha --exit --recursive --reporter spec --timeout 15000"
|
||||
$MOCHA "$@"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
set -e;
|
||||
|
||||
MOCHA="node_modules/.bin/mocha --recursive --reporter spec"
|
||||
MOCHA="node_modules/.bin/mocha --exit --recursive --reporter spec"
|
||||
|
||||
$MOCHA "$@" test/unit/js
|
||||
|
||||
|
|
133
services/web/npm-shrinkwrap.json
generated
133
services/web/npm-shrinkwrap.json
generated
|
@ -1160,6 +1160,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"browser-stdout": {
|
||||
"version": "1.3.0",
|
||||
"from": "browser-stdout@1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz"
|
||||
},
|
||||
"browserify": {
|
||||
"version": "14.5.0",
|
||||
"from": "browserify@>=14.5.0 <15.0.0",
|
||||
|
@ -5081,7 +5086,59 @@
|
|||
"version": "0.9.0",
|
||||
"from": "grunt-mocha-test@0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.9.0.tgz",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.0.0",
|
||||
"from": "commander@2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "3.2.3",
|
||||
"from": "glob@3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "2.0.3",
|
||||
"from": "graceful-fs@>=2.0.0 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"jade": {
|
||||
"version": "0.26.3",
|
||||
"from": "jade@0.26.3",
|
||||
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "0.6.1",
|
||||
"from": "commander@0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.3.0",
|
||||
"from": "mkdirp@0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.3.5",
|
||||
"from": "mkdirp@0.3.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mocha": {
|
||||
"version": "1.17.1",
|
||||
"from": "mocha@>=1.17.1 <1.18.0",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"grunt-newer": {
|
||||
"version": "1.3.0",
|
||||
|
@ -5261,6 +5318,11 @@
|
|||
"from": "hawk@>=6.0.2 <6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz"
|
||||
},
|
||||
"he": {
|
||||
"version": "1.1.1",
|
||||
"from": "he@1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz"
|
||||
},
|
||||
"heapdump": {
|
||||
"version": "0.3.9",
|
||||
"from": "heapdump@>=0.3.7 <0.4.0",
|
||||
|
@ -7998,46 +8060,49 @@
|
|||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
|
||||
},
|
||||
"mocha": {
|
||||
"version": "1.17.1",
|
||||
"from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz",
|
||||
"version": "5.0.1",
|
||||
"from": "mocha@5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.1.tgz",
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.0.0",
|
||||
"from": "commander@2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz"
|
||||
"version": "2.11.0",
|
||||
"from": "commander@2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz"
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"from": "debug@3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz"
|
||||
},
|
||||
"diff": {
|
||||
"version": "3.3.1",
|
||||
"from": "diff@3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz"
|
||||
},
|
||||
"glob": {
|
||||
"version": "3.2.3",
|
||||
"from": "glob@3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz"
|
||||
"version": "7.1.2",
|
||||
"from": "glob@7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz"
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "2.0.3",
|
||||
"from": "graceful-fs@>=2.0.0 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
|
||||
"growl": {
|
||||
"version": "1.10.3",
|
||||
"from": "growl@1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz"
|
||||
},
|
||||
"jade": {
|
||||
"version": "0.26.3",
|
||||
"from": "jade@0.26.3",
|
||||
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "0.6.1",
|
||||
"from": "commander@0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz"
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.3.0",
|
||||
"from": "mkdirp@0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz"
|
||||
}
|
||||
}
|
||||
"has-flag": {
|
||||
"version": "2.0.0",
|
||||
"from": "has-flag@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz"
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.3.5",
|
||||
"from": "mkdirp@0.3.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"from": "minimatch@>=3.0.4 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "4.4.0",
|
||||
"from": "supports-color@4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
"method-override": "^2.3.3",
|
||||
"metrics-sharelatex": "git+https://github.com/sharelatex/metrics-sharelatex.git#v1.7.1",
|
||||
"mimelib": "0.2.14",
|
||||
"mocha": "1.17.1",
|
||||
"mocha": "^5.0.1",
|
||||
"mongojs": "2.4.0",
|
||||
"mongoose": "4.11.4",
|
||||
"multer": "^0.1.8",
|
||||
|
|
|
@ -34,6 +34,7 @@ describe "ProjectStructureMongoLock", ->
|
|||
namespace = ProjectEntityMongoUpdateHandler.LOCK_NAMESPACE
|
||||
@lock_key = "lock:web:#{namespace}:#{project._id}"
|
||||
LockManager._getLock @lock_key, namespace, done
|
||||
return
|
||||
|
||||
after (done) ->
|
||||
LockManager._releaseLock @lock_key, done
|
||||
|
|
|
@ -16,6 +16,12 @@ request = require "./helpers/request"
|
|||
User = require "./helpers/User"
|
||||
|
||||
describe "ProjectStructureChanges", ->
|
||||
example_project_id = null
|
||||
example_doc_id = null
|
||||
example_file_id = null
|
||||
example_folder_id_1 = null
|
||||
example_folder_id_2 = null
|
||||
|
||||
before (done) ->
|
||||
@owner = new User()
|
||||
@owner.login done
|
||||
|
@ -25,11 +31,11 @@ describe "ProjectStructureChanges", ->
|
|||
MockDocUpdaterApi.clearProjectStructureUpdates()
|
||||
@owner.createProject "example-project", {template: "example"}, (error, project_id) =>
|
||||
throw error if error?
|
||||
@example_project_id = project_id
|
||||
example_project_id = project_id
|
||||
done()
|
||||
|
||||
it "should version creating a doc", ->
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).docUpdates
|
||||
expect(updates.length).to.equal(2)
|
||||
_.each updates, (update) =>
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -38,7 +44,7 @@ describe "ProjectStructureChanges", ->
|
|||
expect(_.where(updates, pathname: "/references.bib").length).to.equal 1
|
||||
|
||||
it "should version creating a file", ->
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -48,8 +54,9 @@ describe "ProjectStructureChanges", ->
|
|||
describe "duplicating a project", ->
|
||||
before (done) ->
|
||||
MockDocUpdaterApi.clearProjectStructureUpdates()
|
||||
console.log(example_project_id)
|
||||
@owner.request.post {
|
||||
uri: "/Project/#{@example_project_id}/clone",
|
||||
uri: "/Project/#{example_project_id}/clone",
|
||||
json:
|
||||
projectName: 'new.tex'
|
||||
}, (error, res, body) =>
|
||||
|
@ -80,10 +87,10 @@ describe "ProjectStructureChanges", ->
|
|||
before (done) ->
|
||||
MockDocUpdaterApi.clearProjectStructureUpdates()
|
||||
|
||||
ProjectGetter.getProject @example_project_id, (error, project) =>
|
||||
ProjectGetter.getProject example_project_id, (error, project) =>
|
||||
throw error if error?
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/doc",
|
||||
uri: "project/#{example_project_id}/doc",
|
||||
json:
|
||||
name: 'new.tex'
|
||||
parent_folder_id: project.rootFolder[0]._id
|
||||
|
@ -91,11 +98,11 @@ describe "ProjectStructureChanges", ->
|
|||
throw error if error?
|
||||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to add doc #{res.statusCode}")
|
||||
@example_doc_id = body._id
|
||||
example_doc_id = body._id
|
||||
done()
|
||||
|
||||
it "should version the doc added", ->
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).docUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -137,7 +144,7 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
describe "uploading a file", ->
|
||||
before (done) ->
|
||||
ProjectGetter.getProject @example_project_id, (error, project) =>
|
||||
ProjectGetter.getProject example_project_id, (error, project) =>
|
||||
throw error if error?
|
||||
@root_folder_id = project.rootFolder[0]._id.toString()
|
||||
done()
|
||||
|
@ -149,7 +156,7 @@ describe "ProjectStructureChanges", ->
|
|||
image_file = fs.createReadStream(Path.resolve(__dirname + '/../files/1pixel.png'))
|
||||
|
||||
req = @owner.request.post {
|
||||
uri: "project/#{@example_project_id}/upload",
|
||||
uri: "project/#{example_project_id}/upload",
|
||||
qs:
|
||||
folder_id: @root_folder_id
|
||||
formData:
|
||||
|
@ -163,9 +170,9 @@ describe "ProjectStructureChanges", ->
|
|||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to upload file #{res.statusCode}")
|
||||
|
||||
@example_file_id = JSON.parse(body).entity_id
|
||||
example_file_id = JSON.parse(body).entity_id
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -179,7 +186,7 @@ describe "ProjectStructureChanges", ->
|
|||
image_file = fs.createReadStream(Path.resolve(__dirname + '/../files/2pixel.png'))
|
||||
|
||||
req = @owner.request.post {
|
||||
uri: "project/#{@example_project_id}/upload",
|
||||
uri: "project/#{example_project_id}/upload",
|
||||
qs:
|
||||
folder_id: @root_folder_id
|
||||
formData:
|
||||
|
@ -193,7 +200,7 @@ describe "ProjectStructureChanges", ->
|
|||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to upload file #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -205,12 +212,12 @@ describe "ProjectStructureChanges", ->
|
|||
describe "moving entities", ->
|
||||
before (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/folder",
|
||||
uri: "project/#{example_project_id}/folder",
|
||||
formData:
|
||||
name: 'foo'
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
@example_folder_id_1 = JSON.parse(body)._id
|
||||
example_folder_id_1 = JSON.parse(body)._id
|
||||
done()
|
||||
|
||||
beforeEach () ->
|
||||
|
@ -218,15 +225,15 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version moving a doc", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/Doc/#{@example_doc_id}/move",
|
||||
uri: "project/#{example_project_id}/Doc/#{example_doc_id}/move",
|
||||
json:
|
||||
folder_id: @example_folder_id_1
|
||||
folder_id: example_folder_id_1
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move doc #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).docUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -237,15 +244,15 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version moving a file", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/File/#{@example_file_id}/move",
|
||||
uri: "project/#{example_project_id}/File/#{example_file_id}/move",
|
||||
json:
|
||||
folder_id: @example_folder_id_1
|
||||
folder_id: example_folder_id_1
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move file #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -256,30 +263,30 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version moving a folder", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/folder",
|
||||
uri: "project/#{example_project_id}/folder",
|
||||
formData:
|
||||
name: 'bar'
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
@example_folder_id_2 = JSON.parse(body)._id
|
||||
example_folder_id_2 = JSON.parse(body)._id
|
||||
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/Folder/#{@example_folder_id_1}/move",
|
||||
uri: "project/#{example_project_id}/Folder/#{example_folder_id_1}/move",
|
||||
json:
|
||||
folder_id: @example_folder_id_2
|
||||
folder_id: example_folder_id_2
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move folder #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
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("/foo/new.tex")
|
||||
expect(update.newPathname).to.equal("/bar/foo/new.tex")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -294,7 +301,7 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version renaming a doc", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/Doc/#{@example_doc_id}/rename",
|
||||
uri: "project/#{example_project_id}/Doc/#{example_doc_id}/rename",
|
||||
json:
|
||||
name: 'new_renamed.tex'
|
||||
}, (error, res, body) =>
|
||||
|
@ -302,7 +309,7 @@ describe "ProjectStructureChanges", ->
|
|||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move doc #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).docUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -313,7 +320,7 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version renaming a file", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/File/#{@example_file_id}/rename",
|
||||
uri: "project/#{example_project_id}/File/#{example_file_id}/rename",
|
||||
json:
|
||||
name: '1pixel_renamed.png'
|
||||
}, (error, res, body) =>
|
||||
|
@ -321,7 +328,7 @@ describe "ProjectStructureChanges", ->
|
|||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move file #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -332,7 +339,7 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version renaming a folder", (done) ->
|
||||
@owner.request.post {
|
||||
uri: "project/#{@example_project_id}/Folder/#{@example_folder_id_1}/rename",
|
||||
uri: "project/#{example_project_id}/Folder/#{example_folder_id_1}/rename",
|
||||
json:
|
||||
name: 'foo_renamed'
|
||||
}, (error, res, body) =>
|
||||
|
@ -340,14 +347,14 @@ describe "ProjectStructureChanges", ->
|
|||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to move folder #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
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("/bar/foo/new_renamed.tex")
|
||||
expect(update.newPathname).to.equal("/bar/foo_renamed/new_renamed.tex")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
@ -362,20 +369,20 @@ describe "ProjectStructureChanges", ->
|
|||
|
||||
it "should version deleting a folder", (done) ->
|
||||
@owner.request.delete {
|
||||
uri: "project/#{@example_project_id}/Folder/#{@example_folder_id_2}",
|
||||
uri: "project/#{example_project_id}/Folder/#{example_folder_id_2}",
|
||||
}, (error, res, body) =>
|
||||
throw error if error?
|
||||
if res.statusCode < 200 || res.statusCode >= 300
|
||||
throw new Error("failed to delete folder #{res.statusCode}")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).docUpdates
|
||||
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("/bar/foo_renamed/new_renamed.tex")
|
||||
expect(update.newPathname).to.equal("")
|
||||
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(@example_project_id).fileUpdates
|
||||
updates = MockDocUpdaterApi.getProjectStructureUpdates(example_project_id).fileUpdates
|
||||
expect(updates.length).to.equal(1)
|
||||
update = updates[0]
|
||||
expect(update.userId).to.equal(@owner._id)
|
||||
|
|
|
@ -99,6 +99,7 @@ describe "AuthenticationController", ->
|
|||
@req.session.save = sinon.stub().callsArgWith(0, null)
|
||||
@req.sessionStore = {generate: sinon.stub()}
|
||||
@passport.authenticate.callsArgWith(1, null, @user, @info)
|
||||
@err = new Error('woops')
|
||||
|
||||
it 'should call passport.authenticate', () ->
|
||||
@AuthenticationController.passportLogin @req, @res, @next
|
||||
|
@ -107,7 +108,6 @@ describe "AuthenticationController", ->
|
|||
describe 'when authenticate produces an error', ->
|
||||
|
||||
beforeEach ->
|
||||
@err = new Error('woops')
|
||||
@passport.authenticate.callsArgWith(1, @err)
|
||||
|
||||
it 'should return next with an error', () ->
|
||||
|
|
|
@ -108,6 +108,7 @@ describe "CollaboratorsInviteController", ->
|
|||
}
|
||||
@LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true)
|
||||
@CollaboratorsInviteHandler.inviteToProject = sinon.stub().callsArgWith(4, null, @invite)
|
||||
@err = new Error('woops')
|
||||
@callback = sinon.stub()
|
||||
@next = sinon.stub()
|
||||
|
||||
|
@ -163,7 +164,6 @@ describe "CollaboratorsInviteController", ->
|
|||
beforeEach ->
|
||||
@CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true)
|
||||
@CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true)
|
||||
@err = new Error('woops')
|
||||
@LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, @err)
|
||||
@CollaboratorsInviteController.inviteToProject @req, @res, @next
|
||||
|
||||
|
|
|
@ -74,11 +74,10 @@ describe "FileStoreController", ->
|
|||
describe "with a '#{extension}' file extension", ->
|
||||
|
||||
beforeEach ->
|
||||
@user_agent = 'A generic browser'
|
||||
@file.name = "bad#{extension}"
|
||||
@req.get = (key) =>
|
||||
if key == 'User-Agent'
|
||||
@user_agent
|
||||
return 'A generic browser'
|
||||
|
||||
describe "from a non-ios browser", ->
|
||||
|
||||
|
@ -91,7 +90,9 @@ describe "FileStoreController", ->
|
|||
describe "from an iPhone", ->
|
||||
|
||||
beforeEach ->
|
||||
@user_agent = "An iPhone browser"
|
||||
@req.get = (key) =>
|
||||
if key == 'User-Agent'
|
||||
return "An iPhone browser"
|
||||
|
||||
it "should set Content-Type to 'text/plain'", (done) ->
|
||||
@stream.pipe = (des) =>
|
||||
|
@ -102,7 +103,9 @@ describe "FileStoreController", ->
|
|||
describe "from an iPad", ->
|
||||
|
||||
beforeEach ->
|
||||
@user_agent = "An iPad browser"
|
||||
@req.get = (key) =>
|
||||
if key == 'User-Agent'
|
||||
return "An iPad browser"
|
||||
|
||||
it "should set Content-Type to 'text/plain'", (done) ->
|
||||
@stream.pipe = (des) =>
|
||||
|
|
|
@ -11,7 +11,7 @@ describe "FileStoreHandler", ->
|
|||
@fs =
|
||||
createReadStream : sinon.stub()
|
||||
lstat: sinon.stub().callsArgWith(1, null, {
|
||||
isFile:=> @isSafeOnFileSystem
|
||||
isFile:=> true
|
||||
isDirectory:-> return false
|
||||
})
|
||||
@writeStream =
|
||||
|
@ -35,7 +35,6 @@ describe "FileStoreHandler", ->
|
|||
describe "uploadFileFromDisk", ->
|
||||
beforeEach ->
|
||||
@request.returns(@writeStream)
|
||||
@isSafeOnFileSystem = true
|
||||
|
||||
it "should create read stream", (done)->
|
||||
@fs.createReadStream.returns
|
||||
|
@ -91,8 +90,13 @@ describe "FileStoreHandler", ->
|
|||
done()
|
||||
|
||||
describe "symlink", ->
|
||||
beforeEach ->
|
||||
@fs.lstat = sinon.stub().callsArgWith(1, null, {
|
||||
isFile:=> false
|
||||
isDirectory:-> return false
|
||||
})
|
||||
|
||||
it "should not read file if it is symlink", (done)->
|
||||
@isSafeOnFileSystem = false
|
||||
@handler.uploadFileFromDisk @project_id, @file_id, @fsPath, =>
|
||||
@fs.createReadStream.called.should.equal false
|
||||
done()
|
||||
|
|
|
@ -296,7 +296,7 @@ describe 'ProjectLocator', ->
|
|||
|
||||
it "should not crash with a null", (done)->
|
||||
path = "/other.tex"
|
||||
@locator.findElementByPath {project_id: @project._id, path}, (err, element)->
|
||||
@locator.findElementByPath {project_id: project._id, path}, (err, element)->
|
||||
expect(err).to.exist
|
||||
done()
|
||||
|
||||
|
|
|
@ -142,13 +142,15 @@ describe "ReferencesController", ->
|
|||
|
||||
describe 'index', ->
|
||||
|
||||
beforeEach ->
|
||||
@call = (callback) =>
|
||||
@controller.index @req, @res
|
||||
callback()
|
||||
|
||||
describe 'with docIds as an array and shouldBroadcast as false', ->
|
||||
|
||||
beforeEach ->
|
||||
@ReferencesHandler.index.callsArgWith(2, null, @fakeResponseData)
|
||||
@call = (callback) =>
|
||||
@controller.index @req, @res
|
||||
callback()
|
||||
|
||||
it 'should call ReferencesHandler.index', (done) ->
|
||||
@call () =>
|
||||
|
|
|
@ -78,19 +78,16 @@ describe "LimitationsManager", ->
|
|||
@callback.calledWith(null, @user.features.collaborators).should.equal true
|
||||
|
||||
describe "canAddXCollaborators", ->
|
||||
beforeEach ->
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager,
|
||||
"allowedNumberOfCollaboratorsInProject",
|
||||
(project_id, callback) => callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
|
||||
describe "when the project has fewer collaborators than allowed", ->
|
||||
beforeEach ->
|
||||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
|
@ -101,6 +98,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 1
|
||||
@allowed_number = 4
|
||||
@invite_count = 1
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
|
@ -111,6 +113,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 2, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
@ -121,6 +128,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 3
|
||||
@allowed_number = 2
|
||||
@invite_count = 0
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
@ -131,6 +143,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 100
|
||||
@allowed_number = -1
|
||||
@invite_count = 0
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return true", ->
|
||||
|
@ -141,6 +158,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 0
|
||||
@allowed_number = 2
|
||||
@invite_count = 2
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
@ -151,6 +173,11 @@ describe "LimitationsManager", ->
|
|||
@current_number = 1
|
||||
@allowed_number = 2
|
||||
@invite_count = 1
|
||||
@CollaboratorsHandler.getInvitedCollaboratorCount = (project_id, callback) => callback(null, @current_number)
|
||||
@CollaboratorsInviteHandler.getInviteCount = (project_id, callback) => callback(null, @invite_count)
|
||||
sinon.stub @LimitationsManager, "allowedNumberOfCollaboratorsInProject", (project_id, callback) =>
|
||||
callback(null, @allowed_number)
|
||||
@callback = sinon.stub()
|
||||
@LimitationsManager.canAddXCollaborators(@project_id, 1, @callback)
|
||||
|
||||
it "should return false", ->
|
||||
|
|
|
@ -38,8 +38,8 @@ describe 'SubscriptionViewModelBuilder', ->
|
|||
@builder = SandboxedModule.require modulePath, requires:
|
||||
"settings-sharelatex": { apis: { recurly: { subdomain: "example.com" }}}
|
||||
"./RecurlyWrapper": @RecurlyWrapper
|
||||
"./PlansLocator": @PlansLocator
|
||||
"./SubscriptionLocator": @SubscriptionLocator
|
||||
"./PlansLocator": @PlansLocator = {}
|
||||
"./SubscriptionLocator": @SubscriptionLocator = {}
|
||||
"./SubscriptionFormatters": @SubscriptionFormatters
|
||||
"./LimitationsManager": {}
|
||||
"logger-sharelatex":
|
||||
|
|
|
@ -105,6 +105,12 @@ describe 'SudoModeMiddlewear', ->
|
|||
describe 'when external auth is being used', ->
|
||||
beforeEach ->
|
||||
@externalAuth = true
|
||||
@call = (cb) =>
|
||||
@req = {externalAuthenticationSystemUsed: sinon.stub().returns(@externalAuth)}
|
||||
@res = {redirect: sinon.stub()}
|
||||
@next = sinon.stub()
|
||||
@SudoModeMiddlewear.protectPage @req, @res, @next
|
||||
cb()
|
||||
|
||||
it 'should immediately return next with no args', (done) ->
|
||||
@call () =>
|
||||
|
|
|
@ -26,12 +26,12 @@ describe "ArchiveManager", ->
|
|||
"metrics-sharelatex": @metrics
|
||||
"fs": @fs = {}
|
||||
"fs-extra": @fse = {}
|
||||
@callback = sinon.stub()
|
||||
|
||||
describe "extractZipArchive", ->
|
||||
beforeEach ->
|
||||
@source = "/path/to/zip/source.zip"
|
||||
@destination = "/path/to/zip/destination"
|
||||
@callback = sinon.stub()
|
||||
@ArchiveManager._isZipTooLarge = sinon.stub().callsArgWith(1, null, false)
|
||||
|
||||
describe "successfully", ->
|
||||
|
|
|
@ -102,7 +102,7 @@ describe "ProjectUploadController", ->
|
|||
@project_id = "project-id-123"
|
||||
@folder_id = "folder-id-123"
|
||||
@path = "/path/to/file/on/disk.png"
|
||||
@filename = "filename.png"
|
||||
@name = "filename.png"
|
||||
@req.files =
|
||||
qqfile:
|
||||
path: @path
|
||||
|
|
|
@ -24,21 +24,16 @@ describe "RateLimiter", ->
|
|||
@RedisWrapper =
|
||||
client: sinon.stub().returns(@rclient)
|
||||
|
||||
@limiterFn = sinon.stub()
|
||||
@RollingRateLimiter = (opts) =>
|
||||
return @limiterFn
|
||||
|
||||
@limiter = SandboxedModule.require modulePath, requires:
|
||||
"rolling-rate-limiter": @RollingRateLimiter
|
||||
"settings-sharelatex":@settings
|
||||
"logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()}
|
||||
"./RedisWrapper": @RedisWrapper
|
||||
|
||||
@endpointName = "compiles"
|
||||
@subject = "some-project-id"
|
||||
@timeInterval = 20
|
||||
@throttleLimit = 5
|
||||
|
||||
@requires =
|
||||
"settings-sharelatex":@settings
|
||||
"logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()}
|
||||
"./RedisWrapper": @RedisWrapper
|
||||
|
||||
@details =
|
||||
endpointName: @endpointName
|
||||
subjectName: @subject
|
||||
|
@ -52,7 +47,9 @@ describe "RateLimiter", ->
|
|||
describe 'when action is permitted', ->
|
||||
|
||||
beforeEach ->
|
||||
@limiterFn = sinon.stub().callsArgWith(1, null, 0, 22)
|
||||
@requires["rolling-rate-limiter"] = (opts) =>
|
||||
return sinon.stub().callsArgWith(1, null, 0, 22)
|
||||
@limiter = SandboxedModule.require modulePath, requires: @requires
|
||||
|
||||
it 'should not produce and error', (done) ->
|
||||
@limiter.addCount {}, (err, should) ->
|
||||
|
@ -67,7 +64,9 @@ describe "RateLimiter", ->
|
|||
describe 'when action is not permitted', ->
|
||||
|
||||
beforeEach ->
|
||||
@limiterFn = sinon.stub().callsArgWith(1, null, 4000, 0)
|
||||
@requires["rolling-rate-limiter"] = (opts) =>
|
||||
return sinon.stub().callsArgWith(1, null, 4000, 0)
|
||||
@limiter = SandboxedModule.require modulePath, requires: @requires
|
||||
|
||||
it 'should not produce and error', (done) ->
|
||||
@limiter.addCount {}, (err, should) ->
|
||||
|
@ -82,7 +81,9 @@ describe "RateLimiter", ->
|
|||
describe 'when limiter produces an error', ->
|
||||
|
||||
beforeEach ->
|
||||
@limiterFn = sinon.stub().callsArgWith(1, new Error('woops'))
|
||||
@requires["rolling-rate-limiter"] = (opts) =>
|
||||
return sinon.stub().callsArgWith(1, new Error('woops'))
|
||||
@limiter = SandboxedModule.require modulePath, requires: @requires
|
||||
|
||||
it 'should produce and error', (done) ->
|
||||
@limiter.addCount {}, (err, should) ->
|
||||
|
|
|
@ -13,12 +13,12 @@ define ['ide/editor/directives/cmEditor'], () ->
|
|||
}
|
||||
|
||||
it 'inits Rich Text', () ->
|
||||
inject ($compile, $rootScope) ->
|
||||
inject ($compile, $rootScope) =>
|
||||
$compile('<div cm-editor></div>')($rootScope)
|
||||
expect(@richTextInit).to.have.been.called
|
||||
|
||||
it 'attaches to CM', () ->
|
||||
inject ($compile, $rootScope, $browser) ->
|
||||
inject ($compile, $rootScope, $browser) =>
|
||||
getSnapshot = sinon.stub()
|
||||
detachFromCM = sinon.stub()
|
||||
attachToCM = sinon.stub()
|
||||
|
@ -40,7 +40,7 @@ define ['ide/editor/directives/cmEditor'], () ->
|
|||
expect(attachToCM).to.have.been.called
|
||||
|
||||
it 'detaches from CM when destroyed', () ->
|
||||
inject ($compile, $rootScope) ->
|
||||
inject ($compile, $rootScope) =>
|
||||
@richTextInit.returns({ setValue: sinon.stub() })
|
||||
detachFromCM = sinon.stub()
|
||||
$rootScope.sharejsDoc = {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
tests = []
|
||||
for file of window.__karma__.files
|
||||
if window.__karma__.files.hasOwnProperty(file)
|
||||
if /Tests\.js$/.test(file)
|
||||
if /test\/unit_frontend\/js.+Tests.js$/.test(file)
|
||||
tests.push(file)
|
||||
|
||||
requirejs.config
|
||||
|
|
Loading…
Reference in a new issue