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