Refactor to make _get_range testable.

This commit is contained in:
Shane Kilkelly 2015-08-28 12:02:50 +01:00
parent 97cdc243d3
commit 387e96ab67
2 changed files with 29 additions and 11 deletions

View file

@ -8,14 +8,7 @@ parseRange = require('range-parser')
oneDayInSeconds = 60 * 60 * 24
maxSizeInBytes = 1024 * 1024 * 1024 # 1GB
get_range = (header) ->
parsed = parseRange(maxSizeInBytes, header)
range_type = parsed.type
range = parsed[0]
{start: range.start, end: range.end}
module.exports =
module.exports = FileController =
getFile: (req, res)->
{key, bucket} = req
@ -25,12 +18,10 @@ module.exports =
bucket: bucket,
format: format,
style: style,
start: null,
end: null
}
metrics.inc "getFile"
if req.headers.range?
range = get_range(req.headers.range)
range = FileController._get_range(req.headers.range)
opts.start = range.start
opts.end = range.end
logger.log key:key, bucket:bucket, format:format, style:style, "reciving request to get file"
@ -76,3 +67,11 @@ module.exports =
res.send 500
else
res.send 204
_get_range: (header) ->
parsed = parseRange(maxSizeInBytes, header)
if parsed == -1 or parsed == -2 or parsed.type != 'bytes'
null
else
range = parsed[0]
{start: range.start, end: range.end}

View file

@ -133,3 +133,22 @@ describe "FileController", ->
code.should.equal 500
done()
@controller.deleteFile @req, @res
describe "_get_range", ->
it "should parse a valid Range header", (done) ->
result = @controller._get_range('bytes=0-200')
expect(result).to.not.equal null
expect(result.start).to.equal 0
expect(result.end).to.equal 200
done()
it "should return null for an invalid Range header", (done) ->
result = @controller._get_range('wat')
expect(result).to.equal null
done()
it "should return null for any type other than 'bytes'", (done) ->
result = @controller._get_range('carrots=0-200')
expect(result).to.equal null
done()