mirror of
https://github.com/Hopiu/webapi-eca.git
synced 2026-03-16 22:10:31 +00:00
108 lines
3.1 KiB
CoffeeScript
108 lines
3.1 KiB
CoffeeScript
fs = require 'fs'
|
|
path = require 'path'
|
|
cryptico = require 'my-cryptico'
|
|
|
|
passPhrase = 'UNIT TESTING PASSWORD'
|
|
numBits = 1024
|
|
oPrivateRSAkey = cryptico.generateRSAKey passPhrase, numBits
|
|
strPublicKey = cryptico.publicKeyString oPrivateRSAkey
|
|
|
|
try
|
|
data = fs.readFileSync path.resolve( 'testing', 'files', 'testObjects.json' ), 'utf8'
|
|
try
|
|
objects = JSON.parse data
|
|
catch err
|
|
console.log 'Error parsing standard objects file: ' + err.message
|
|
catch err
|
|
console.log 'Error fetching standard objects file: ' + err.message
|
|
|
|
logger = require path.join '..', 'js-coffee', 'logging'
|
|
log = logger.getLogger
|
|
nolog: true
|
|
opts =
|
|
logger: log
|
|
keygen: passPhrase
|
|
|
|
db = require path.join '..', 'js-coffee', 'persistence'
|
|
db opts
|
|
|
|
engine = require path.join '..', 'js-coffee', 'engine'
|
|
engine opts
|
|
|
|
dm = require path.join '..', 'js-coffee', 'dynamic-modules'
|
|
dm opts
|
|
|
|
oUser = objects.users.userOne
|
|
oRuleReal = objects.rules.ruleRealThree
|
|
oAi = objects.ais.aiThree
|
|
|
|
exports.tearDown = ( cb ) ->
|
|
db.storeUser oUser
|
|
db.deleteRule oRuleReal.id
|
|
db.actionInvokers.deleteModule oAi.id
|
|
setTimeout cb, 200
|
|
|
|
exports.testCompile = ( test ) ->
|
|
test.expect 5
|
|
|
|
paramOne = 'First Test'
|
|
code = "exports.testFunc = () ->\n\t'#{ paramOne }'"
|
|
dm.compileString code, 'userOne', 'ruleOne', 'moduleOne', 'CoffeeScript', null, ( result ) ->
|
|
test.strictEqual 200, result.answ.code
|
|
moduleOne = result.module
|
|
test.strictEqual paramOne, moduleOne.testFunc(), "Other result expected"
|
|
|
|
paramTwo = 'Second Test'
|
|
code = "exports.testFunc = () ->\n\t'#{ paramTwo }'"
|
|
dm.compileString code, 'userOne', 'ruleOne', 'moduleOne', 'CoffeeScript', null, ( result ) ->
|
|
test.strictEqual 200, result.answ.code
|
|
moduleTwo = result.module
|
|
test.strictEqual paramTwo, moduleTwo.testFunc(), "Other result expected"
|
|
test.notStrictEqual paramOne, moduleTwo.testFunc(), "Other result expected"
|
|
setTimeout test.done, 200
|
|
|
|
|
|
exports.testCorrectUserParams = ( test ) ->
|
|
test.expect 1
|
|
|
|
db.storeUser oUser
|
|
db.storeRule oRuleReal.id, JSON.stringify oRuleReal
|
|
db.linkRule oRuleReal.id, oUser.username
|
|
db.activateRule oRuleReal.id, oUser.username
|
|
db.actionInvokers.storeModule oUser.username, oAi
|
|
|
|
pw = 'This password should come out cleartext'
|
|
userparams = JSON.stringify password: pw
|
|
oEncrypted = cryptico.encrypt userparams, strPublicKey
|
|
|
|
db.actionInvokers.storeUserParams oAi.id, oUser.username, oEncrypted.cipher
|
|
|
|
engine.internalEvent
|
|
event: 'new'
|
|
user: oUser.username
|
|
rule: oRuleReal
|
|
|
|
fWaitForPersistence = () ->
|
|
evt = objects.events.eventReal
|
|
evt.eventid = 'event_testid'
|
|
db.pushEvent evt
|
|
|
|
fWaitAgain = () ->
|
|
db.getLog oUser.username, oRuleReal.id, ( err, data ) ->
|
|
try
|
|
logged = data.split( '] ' )[1]
|
|
test.strictEqual logged, "{#{ oAi.id }} " + pw + "\n", 'Did not log the right thing'
|
|
catch e
|
|
test.ok false, 'Parsing log failed'
|
|
|
|
engine.internalEvent
|
|
event: 'del'
|
|
user: oUser.username
|
|
rule: null
|
|
ruleId: oRuleReal.id
|
|
setTimeout test.done, 200
|
|
|
|
setTimeout fWaitAgain, 200
|
|
|
|
setTimeout fWaitForPersistence, 200
|
|
|