just-login-client
Version:
Browser code for the just-login-core and just-login-emailer
65 lines (59 loc) • 2.53 kB
JavaScript
var test = require('tap').test
var createSession = require('../createSession.js')
var EventEmitter = require('events').EventEmitter
if (typeof localStorage === "undefined" || localStorage === null) {
var LocalStorage = require('node-localstorage').LocalStorage
localStorage = new LocalStorage('./fakeLocalStorage')
}
var jlsid = "justLoginSessionId" //key
var fakeSessionId = "fakeSessionId" //value
var fakeEmailAddress = "ex@mp.le"
var fakeArgApi = {isAuthenticated: function (cb) {cb(null, fakeEmailAddress)}}
var newSessionId = "newSessionId"
var fakeApi = {
continueExistingSession: function (get, cb) {
if (get == fakeSessionId) {
cb(null, fakeArgApi, fakeSessionId)
} else {
cb(new Error("u haz error"))
}
},
createNewSession: function (cb) {
cb(null, fakeArgApi, newSessionId)
}
}
test('test createSession', function (t) {
t.plan(14)
localStorage.setItem(jlsid, fakeSessionId) //set the session id
t.equal(localStorage.getItem(jlsid), fakeSessionId, "localStorage works")
var tryContinue = new EventEmitter()
createSession(fakeApi, tryContinue, function (err, api, session) {
t.notOk(err, "no error")
t.equal(session, fakeSessionId, "sessionId must be old") //must retrieve session id
t.notEqual(session, newSessionId, "sessionId must not be new")
t.equal(fakeArgApi, api, "these must be the same")
localStorage.removeItem("justLoginSessionId") //delete the session id
var tryNew = new EventEmitter()
createSession(fakeApi, tryNew, function (err, api, session) {
t.notOk(err, "no error")
t.notEqual(session, fakeSessionId, "sessionId must not be old") //creates session id
t.equal(session, newSessionId, "sessionId must be new")
t.equal(fakeArgApi, api, "these must be the same")
setTimeout(t.end.bind(t), 3000) //must wait for authenticated event to be called
})
tryNew.on('new session', function() {t.ok(true, "created a new session")})
tryNew.on('continue session', function() {t.notOk(true, "did not continue an existing session")})
tryNew.on('authenticated', function (whom) {
t.ok(true, "got authenticated")
t.equal(whom, fakeEmailAddress, "correct email")
})
})
tryContinue.on('new session', function (sessionId) {
t.notOk(true, "did not create a new session")
t.ok(true, "make plan right length")
})
tryContinue.on('continue session', function (sessionId) {
t.ok(true, "continued an existing session")
t.equal(sessionId, fakeSessionId, "got correct id")
})
})