Skip to content

Commit

Permalink
init obsers
Browse files Browse the repository at this point in the history
  • Loading branch information
CiccioTecchio committed Dec 14, 2018
1 parent 486663d commit 3d0fb81
Show file tree
Hide file tree
Showing 10 changed files with 150 additions and 12 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -71,3 +71,4 @@ server/.idea/Server.iml
server/.nyc_output
server/coverage
ExampleNodeJS.code-workspace
server/upload/
2 changes: 2 additions & 0 deletions server/app.js
Expand Up @@ -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();

Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion server/package.json
Expand Up @@ -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": {
Expand Down
22 changes: 22 additions & 0 deletions server/public/invia.html
@@ -0,0 +1,22 @@
<html>
<head><title>Send</title></head>
<body>
Invia un messaggio a <a href="server/public/ricevi.html">ricevi.html</a><br>
<input type="text">
<button >Send</button>
</body>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>

<script>
$("button").click(function() {
$.ajax({
url: 'observer/listen',
type: 'POST',
data: {msg: $("input").val()},
});
});
</script>
</html>
23 changes: 23 additions & 0 deletions server/public/ricevi.html
@@ -0,0 +1,23 @@
<html>
<head><title>Receive</title></head>
<body>
Riceve il messaggio inviato da <a href="server/public/invia.html">invia.html</a>
<br><span>Messaggio: </span><p></p>
</body>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>

<script>
setInterval(function(){
$.ajax({
url: 'observer/response',
type: 'GET',
success: function(done){
$("p").html(done.msg);
}
});
}, 30000);
</script>
</html>
11 changes: 6 additions & 5 deletions server/routes/fileStorageCNT.js
Expand Up @@ -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
Expand Down
30 changes: 30 additions & 0 deletions 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;
46 changes: 46 additions & 0 deletions 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();
});
});
2 changes: 1 addition & 1 deletion server/test/userCNT.test.js
Expand Up @@ -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)
Expand Down
23 changes: 18 additions & 5 deletions server/untest/fileStorage.test.js
Expand Up @@ -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();
});
});

1 comment on commit 3d0fb81

@CiccioTecchio
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wrong commit message, I want to say init observer

Please sign in to comment.