UNPKG

3.49 kBJavaScriptView Raw
1'use strict';
2
3const assert = require('assert');
4const fs = require('fs');
5const md5 = require('md5');
6const path = require('path');
7const fileFactory = require('../lib').fileFactory;
8const {isFunc} = require('../lib/utilities.js');
9const server = require('./server');
10
11
12const mockFile = path.join(server.fileDir, 'basketball.png');
13const mockBuffer = fs.readFileSync(mockFile);
14
15describe('Test of the fileFactory factory', function() {
16 beforeEach(function() {
17 server.clearUploadsDir();
18 });
19
20 it('return a file object', function() {
21 assert.ok(fileFactory({
22 name: 'basketball.png',
23 buffer: mockBuffer
24 }));
25 });
26
27 it('return void if buffer is empty and useTempFiles is false.', function() {
28 assert.equal(fileFactory({
29 name: 'basketball.png',
30 buffer: Buffer.concat([])
31 },{
32 useTempFiles: false
33 }), null);
34 });
35
36 describe('Properties', function() {
37 it('contains the name property', function() {
38 assert.equal(fileFactory({
39 name: 'basketball.png',
40 buffer: mockBuffer
41 }).name, 'basketball.png');
42 });
43 it('contains the data property', function() {
44 assert.ok(fileFactory({
45 name: 'basketball.png',
46 buffer: mockBuffer
47 }).data);
48 });
49 it('contains the encoding property', function() {
50 assert.equal(fileFactory({
51 name: 'basketball.png',
52 buffer: mockBuffer,
53 encoding: 'utf-8'
54 }).encoding, 'utf-8');
55 });
56 it('contains the mimetype property', function() {
57 assert.equal(fileFactory({
58 name: 'basketball.png',
59 buffer: mockBuffer,
60 mimetype: 'image/png'
61 }).mimetype, 'image/png');
62 });
63 it('contains the md5 property', function() {
64 const mockMd5 = md5(mockBuffer);
65 assert.equal(fileFactory({
66 name: 'basketball.png',
67 buffer: mockBuffer,
68 hash: mockMd5
69 }).md5, mockMd5);
70 });
71 it('contains the mv method', function() {
72 assert.equal(isFunc(fileFactory({
73 name: 'basketball.png',
74 buffer: mockBuffer
75 }).mv), true);
76 });
77 });
78
79 describe('File object behavior for in memory upload', function() {
80 const file = fileFactory({
81 name: 'basketball.png',
82 buffer: mockBuffer
83 });
84 it('move the file to the specified folder', function(done) {
85 file.mv(path.join(server.uploadDir, 'basketball.png'), function(err) {
86 assert.ifError(err);
87 done();
88 });
89 });
90 it('reject the mv if the destination does not exists', function(done) {
91 file.mv(path.join(server.uploadDir, 'unknown', 'basketball.png'), function(err) {
92 assert.ok(err);
93 done();
94 });
95 });
96 });
97
98 describe('File object behavior for upload into temporary file', function() {
99 const file = fileFactory({
100 name: 'basketball.png',
101 buffer: mockBuffer,
102 tempFilePath: mockFile
103 });
104 it('move the file to the specified folder', function(done) {
105 file.mv(path.join(server.uploadDir, 'basketball.png'), function(err) {
106 if (!err){
107 //Place back moved file
108 fs.renameSync(path.join(server.uploadDir, 'basketball.png'), mockFile);
109 }
110 assert.ifError(err);
111 done();
112 });
113 });
114 it('reject the mv if the destination does not exists', function(done) {
115 file.mv(path.join(server.uploadDir, 'unknown', 'basketball.png'), function(err) {
116 assert.ok(err);
117 done();
118 });
119 });
120 });
121});