| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- assert = require("chai").assert
- sinon = require('sinon')
- chai = require('chai')
- should = chai.should()
- expect = chai.expect
- modulePath = "../../../app/js/FileController.js"
- SandboxedModule = require('sandboxed-module')
- describe "FileController", ->
- beforeEach ->
- @s3Wrapper =
- sendStreamToS3: sinon.stub()
- getAndPipe: sinon.stub()
- copyFile: sinon.stub()
- deleteFile:sinon.stub()
- @settings =
- s3:
- buckets:
- user_files:"user_files"
- @FileHandler =
- getFile: sinon.stub()
- deleteFile: sinon.stub()
- insertFile: sinon.stub()
- @LocalFileWriter = {}
- @controller = SandboxedModule.require modulePath, requires:
- "./LocalFileWriter":@LocalFileWriter
- "./FileHandler": @FileHandler
- "./s3Wrapper":@s3Wrapper
- "settings-sharelatex": @settings
- "logger-sharelatex":
- log:->
- err:->
- @project_id = "project_id"
- @file_id = "file_id"
- @bucket = "user_files"
- @key = "#{@project_id}/#{@file_id}"
- @req =
- key:@key
- bucket:@bucket
- query:{}
- params:
- project_id:@project_id
- file_id:@file_id
- @res =
- setHeader: ->
- @fileStream = {}
- describe "getFile", ->
- it "should pipe the stream", (done)->
- @FileHandler.getFile.callsArgWith(3, null, @fileStream)
- @fileStream.pipe = (res)=>
- res.should.equal @res
- done()
- @controller.getFile @req, @res
- it "should send a 200 if the cacheWarm param is true", (done)->
- @req.params.cacheWarm = true
- @FileHandler.getFile.callsArgWith(3, null, @fileStream)
- @res.send = (statusCode)=>
- statusCode.should.equal 200
- done()
- @controller.getFile @req, @res
- it "should send a 500 if there is a problem", (done)->
- @FileHandler.getFile.callsArgWith(3, "error")
- @res.send = (code)=>
- code.should.equal 500
- done()
- @controller.getFile @req, @res
- describe "insertFile", ->
- it "should send bucket name key and res to s3Wrapper", (done)->
- @FileHandler.insertFile.callsArgWith(3)
- @res.send = =>
- @FileHandler.insertFile.calledWith(@bucket, @key, @req).should.equal true
- done()
- @controller.insertFile @req, @res
-
- describe "copyFile", ->
- beforeEach ->
- @oldFile_id = "old_file_id"
- @oldProject_id = "old_project_id"
- @req.body =
- source:
- project_id: @oldProject_id
- file_id: @oldFile_id
- it "should send bucket name and both keys to s3Wrapper", (done)->
- @s3Wrapper.copyFile.callsArgWith(3)
- @res.send = (code)=>
- code.should.equal 200
- @s3Wrapper.copyFile.calledWith(@bucket, "#{@oldProject_id}/#{@oldFile_id}", @key).should.equal true
- done()
- @controller.copyFile @req, @res
- it "should send a 500 if there was an error", (done)->
- @s3Wrapper.copyFile.callsArgWith(3, "error")
- @res.send = (code)=>
- code.should.equal 500
- done()
- @controller.copyFile @req, @res
- describe "delete file", ->
- it "should tell the file handler", (done)->
- @FileHandler.deleteFile.callsArgWith(2)
- @res.send = (code)=>
- code.should.equal 204
- @FileHandler.deleteFile.calledWith(@bucket, @key).should.equal true
- done()
- @controller.deleteFile @req, @res
- it "should send a 500 if there was an error", (done)->
- @FileHandler.deleteFile.callsArgWith(2, "error")
- @res.send = (code)->
- code.should.equal 500
- done()
- @controller.deleteFile @req, @res
|