gun/test/panic/curl-server.js
2018-07-30 08:53:00 -07:00

130 lines
2.8 KiB
JavaScript

var config = {
IP: require('ip').address(),
port: 8765,
servers: 2,
dir: __dirname
}
var panic = require('panic-server');
panic.server().listen(config.port);
var clients = panic.clients;
var manager = require('panic-manager')();
manager.start({
clients: Array(config.servers).fill().map(function(u, i){
return {
type: 'node',
port: config.port + (i + 1)
}
}),
panic: 'http://' + config.IP + ':' + config.port
});
var servers = clients.filter('Node.js');
var alice = servers.pluck(1);
var bob = servers.excluding(alice).pluck(1);
describe("Server to server sync", function(){
this.timeout(5000);
it("Servers have joined!", function(){
return servers.atLeast(config.servers);
});
it("Start GUN Bob server.", function(){
return bob.run(function(test){
test.async();
var express = require('express');
var bodyParser = require('body-parser');
var Gun = require('gun');
var app = express();
app.use(Gun.serve)
app.use(bodyParser.json())
app.post('/foo', function(req, res) {
gun.get('bar').put(req.body)
res.sendStatus(200)
});
var server = app.listen(8082, function(){ test.done() })
var gun = Gun({peers: 'http://localhost:8081/gun', web: server})
gun.get('bar').on(function(data, key){
console.log('bob', data, key)
})
}, {i: 1, config: config});
});
it("Start GUN Alice server.", function(){
return alice.run(function(test){
test.async();
var express = require('express');
var bodyParser = require('body-parser');
var Gun = require('gun');
var app = express()
app.use(Gun.serve)
var server = app.listen(8081, function(){ test.done() })
var gun = Gun({peers: 'http://localhost:8082/gun', web: server})
gun.get('bar').on(function(data, key){
console.log('alice', data, key)
global.DATA = data;
})
}, {i: 1, config: config});
});
it("Curl Bob!", function(){
var reply = require('child_process').execSync("curl --request POST "
+ "--url http://localhost:8082/foo "
+ "--header 'content-type: application/json' "
+ "--data '"+JSON.stringify({bar: "FOOBAR"})+"'");
console.log("REPLY:", reply.toString());
if(reply.toString().indexOf("err") >= 0){
console.log(reply.toString());
throw new Error("Server did not like the request!");
}
return;
});
it("Did Alice get it?", function(){
return alice.run(function(test){
test.async();
setTimeout(function(){
console.log("does Alice have it?", global.DATA);
if(!global.DATA){
console.log("no data!");
return;
}
test.done();
}, 1000);
}, {i: 1, config: config});
});
it("All finished!", function(done){
console.log("Done! Cleaning things up...");
setTimeout(function(){
done();
},1000);
});
after("Everything shut down.", function(){
return servers.run(function(){
process.exit();
});
});
});