@tradle/otr
Version:
Off-the-Record Messaging Protocol
59 lines (50 loc) • 1.41 kB
JavaScript
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
}