1 | 'use strict';
|
2 |
|
3 | const assert = require('assert');
|
4 | const fs = require('fs');
|
5 | const md5 = require('md5');
|
6 | const path = require('path');
|
7 | const fileFactory = require('../lib').fileFactory;
|
8 | const {isFunc} = require('../lib/utilities.js');
|
9 | const server = require('./server');
|
10 |
|
11 |
|
12 | const mockFile = path.join(server.fileDir, 'basketball.png');
|
13 | const mockBuffer = fs.readFileSync(mockFile);
|
14 |
|
15 | describe('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 |
|
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 | });
|