| 'use strict' |
| |
| var should = require('should'), |
| urljoin = require('url-join'), |
| config = require('../../helpers').config, |
| UsergridEntity = require('../../lib/entity'), |
| UsergridAsset = require('../../lib/asset'), |
| UsergridClient = require('../../lib/client'), |
| util = require('util'), |
| request = require('request'), |
| fs = require('fs'), |
| _ = require('lodash') |
| |
| var _slow = 6000, |
| _timeout = 12000, |
| filename = 'old_man', |
| file = __dirname + '/image.jpg', |
| testFile = __dirname + '/image_test.jpg', |
| expectedContentLength = 109055 |
| |
| describe('init from fs.readFile()', function() { |
| var asset = new UsergridAsset(filename, file) |
| |
| before(function(done) { |
| fs.readFile(file, function(err, data) { |
| asset.data = data |
| done() |
| }) |
| }) |
| |
| it('asset.data should be a binary Buffer', function() { |
| asset.data.should.be.a.buffer |
| }) |
| |
| it('asset.contentType should be inferred from Buffer', function() { |
| asset.contentType.should.equal('image/jpeg') |
| }) |
| |
| it(util.format('asset.contentLength should be %s bytes', expectedContentLength), function() { |
| asset.contentLength.should.equal(expectedContentLength) |
| }) |
| }) |
| |
| describe('init from piped writable stream', function() { |
| var asset = new UsergridAsset(filename, file) |
| var writeTestAsset = new UsergridAsset('image_test', testFile) |
| before(function(done) { |
| var stream = fs.createReadStream(file).pipe(asset), |
| writeTest |
| stream.on('finish', function() { |
| fs.writeFile(testFile, asset.data) |
| writeTest = fs.createReadStream(file).pipe(writeTestAsset) |
| writeTest.on('finish', function() { |
| done() |
| }) |
| }) |
| }) |
| |
| it('asset.data should be a binary Buffer', function() { |
| asset.data.should.be.a.buffer |
| }) |
| |
| it('asset.contentType should be inferred from Buffer', function() { |
| asset.contentType.should.equal('image/jpeg') |
| }) |
| |
| it(util.format('asset.contentLength should be %s bytes', expectedContentLength), function() { |
| asset.contentLength.should.equal(expectedContentLength) |
| }) |
| |
| it('should write an identical asset to the filesystem', function() { |
| writeTestAsset.contentType.should.equal('image/jpeg') |
| writeTestAsset.contentLength.should.equal(expectedContentLength) |
| }) |
| }) |
| |
| describe('upload via client.POST to a specific entity', function() { |
| |
| this.slow(_slow) |
| this.timeout(_timeout) |
| |
| var client = new UsergridClient() |
| it('should upload a binary asset and create a new entity', function(done) { |
| var asset = new UsergridAsset(filename, file) |
| fs.createReadStream(file).pipe(asset).on('finish', function() { |
| client.POST(config.test.collection, asset, function(err, assetResponse, entityWithAsset) { |
| assetResponse.statusCode.should.equal(200) |
| entityWithAsset.should.have.property('file-metadata') |
| entityWithAsset['file-metadata'].should.have.property('content-type').equal('image/jpeg') |
| entityWithAsset['file-metadata'].should.have.property('content-length').equal(expectedContentLength) |
| entityWithAsset.remove(client) |
| done() |
| }) |
| }) |
| }) |
| }) |
| |
| describe('upload via client.PUT to a specific entity', function() { |
| |
| this.slow(_slow) |
| this.timeout(_timeout) |
| |
| var client = new UsergridClient() |
| it('should upload a binary asset to an existing entity', function(done) { |
| var entity = new UsergridEntity({ |
| type: config.test.collection, |
| name: "AssetTestPUT", |
| }) |
| var asset = new UsergridAsset(filename, file) |
| client.PUT(entity, function(err, entityResponse, createdEntity) { |
| fs.createReadStream(file).pipe(asset).on('finish', function() { |
| client.PUT(createdEntity, asset, function(err, assetResponse, entityWithAsset) { |
| assetResponse.statusCode.should.equal(200) |
| entityWithAsset.should.have.property('file-metadata') |
| entityWithAsset['file-metadata'].should.have.property('content-type').equal('image/jpeg') |
| entityWithAsset['file-metadata'].should.have.property('content-length').equal(expectedContentLength) |
| done() |
| }) |
| }) |
| }) |
| }) |
| }) |