UNPKG

@tradle/otr

Version:

Off-the-Record Messaging Protocol

59 lines (50 loc) 1.41 kB
var assert = require('assert') var OTR = require('./').OTR var CONST = require('./lib/const') var keys = require('./test/spec/unit/data/keys.js') var Parse = require('./lib/parse') var CONST = require('./lib/const') var USER_ID = 1 var users = {} function getOther(user) { return user === 'userA' ? 'userB' : 'userA' } replaceUser('userA') replaceUser('userB') users.userA.sendQueryMsg() users.userA.on('status', function (status) { if (status === CONST.STATUS_AKE_SUCCESS) { replaceUser('userA') users.userA.sendMsg('i\'m back!') users.userA.sendMsg('are you still here?') } }) function replaceUser(name) { if (users[name]) users[name].endOtr() users[name] = makeUser(name) } function makeUser(name) { var other = getOther(name) var user = new OTR({ priv: keys[name] }) user.REQUIRE_ENCRYPTION = true user.USER_ID = USER_ID++ user.on('ui', function (msg) { // new instances are talking to each other assert.equal(users[other].USER_ID, 3) assert.equal(users[name].USER_ID, 4) }) user.on('error', function(err) { if (err) throw err }) user.on('io', function (msg) { users[other].receiveMsg(msg) }) user.on('query', function(msg) { if (user.their_instance_tag !== '\x00\x00\x00\x00') { replaceUser(name) users[name].receiveMsg(msg) } }) user.on('warn', function(warning) { console.warn(warning) }) return user }