webapi-eca/testing/test_components-manager.coffee

162 lines
4.4 KiB
CoffeeScript
Raw Normal View History

fs = require 'fs'
path = require 'path'
2014-04-02 21:08:05 +00:00
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
2014-04-05 01:09:40 +00:00
logger = require path.join '..', 'js', 'logging'
log = logger.getLogger
nolog: true
opts =
logger: log
2014-04-02 21:08:05 +00:00
2014-04-05 01:09:40 +00:00
cm = require path.join '..', 'js', 'components-manager'
cm opts
2014-04-05 01:09:40 +00:00
db = require path.join '..', 'js', 'persistence'
db opts
oUser = objects.users.userOne
oRuleOne = objects.rules.ruleOne
oRuleTwo = objects.rules.ruleTwo
2014-04-03 15:41:51 +00:00
oRuleThree = objects.rules.ruleThree
2014-04-02 21:08:05 +00:00
oEpOne = objects.eps.epOne
oEpTwo = objects.eps.epTwo
exports.tearDown = ( cb ) ->
db.deleteRule oRuleOne.id
db.deleteRule oRuleTwo.id
2014-04-03 15:41:51 +00:00
db.deleteRule oRuleThree.id
2014-04-02 21:08:05 +00:00
setTimeout cb, 100
2014-04-01 21:31:54 +00:00
exports.requestProcessing =
testEmptyPayload: ( test ) =>
test.expect 1
2014-04-01 21:31:54 +00:00
request =
command: 'get_event_pollers'
2014-04-01 21:31:54 +00:00
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 200, answ.code, 'Empty payload did not return 200'
2014-04-01 21:31:54 +00:00
test.done()
testCorruptPayload: ( test ) =>
test.expect 1
2014-03-27 09:41:18 +00:00
request =
command: 'get_event_pollers'
payload: 'no-json'
2014-03-27 09:41:18 +00:00
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 404, answ.code, 'Corrupt payload did not return 404'
2014-04-01 21:31:54 +00:00
test.done()
2014-03-27 09:41:18 +00:00
2014-04-01 21:31:54 +00:00
exports.testListener = ( test ) =>
2014-04-03 15:41:51 +00:00
test.expect 3
strRuleOne = JSON.stringify oRuleOne
strRuleTwo = JSON.stringify oRuleTwo
strRuleThree = JSON.stringify oRuleThree
db.storeUser oUser
db.storeRule oRuleOne.id, strRuleOne
db.linkRule oRuleOne.id, oUser.username
db.activateRule oRuleOne.id, oUser.username
db.storeRule oRuleTwo.id, strRuleTwo
db.linkRule oRuleTwo.id, oUser.username
db.activateRule oRuleTwo.id, oUser.username
2014-04-01 21:31:54 +00:00
request =
command: 'forge_rule'
2014-04-03 15:41:51 +00:00
payload: strRuleThree
cm.addRuleListener ( evt ) =>
strEvt = JSON.stringify evt.rule
if evt.event is 'init'
if strEvt is strRuleOne or strEvt is strRuleTwo
test.ok true, 'Dummy true to fill expected tests!'
if strEvt is strRuleThree
test.ok false, 'Init Rule found test rule number two??'
if evt.event is 'new'
if strEvt is strRuleOne or strEvt is strRuleTwo
test.ok false, 'New Rule got test rule number one??'
if strEvt is strRuleThree
test.ok true, 'Dummy true to fill expected tests!'
fWaitForInit = ->
cm.processRequest oUser, request, ( answ ) =>
if answ.code isnt 200
test.ok false, 'testListener failed: ' + answ.message
test.done()
2014-04-03 15:41:51 +00:00
setTimeout test.done, 500
setTimeout fWaitForInit, 200
exports.moduleHandling =
2014-04-02 21:08:05 +00:00
tearDown: ( cb ) ->
db.eventPollers.deleteModule oEpOne.id
db.eventPollers.deleteModule oEpTwo.id
setTimeout cb, 100
testGetModules: ( test ) ->
test.expect 2
2014-04-02 21:08:05 +00:00
db.eventPollers.storeModule oUser.username, oEpOne
2014-04-03 15:41:51 +00:00
db.eventPollers.storeModule oUser.username, oEpTwo
request =
command: 'get_event_pollers'
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 200, answ.code, 'GetModules failed...'
oExpected = {}
2014-04-02 21:08:05 +00:00
oExpected[oEpOne.id] = JSON.parse oEpOne.functions
2014-04-03 15:41:51 +00:00
oExpected[oEpTwo.id] = JSON.parse oEpTwo.functions
test.deepEqual oExpected, JSON.parse(answ.message),
'GetModules retrieved modules is not what we expected'
2014-04-02 21:08:05 +00:00
test.done()
testGetModuleParams: ( test ) ->
test.expect 2
2014-04-03 15:41:51 +00:00
db.eventPollers.storeModule oUser.username, oEpOne
2014-04-02 21:08:05 +00:00
request =
command: 'get_event_poller_params'
2014-04-03 15:41:51 +00:00
payload:
id: oEpOne.id
request.payload = JSON.stringify request.payload
2014-04-02 21:08:05 +00:00
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 200, answ.code,
'Required Module Parameters did not return 200'
2014-04-03 15:41:51 +00:00
test.strictEqual oEpOne.params, answ.message,
2014-04-02 21:08:05 +00:00
'Required Module Parameters did not match'
2014-04-01 21:31:54 +00:00
test.done()
2014-04-02 21:08:05 +00:00
testForgeModule: ( test ) ->
test.expect 2
2014-04-02 21:08:05 +00:00
oTmp = {}
oTmp[key] = val for key, val of oEpTwo when key isnt 'functions'
request =
command: 'forge_event_poller'
payload: JSON.stringify oTmp
2014-04-02 21:08:05 +00:00
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 200, answ.code, 'Forging Module did not return 200'
db.eventPollers.getModule oEpTwo.id, ( err, obj ) ->
test.deepEqual obj, oEpTwo, 'Forged Module is not what we expected'
test.done()