gun/e2e/distributed.js
2017-02-20 15:27:02 -08:00

95 lines
1.9 KiB
JavaScript

require('./holy/grail');
describe('PANIC!', function(){
this.timeout(1000 * 100);
var Gun = require('../');
var gun = Gun();
var panic = require('panic-server');
var server = require('http').createServer(function(req, res){
var path = require('path');
if (req.url === '/') {
req.url = '/panic.html';
}
if(gun.wsp.server(req, res)){
return; // filters gun requests!
}
require('fs').createReadStream(path.join(__dirname, req.url))
.on('error',function(){}).pipe(res); // stream
});
panic.server(server);
gun.wsp(server);
server.listen(8080);
var clients = panic.clients;
var wd = require('selenium-webdriver');
var ff1 = new wd.Builder()
.forBrowser('firefox').build()
.get('http://localhost:8080/panic.html');
var ff2 = new wd.Builder()
.forBrowser('firefox').build()
.get('http://localhost:8080/panic.html');
function min(n, done, list){
list = list || clients;
function ready() {
if (list.length >= n) {
done();
list.removeListener('add', ready);
return true;
}
}
if (!ready()) {
list.on('add', ready);
}
}
function gunify(done, ctx){
var s = document.createElement('script');
s.src = 'gun.js';
s.onload = done;
s.onerror = ctx.fail;
document.body.appendChild(s);
}
describe('Should sync', function(){
var alice = clients.pluck(1);
var bob = clients.excluding(alice).pluck(1);
before(function(done){
min(2, done, clients);
});
it('browsers', function(done){
alice.run(function(){
var sync = gun.get('sync');
sync.put({hello: 'world'})
}).then(function(){
return bob.run(function(done, ctx){
var sync = gun.get('sync');
sync.on(function(val){
if(val.hello === 'world'){
done();
} else {
ctx.fail("Wrong data");
}
});
});
}).then(function(){
done();
}).catch(function(e){
done(new Error(e.message));
});
});
});
});