mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
130 lines
2.8 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
}); |