diff --git a/.gitignore b/.gitignore index 3c706f1..08cf3a3 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ server/.idea/Server.iml server/.nyc_output server/coverage ExampleNodeJS.code-workspace +server/upload/ \ No newline at end of file diff --git a/server/app.js b/server/app.js index 44521eb..bd10419 100644 --- a/server/app.js +++ b/server/app.js @@ -6,6 +6,7 @@ let upload = require('express-fileupload'); let indexRouter = require('./routes/index'); let usersRouter = require('./routes/usersCNT'); let fileStorageRouter = require('./routes/fileStorageCNT'); +let observerRouter = require('../server/routes/observer'); let app = express(); @@ -21,6 +22,7 @@ app.use(upload()); app.use('/', indexRouter); app.use('/users', usersRouter); app.use('/file', fileStorageRouter); +app.use('/observer', observerRouter); let server = app.listen(3000, "127.0.0.1", function () { let address = server.address().address; diff --git a/server/package.json b/server/package.json index 7e0eae0..06be19e 100644 --- a/server/package.json +++ b/server/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "start": "node ./bin/www", - "test": "nyc mocha --exit && ./node_modules/.bin/eslint --fix app.js routes/** test/**.js signleton/**.js", + "test": "nyc mocha --exit && ./node_modules/.bin/eslint --fix app.js routes/** test/**.js model/**.js signleton/**.js", "coverage": "nyc report --reporter=text-lcov | coveralls" }, "dependencies": { diff --git a/server/public/invia.html b/server/public/invia.html new file mode 100644 index 0000000..729fa35 --- /dev/null +++ b/server/public/invia.html @@ -0,0 +1,22 @@ + + Send + + Invia un messaggio a ricevi.html
+ + + + + + + \ No newline at end of file diff --git a/server/public/ricevi.html b/server/public/ricevi.html new file mode 100644 index 0000000..c47c962 --- /dev/null +++ b/server/public/ricevi.html @@ -0,0 +1,23 @@ + + Receive + + Riceve il messaggio inviato da invia.html +
Messaggio:

+ + + + + \ No newline at end of file diff --git a/server/routes/fileStorageCNT.js b/server/routes/fileStorageCNT.js index 1601ada..74d1ed6 100644 --- a/server/routes/fileStorageCNT.js +++ b/server/routes/fileStorageCNT.js @@ -5,14 +5,15 @@ let router = require('express').Router(); router.post('/upload', function(req, res){ let file = req.files.filename; let filename = file.name; + console.log(req); file.mv('./upload/'+filename, function(err){ - if(err) res.status(500).end("500: Internal server error"); + if(err) { + res.status(500).end("500: Internal server error");} else {//inserisci nel db + fileStorage.create({name: filename}) - .then(doc => res.send({message:"a "+doc}).status(200).end()) - .catch(err => res.send({message:"b "+err}).status(403).end()); - //.then(doc =>res.send({message: ""}).status(200).end(); - //.catch(err => res.send({message:""+err}).statusCode(403)); + .then(doc => res.send({message:"a "+doc}).status(200).end()); + //.catch(err => res.send({message:"b "+err}).status(403).end()); } }); /*Soluzione con le promise diff --git a/server/routes/observer.js b/server/routes/observer.js new file mode 100644 index 0000000..a755417 --- /dev/null +++ b/server/routes/observer.js @@ -0,0 +1,30 @@ +let express = require('express'); +let router = express.Router(); +const EventEmitter = require('events'); + +class MyEmitter extends EventEmitter{} + +let myEmitter = new MyEmitter(); +let obj; + +router.post('/listen', function(req, res){ + let i=0; + obj = req.body; + myEmitter.once('sendmsg', () => {//.on resta sempre in ascolto + if(obj.msg==="inc"){ + i++; + } + else{ + i--; + } + }); + myEmitter.emit('sendmsg'); + res.send({msg: i}); +}); + +router.get('/response', function(req, res){ + myEmitter.emit('sendmsg'); + res.send({msg:obj.msg}); +}); + +module.exports = router; \ No newline at end of file diff --git a/server/test/observer.test.js b/server/test/observer.test.js new file mode 100644 index 0000000..81cfbfd --- /dev/null +++ b/server/test/observer.test.js @@ -0,0 +1,46 @@ +process.env.NODE_ENV = 'test'; + +let expect = require('chai').expect; +let chai = require('chai'); +let chaiHttp = require('chai-http'); +let randomstring = require("randomstring"); +let server = require('../app'); +// eslint-disable-next-line no-unused-vars +let should = chai.should(); +chai.use(require('chai-match')); +chai.use(chaiHttp); + +it('POST: it should response with a object', function(done){ + let obj= {msg: randomstring.generate(3)}; + chai.request(server) + .post('/observer/listen') + .send(obj) + .end(function(err, res){ + res.should.have.status(200); + expect(res.body).to.be.an('object'); + done(); + }); +}); + +it('POST: it should response with a object', function(done){ + let obj= {msg: "inc"}; + chai.request(server) + .post('/observer/listen') + .send(obj) + .end(function(err, res){ + res.should.have.status(200); + expect(res.body).to.be.an('object'); + done(); + }); +}); + +it('GET: it should response with a string', function(done){ + + chai.request(server) + .get('/observer/response') + .end(function(err, res){ + res.should.have.status(200); + expect(res.body).to.be.an('object'); + done(); + }); +}); \ No newline at end of file diff --git a/server/test/userCNT.test.js b/server/test/userCNT.test.js index 6417ea2..2f11014 100644 --- a/server/test/userCNT.test.js +++ b/server/test/userCNT.test.js @@ -18,7 +18,7 @@ let regexp = { }; describe('Signin', function(){ - it('/POST: it should add a user if exist', function(done){ + it('/POST: it should add a user if does not exist', function(done){ let random = "Test"+randomstring.generate(4); let user ={username:random, password:"1234"}; chai.request(server) diff --git a/server/untest/fileStorage.test.js b/server/untest/fileStorage.test.js index e09f99a..d1ef418 100644 --- a/server/untest/fileStorage.test.js +++ b/server/untest/fileStorage.test.js @@ -9,14 +9,27 @@ let should = chai.should(); chai.use(require('chai-match')); chai.use(chaiHttp); -it('POST: dovrebbe uppare il file', function(done){ - let toSend = {}; +it('dovrebbe NON uppare il file', function(done){ + //const filePath = `${__dirname}/upload/upload.txt`; chai.request(server) .post('/file/upload') - .attach(toSend) - .send(toSend) + .field('customKey', 'customValue') + .attach('files', '/Users/francescovicidomini/git/ExampleNodeJS/server/upload/upload.txt', 'upload.txt') .end(function(err, res){ - res.should.have.status(200); + res.should.have.status(500); done(); }); }); + +it('dovrebbe UPPARE il file', function(done){ + let filename= "2018-11-28 15.11.55.jpg"; + chai.request(server) + .post('/file/upload') + .attach('image', '/Users/francescovicidomini/git/ExampleNodeJS/server/upload/'+filename) + //.field('customKey', 'customValue') + //.attach('files', '/Users/francescovicidomini/git/ExampleNodeJS/server/upload/upload.txt', 'upload.txt') + .end(function(err, res){ + res.should.have.status(200); + done(); + }); +}); \ No newline at end of file