Modules are now private to user. Copy/Share logic could be added in the future

This commit is contained in:
Dominic Bosch 2014-04-22 00:06:22 +02:00
parent 16411258a8
commit d31e66a701
13 changed files with 186 additions and 239 deletions

View file

@ -135,30 +135,33 @@ Fetches all available modules and return them together with the available functi
@param {function} callback
###
getModules = ( user, oPayload, dbMod, callback ) ->
dbMod.getAvailableModuleIds user.username, ( err, arrNames ) ->
oRes = {}
answReq = () ->
callback
code: 200
message: JSON.stringify oRes
sem = arrNames.length
if sem is 0
answReq()
else
fGetFunctions = ( id ) =>
dbMod.getModule id, ( err, oModule ) =>
if oModule
oRes[id] = JSON.parse oModule.functions
if --sem is 0
answReq()
fGetFunctions id for id in arrNames
fProcessIds = ( userName ) ->
( err, arrNames ) ->
oRes = {}
answReq = () ->
callback
code: 200
message: JSON.stringify oRes
sem = arrNames.length
if sem is 0
answReq()
else
fGetFunctions = ( id ) =>
dbMod.getModule userName, id, ( err, oModule ) =>
if oModule
oRes[id] = JSON.parse oModule.functions
if --sem is 0
answReq()
fGetFunctions id for id in arrNames
dbMod.getAvailableModuleIds user.username, fProcessIds user.username
getModuleParams = ( user, oPayload, dbMod, callback ) ->
answ = hasRequiredParams [ 'id' ], oPayload
if answ.code isnt 200
callback answ
else
dbMod.getModuleParams oPayload.id, ( err, oPayload ) ->
dbMod.getModuleField user.username, oPayload.id, "params", ( err, oPayload ) ->
answ.message = oPayload
callback answ
@ -192,7 +195,7 @@ forgeModule = ( user, oPayload, dbMod, callback ) =>
if oPayload.overwrite
storeModule user, oPayload, dbMod, callback
else
dbMod.getModule oPayload.id, ( err, mod ) =>
dbMod.getModule user.username, oPayload.id, ( err, mod ) =>
if mod
answ.code = 409
answ.message = 'Module name already existing: ' + oPayload.id
@ -213,8 +216,8 @@ storeModule = ( user, oPayload, dbMod, callback ) =>
oPayload.functions = JSON.stringify funcs
oPayload.functionArgs = JSON.stringify cm.funcParams
dbMod.storeModule user.username, oPayload
if oPayload.public is 'true'
dbMod.publish oPayload.id
# if oPayload.public is 'true'
# dbMod.publish oPayload.id
callback answ
storeRule = ( user, oPayload, callback ) =>
@ -278,7 +281,7 @@ commandFunctions =
getModules user, oPayload, db.eventPollers, callback
get_full_event_poller: ( user, oPayload, callback ) ->
db.eventPollers.getModule oPayload.id, ( err, obj ) ->
db.eventPollers.getModule user.username, oPayload.id, ( err, obj ) ->
callback
code: 200
message: JSON.stringify obj
@ -297,7 +300,7 @@ commandFunctions =
if answ.code isnt 200
callback answ
else
db.eventPollers.getModuleField oPayload.id, 'functionArgs', ( err, obj ) ->
db.eventPollers.getModuleField user.username, oPayload.id, 'functionArgs', ( err, obj ) ->
callback
code: 200
message: obj
@ -310,7 +313,7 @@ commandFunctions =
if answ.code isnt 200
callback answ
else
db.eventPollers.deleteModule oPayload.id
db.eventPollers.deleteModule user.username, oPayload.id
callback
code: 200
message: 'OK!'
@ -325,7 +328,7 @@ commandFunctions =
if answ.code isnt 200
callback answ
else
db.actionInvokers.getModule oPayload.id, ( err, obj ) ->
db.actionInvokers.getModule user.username, oPayload.id, ( err, obj ) ->
callback
code: 200
message: JSON.stringify obj
@ -344,7 +347,7 @@ commandFunctions =
if answ.code isnt 200
callback answ
else
db.actionInvokers.getModuleField oPayload.id, 'functionArgs', ( err, obj ) ->
db.actionInvokers.getModuleField user.username, oPayload.id, 'functionArgs', ( err, obj ) ->
callback
code: 200
message: obj
@ -357,7 +360,7 @@ commandFunctions =
if answ.code isnt 200
callback answ
else
db.actionInvokers.deleteModule oPayload.id
db.actionInvokers.deleteModule user.username, oPayload.id
callback
code: 200
message: 'OK!'

View file

@ -145,7 +145,7 @@ updateActionModules = ( updatedRuleId ) =>
fAddIfNewOrNotExisting = ( actionName ) =>
moduleName = (actionName.split ' -> ')[ 0 ]
if not oMyRule.actions[moduleName] or oMyRule.rule.id is updatedRuleId
db.actionInvokers.getModule moduleName, ( err, obj ) =>
db.actionInvokers.getModule userName, moduleName, ( err, obj ) =>
if obj
# we compile the module and pass:
dynmod.compileString obj.data, # code

View file

@ -73,7 +73,7 @@ process.on 'message', ( msg ) ->
fLoadModule = ( msg ) ->
arrName = msg.rule.event.split ' -> '
fAnonymous = () ->
db.eventPollers.getModule arrName[ 0 ], ( err, obj ) ->
db.eventPollers.getModule msg.user, arrName[ 0 ], ( err, obj ) ->
if not obj
log.warn "EP | Strange... no module retrieved: #{ arrName[0] }"
else

View file

@ -219,81 +219,74 @@ class IndexedModules
###
storeModule: ( userId, oModule ) =>
@log.info "DB | (IdxedMods) #{ @setname }.storeModule( #{ userId }, oModule )"
@db.sadd "#{ @setname }s", oModule.id,
replyHandler "sadd '#{ @setname }s' -> '#{ oModule.id }'"
@db.hmset "#{ @setname }:#{ oModule.id }", oModule,
replyHandler "hmset '#{ @setname }:#{ oModule.id }' -> [oModule]"
@linkModule oModule.id, userId
@db.sadd "user:#{ userId }:#{ @setname }s", oModule.id,
replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ oModule.id }"
@db.hmset "user:#{ userId }:#{ @setname }:#{ oModule.id }", oModule,
replyHandler "hmset 'user:#{ userId }:#{ @setname }:#{ oModule.id }' -> [oModule]"
# @linkModule oModule.id, userId
#TODO add testing
linkModule: ( mId, userId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.linkModule( #{ mId }, #{ userId } )"
@db.sadd "#{ @setname }:#{ mId }:users", userId,
replyHandler "sadd '#{ @setname }:#{ mId }:users' -> '#{ userId }'"
@db.sadd "user:#{ userId }:#{ @setname }s", mId,
replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
# #TODO add testing
# linkModule: ( mId, userId ) =>
# @log.info "DB | (IdxedMods) #{ @setname }.linkModule( #{ mId }, #{ userId } )"
# @db.sadd "#{ @setname }:#{ mId }:users", userId,
# replyHandler "sadd '#{ @setname }:#{ mId }:users' -> '#{ userId }'"
# @db.sadd "user:#{ userId }:#{ @setname }s", mId,
# replyHandler "sadd 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
#TODO add testing
unlinkModule: ( mId, userId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.unlinkModule( #{ mId }, #{ userId } )"
@db.srem "#{ @setname }:#{ mId }:users", userId,
replyHandler "srem '#{ @setname }:#{ mId }:users' -> #{ userId }"
@db.srem "user:#{ userId }:#{ @setname }s", mId,
replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
# #TODO add testing
# unlinkModule: ( mId, userId ) =>
# @log.info "DB | (IdxedMods) #{ @setname }.unlinkModule( #{ mId }, #{ userId } )"
# @db.srem "#{ @setname }:#{ mId }:users", userId,
# replyHandler "srem '#{ @setname }:#{ mId }:users' -> #{ userId }"
# @db.srem "user:#{ userId }:#{ @setname }s", mId,
# replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> #{ mId }"
#TODO add testing
publish: ( mId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.publish( #{ mId } )"
@db.sadd "public-#{ @setname }s", mId,
replyHandler "sadd 'public-#{ @setname }s' -> '#{ mId }'"
# #TODO add testing
# publish: ( mId ) =>
# @log.info "DB | (IdxedMods) #{ @setname }.publish( #{ mId } )"
# @db.sadd "public-#{ @setname }s", mId,
# replyHandler "sadd 'public-#{ @setname }s' -> '#{ mId }'"
#TODO add testing
unpublish: ( mId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.unpublish( #{ mId } )"
@db.srem "public-#{ @setname }s", mId,
replyHandler "srem 'public-#{ @setname }s' -> '#{ mId }'"
# #TODO add testing
# unpublish: ( mId ) =>
# @log.info "DB | (IdxedMods) #{ @setname }.unpublish( #{ mId } )"
# @db.srem "public-#{ @setname }s", mId,
# replyHandler "srem 'public-#{ @setname }s' -> '#{ mId }'"
getModule: ( mId, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModule( #{ mId } )"
@db.hgetall "#{ @setname }:#{ mId }", cb
getModule: ( userId, mId, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModule( #{ userId }, #{ mId } )"
@db.hgetall "user:#{ userId }:#{ @setname }:#{ mId }", cb
getModuleField: ( mId, field, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModuleField( #{ mId }, #{ field } )"
@db.hget "#{ @setname }:#{ mId }", field, cb
#TODO add testing
getModuleParams: ( mId, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModuleParams( #{ mId } )"
@db.hget "#{ @setname }:#{ mId }", "params", cb
getModuleField: ( userId, mId, field, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModuleField( #{ userId }, #{ mId }, #{ field } )"
@db.hget "user:#{ userId }:#{ @setname }:#{ mId }", field, cb
#TODO add testing
getAvailableModuleIds: ( userId, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getAvailableModuleIds( #{ userId } )"
@db.sunion "public-#{ @setname }s", "user:#{ userId }:#{ @setname }s", cb
getModuleIds: ( cb ) =>
getModuleIds: ( userId, cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModuleIds()"
@db.smembers "#{ @setname }s", cb
@db.smembers "user:#{ userId }:#{ @setname }s", cb
getModules: ( cb ) =>
@log.info "DB | (IdxedMods) #{ @setname }.getModules()"
getSetRecords "#{ @setname }s", @getModule, cb
# getModules: ( cb ) =>
# @log.info "DB | (IdxedMods) #{ @setname }.getModules()"
# getSetRecords "#{ @setname }s", @getModule, cb
deleteModule: ( mId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.deleteModule( #{ mId } )"
@db.srem "#{ @setname }s", mId,
replyHandler "srem '#{ @setname }s' -> '#{ mId }'"
@db.del "#{ @setname }:#{ mId }",
replyHandler "del '#{ @setname }:#{ mId }'"
@unpublish mId
@db.smembers "#{ @setname }:#{ mId }:users", ( err, obj ) =>
for userId in obj
@unlinkModule mId, userId
@deleteUserParams mId, userId
exports.getUserLinkedRules userId, ( err, obj ) =>
for rule in obj
@getUserArgumentsFunctions userId, rule, mId, ( err, obj ) =>
@deleteUserArguments userId, rule, mId
deleteModule: ( userId, mId ) =>
@log.info "DB | (IdxedMods) #{ @setname }.deleteModule( #{ userId }, #{ mId } )"
@db.srem "user:#{ userId }:#{ @setname }s", mId,
replyHandler "srem 'user:#{ userId }:#{ @setname }s' -> '#{ mId }'"
@db.del "user:#{ userId }:#{ @setname }:#{ mId }",
replyHandler "del 'user:#{ userId }:#{ @setname }:#{ mId }'"
# @unpublish mId
# @unlinkModule mId, userId
@deleteUserParams mId, userId
exports.getUserLinkedRules userId, ( err, obj ) =>
for rule in obj
@getUserArgumentsFunctions userId, rule, mId, ( err, obj ) =>
@deleteUserArguments userId, rule, mId
###
Stores user params for a module. They are expected to be RSA encrypted with helps of
@ -694,6 +687,7 @@ exports.deleteUser = ( userId ) =>
replyHandler "srem 'role:#{ roleId }:users' -> '#{ userId }'"
delRoleUser id for id in obj
@db.del "user:#{ userId }:roles", replyHandler "del 'user:#{ userId }:roles'"
# TODO we also need to delete this user's modules
###
Checks the credentials and on success returns the user object to the

View file

@ -5,8 +5,8 @@
"log": {
"nolog": "false",
"mode": "productive",
"io-level": "fatal",
"file-level": "warn",
"io-level": "info",
"file-level": "info",
"file-path": "logs/server.log"
},
"webhooks": [

View file

@ -173,39 +173,43 @@ Components Manager
*/
getModules = function(user, oPayload, dbMod, callback) {
return dbMod.getAvailableModuleIds(user.username, function(err, arrNames) {
var answReq, fGetFunctions, id, oRes, sem, _i, _len, _results;
oRes = {};
answReq = function() {
return callback({
code: 200,
message: JSON.stringify(oRes)
});
};
sem = arrNames.length;
if (sem === 0) {
return answReq();
} else {
fGetFunctions = (function(_this) {
return function(id) {
return dbMod.getModule(id, function(err, oModule) {
if (oModule) {
oRes[id] = JSON.parse(oModule.functions);
}
if (--sem === 0) {
return answReq();
}
});
};
})(this);
_results = [];
for (_i = 0, _len = arrNames.length; _i < _len; _i++) {
id = arrNames[_i];
_results.push(fGetFunctions(id));
var fProcessIds;
fProcessIds = function(userName) {
return function(err, arrNames) {
var answReq, fGetFunctions, id, oRes, sem, _i, _len, _results;
oRes = {};
answReq = function() {
return callback({
code: 200,
message: JSON.stringify(oRes)
});
};
sem = arrNames.length;
if (sem === 0) {
return answReq();
} else {
fGetFunctions = (function(_this) {
return function(id) {
return dbMod.getModule(userName, id, function(err, oModule) {
if (oModule) {
oRes[id] = JSON.parse(oModule.functions);
}
if (--sem === 0) {
return answReq();
}
});
};
})(this);
_results = [];
for (_i = 0, _len = arrNames.length; _i < _len; _i++) {
id = arrNames[_i];
_results.push(fGetFunctions(id));
}
return _results;
}
return _results;
}
});
};
};
return dbMod.getAvailableModuleIds(user.username, fProcessIds(user.username));
};
getModuleParams = function(user, oPayload, dbMod, callback) {
@ -214,7 +218,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
return dbMod.getModuleParams(oPayload.id, function(err, oPayload) {
return dbMod.getModuleField(user.username, oPayload.id, "params", function(err, oPayload) {
answ.message = oPayload;
return callback(answ);
});
@ -265,7 +269,7 @@ Components Manager
if (oPayload.overwrite) {
return storeModule(user, oPayload, dbMod, callback);
} else {
return dbMod.getModule(oPayload.id, function(err, mod) {
return dbMod.getModule(user.username, oPayload.id, function(err, mod) {
if (mod) {
answ.code = 409;
answ.message = 'Module name already existing: ' + oPayload.id;
@ -298,9 +302,6 @@ Components Manager
oPayload.functions = JSON.stringify(funcs);
oPayload.functionArgs = JSON.stringify(cm.funcParams);
dbMod.storeModule(user.username, oPayload);
if (oPayload["public"] === 'true') {
dbMod.publish(oPayload.id);
}
}
return callback(answ);
});
@ -367,7 +368,7 @@ Components Manager
return getModules(user, oPayload, db.eventPollers, callback);
},
get_full_event_poller: function(user, oPayload, callback) {
return db.eventPollers.getModule(oPayload.id, function(err, obj) {
return db.eventPollers.getModule(user.username, oPayload.id, function(err, obj) {
return callback({
code: 200,
message: JSON.stringify(obj)
@ -389,7 +390,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
return db.eventPollers.getModuleField(oPayload.id, 'functionArgs', function(err, obj) {
return db.eventPollers.getModuleField(user.username, oPayload.id, 'functionArgs', function(err, obj) {
return callback({
code: 200,
message: obj
@ -406,7 +407,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
db.eventPollers.deleteModule(oPayload.id);
db.eventPollers.deleteModule(user.username, oPayload.id);
return callback({
code: 200,
message: 'OK!'
@ -422,7 +423,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
return db.actionInvokers.getModule(oPayload.id, function(err, obj) {
return db.actionInvokers.getModule(user.username, oPayload.id, function(err, obj) {
return callback({
code: 200,
message: JSON.stringify(obj)
@ -445,7 +446,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
return db.actionInvokers.getModuleField(oPayload.id, 'functionArgs', function(err, obj) {
return db.actionInvokers.getModuleField(user.username, oPayload.id, 'functionArgs', function(err, obj) {
return callback({
code: 200,
message: obj
@ -462,7 +463,7 @@ Components Manager
if (answ.code !== 200) {
return callback(answ);
} else {
db.actionInvokers.deleteModule(oPayload.id);
db.actionInvokers.deleteModule(user.username, oPayload.id);
return callback({
code: 200,
message: 'OK!'

View file

@ -166,7 +166,7 @@ Engine
var moduleName;
moduleName = (actionName.split(' -> '))[0];
if (!oMyRule.actions[moduleName] || oMyRule.rule.id === updatedRuleId) {
return db.actionInvokers.getModule(moduleName, function(err, obj) {
return db.actionInvokers.getModule(userName, moduleName, function(err, obj) {
if (obj) {
return dynmod.compileString(obj.data, userName, oMyRule.rule.id, moduleName, obj.lang, db.actionInvokers, function(result) {
if (result.answ.code === 200) {

View file

@ -79,7 +79,7 @@ Dynamic Modules
var arrName, fAnonymous;
arrName = msg.rule.event.split(' -> ');
fAnonymous = function() {
return db.eventPollers.getModule(arrName[0], function(err, obj) {
return db.eventPollers.getModule(msg.user, arrName[0], function(err, obj) {
if (!obj) {
return log.warn("EP | Strange... no module retrieved: " + arrName[0]);
} else {

View file

@ -271,16 +271,10 @@ Persistence
this.getUserParams = __bind(this.getUserParams, this);
this.storeUserParams = __bind(this.storeUserParams, this);
this.deleteModule = __bind(this.deleteModule, this);
this.getModules = __bind(this.getModules, this);
this.getModuleIds = __bind(this.getModuleIds, this);
this.getAvailableModuleIds = __bind(this.getAvailableModuleIds, this);
this.getModuleParams = __bind(this.getModuleParams, this);
this.getModuleField = __bind(this.getModuleField, this);
this.getModule = __bind(this.getModule, this);
this.unpublish = __bind(this.unpublish, this);
this.publish = __bind(this.publish, this);
this.unlinkModule = __bind(this.unlinkModule, this);
this.linkModule = __bind(this.linkModule, this);
this.storeModule = __bind(this.storeModule, this);
this.log.info("DB | (IdxedMods) Instantiated indexed modules for '" + this.setname + "'");
}
@ -301,46 +295,18 @@ Persistence
IndexedModules.prototype.storeModule = function(userId, oModule) {
this.log.info("DB | (IdxedMods) " + this.setname + ".storeModule( " + userId + ", oModule )");
this.db.sadd("" + this.setname + "s", oModule.id, replyHandler("sadd '" + this.setname + "s' -> '" + oModule.id + "'"));
this.db.hmset("" + this.setname + ":" + oModule.id, oModule, replyHandler("hmset '" + this.setname + ":" + oModule.id + "' -> [oModule]"));
return this.linkModule(oModule.id, userId);
this.db.sadd("user:" + userId + ":" + this.setname + "s", oModule.id, replyHandler("sadd 'user:" + userId + ":" + this.setname + "s' -> " + oModule.id));
return this.db.hmset("user:" + userId + ":" + this.setname + ":" + oModule.id, oModule, replyHandler("hmset 'user:" + userId + ":" + this.setname + ":" + oModule.id + "' -> [oModule]"));
};
IndexedModules.prototype.linkModule = function(mId, userId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".linkModule( " + mId + ", " + userId + " )");
this.db.sadd("" + this.setname + ":" + mId + ":users", userId, replyHandler("sadd '" + this.setname + ":" + mId + ":users' -> '" + userId + "'"));
return this.db.sadd("user:" + userId + ":" + this.setname + "s", mId, replyHandler("sadd 'user:" + userId + ":" + this.setname + "s' -> " + mId));
IndexedModules.prototype.getModule = function(userId, mId, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModule( " + userId + ", " + mId + " )");
return this.db.hgetall("user:" + userId + ":" + this.setname + ":" + mId, cb);
};
IndexedModules.prototype.unlinkModule = function(mId, userId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".unlinkModule( " + mId + ", " + userId + " )");
this.db.srem("" + this.setname + ":" + mId + ":users", userId, replyHandler("srem '" + this.setname + ":" + mId + ":users' -> " + userId));
return this.db.srem("user:" + userId + ":" + this.setname + "s", mId, replyHandler("srem 'user:" + userId + ":" + this.setname + "s' -> " + mId));
};
IndexedModules.prototype.publish = function(mId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".publish( " + mId + " )");
return this.db.sadd("public-" + this.setname + "s", mId, replyHandler("sadd 'public-" + this.setname + "s' -> '" + mId + "'"));
};
IndexedModules.prototype.unpublish = function(mId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".unpublish( " + mId + " )");
return this.db.srem("public-" + this.setname + "s", mId, replyHandler("srem 'public-" + this.setname + "s' -> '" + mId + "'"));
};
IndexedModules.prototype.getModule = function(mId, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModule( " + mId + " )");
return this.db.hgetall("" + this.setname + ":" + mId, cb);
};
IndexedModules.prototype.getModuleField = function(mId, field, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleField( " + mId + ", " + field + " )");
return this.db.hget("" + this.setname + ":" + mId, field, cb);
};
IndexedModules.prototype.getModuleParams = function(mId, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleParams( " + mId + " )");
return this.db.hget("" + this.setname + ":" + mId, "params", cb);
IndexedModules.prototype.getModuleField = function(userId, mId, field, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleField( " + userId + ", " + mId + ", " + field + " )");
return this.db.hget("user:" + userId + ":" + this.setname + ":" + mId, field, cb);
};
IndexedModules.prototype.getAvailableModuleIds = function(userId, cb) {
@ -348,39 +314,24 @@ Persistence
return this.db.sunion("public-" + this.setname + "s", "user:" + userId + ":" + this.setname + "s", cb);
};
IndexedModules.prototype.getModuleIds = function(cb) {
IndexedModules.prototype.getModuleIds = function(userId, cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModuleIds()");
return this.db.smembers("" + this.setname + "s", cb);
return this.db.smembers("user:" + userId + ":" + this.setname + "s", cb);
};
IndexedModules.prototype.getModules = function(cb) {
this.log.info("DB | (IdxedMods) " + this.setname + ".getModules()");
return getSetRecords("" + this.setname + "s", this.getModule, cb);
};
IndexedModules.prototype.deleteModule = function(mId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".deleteModule( " + mId + " )");
this.db.srem("" + this.setname + "s", mId, replyHandler("srem '" + this.setname + "s' -> '" + mId + "'"));
this.db.del("" + this.setname + ":" + mId, replyHandler("del '" + this.setname + ":" + mId + "'"));
this.unpublish(mId);
return this.db.smembers("" + this.setname + ":" + mId + ":users", (function(_this) {
IndexedModules.prototype.deleteModule = function(userId, mId) {
this.log.info("DB | (IdxedMods) " + this.setname + ".deleteModule( " + userId + ", " + mId + " )");
this.db.srem("user:" + userId + ":" + this.setname + "s", mId, replyHandler("srem 'user:" + userId + ":" + this.setname + "s' -> '" + mId + "'"));
this.db.del("user:" + userId + ":" + this.setname + ":" + mId, replyHandler("del 'user:" + userId + ":" + this.setname + ":" + mId + "'"));
this.deleteUserParams(mId, userId);
return exports.getUserLinkedRules(userId, (function(_this) {
return function(err, obj) {
var userId, _i, _len, _results;
var rule, _i, _len, _results;
_results = [];
for (_i = 0, _len = obj.length; _i < _len; _i++) {
userId = obj[_i];
_this.unlinkModule(mId, userId);
_this.deleteUserParams(mId, userId);
_results.push(exports.getUserLinkedRules(userId, function(err, obj) {
var rule, _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = obj.length; _j < _len1; _j++) {
rule = obj[_j];
_results1.push(_this.getUserArgumentsFunctions(userId, rule, mId, function(err, obj) {
return _this.deleteUserArguments(userId, rule, mId);
}));
}
return _results1;
rule = obj[_i];
_results.push(_this.getUserArgumentsFunctions(userId, rule, mId, function(err, obj) {
return _this.deleteUserArguments(userId, rule, mId);
}));
}
return _results;

View file

@ -59,11 +59,11 @@ exports.tearDown = ( cb ) ->
db.deleteRule oRuleOne.id
db.deleteRule oRuleTwo.id
db.deleteRule oRuleThree.id
db.eventPollers.deleteModule oEpOne.id
db.eventPollers.deleteModule oEpTwo.id
db.actionInvokers.deleteModule oAiOne.id
db.actionInvokers.deleteModule oAiTwo.id
db.actionInvokers.deleteModule oAiThree.id
db.eventPollers.deleteModule oUser.username, oEpOne.id
db.eventPollers.deleteModule oUser.username, oEpTwo.id
db.actionInvokers.deleteModule oUser.username, oAiOne.id
db.actionInvokers.deleteModule oUser.username, oAiTwo.id
db.actionInvokers.deleteModule oUser.username, oAiThree.id
db.actionInvokers.deleteUserParams oAiThree.id, oUser.username
setTimeout cb, 100
@ -186,7 +186,7 @@ exports.moduleHandling =
cm.processRequest oUser, request, ( answ ) =>
test.strictEqual 200, answ.code, 'Forging Module did not return 200'
db.actionInvokers.getModule oAiTwo.id, ( err, obj ) ->
db.actionInvokers.getModule oUser.username, oAiTwo.id, ( err, obj ) ->
test.deepEqual obj, oAiTwo, 'Forged Module is not what we expected'
test.done()

View file

@ -42,7 +42,7 @@ exports.setUp = ( cb ) ->
exports.tearDown = ( cb ) ->
db.deleteRule oRule.id
db.actionInvokers.deleteModule oAi.id
db.actionInvokers.deleteModule oUser.username, oAi.id
engine.shutDown()
setTimeout cb, 200

View file

@ -36,8 +36,8 @@ exports.setUp = ( cb ) ->
exports.tearDown = ( cb ) ->
db.deleteRule oRuleOne.id
db.actionInvokers.deleteModule oAiOne.id
db.actionInvokers.deleteModule oAiTwo.id
db.actionInvokers.deleteModule oUser.username, oAiOne.id
db.actionInvokers.deleteModule oUser.username, oAiTwo.id
# TODO if user is deleted all his modules should be unlinked and deleted
db.deleteUser oUser.username

View file

@ -146,34 +146,32 @@ exports.EventQueue =
exports.EventPoller =
tearDown: ( cb ) ->
# db.eventPollers.unlinkModule oEpOne.id, oUser.username
db.eventPollers.deleteModule oEpOne.id
# db.eventPollers.unlinkModule oEpTwo.id, oUser.username
db.eventPollers.deleteModule oEpTwo.id
db.eventPollers.deleteModule oUser.username, oEpOne.id
db.eventPollers.deleteModule oUser.username, oEpTwo.id
cb()
testCreateAndRead: ( test ) ->
test.expect 3
test.expect 2
db.eventPollers.storeModule oUser.username, oEpOne
# test that the ID shows up in the set
db.eventPollers.getModuleIds ( err , obj ) ->
db.eventPollers.getModuleIds oUser.username, ( err , obj ) ->
test.ok oEpOne.id in obj,
'Expected key not in event-pollers set'
# the retrieved object really is the one we expected
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
test.deepEqual obj, oEpOne,
'Retrieved Event Poller is not what we expected'
# Ensure the event poller is in the list of all existing ones
db.eventPollers.getModules ( err , obj ) ->
test.deepEqual oEpOne, obj[oEpOne.id],
'Event Poller ist not in result set'
test.done()
# # Ensure the event poller is in the list of all existing ones
# db.eventPollers.getModules oUser.username, ( err , obj ) ->
# test.deepEqual oEpOne, obj[oEpOne.id],
# 'Event Poller ist not in result set'
test.done()
testUpdate: ( test ) ->
test.expect 2
test.expect 1
oTmp = {}
oTmp[key] = val for key, val of oEpOne
@ -184,16 +182,16 @@ exports.EventPoller =
db.eventPollers.storeModule oUser.username, oTmp
# the retrieved object really is the one we expected
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
test.deepEqual obj, oTmp,
'Retrieved Event Poller is not what we expected'
# Ensure the event poller is in the list of all existing ones
db.eventPollers.getModules ( err , obj ) ->
test.deepEqual oTmp, obj[oEpOne.id],
'Event Poller ist not in result set'
# # Ensure the event poller is in the list of all existing ones
# db.eventPollers.getModules oUser.username, ( err , obj ) ->
# test.deepEqual oTmp, obj[oEpOne.id],
# 'Event Poller ist not in result set'
test.done()
test.done()
testDelete: ( test ) ->
test.expect 2
@ -202,13 +200,13 @@ exports.EventPoller =
db.eventPollers.storeModule oUser.username, oEpOne
# Ensure the event poller has been deleted
db.eventPollers.deleteModule oEpOne.id
db.eventPollers.getModule oEpOne.id, ( err , obj ) ->
db.eventPollers.deleteModule oUser.username, oEpOne.id
db.eventPollers.getModule oUser.username, oEpOne.id, ( err , obj ) ->
test.strictEqual obj, null,
'Event Poller still exists'
# Ensure the ID has been removed from the set
db.eventPollers.getModuleIds ( err , obj ) ->
db.eventPollers.getModuleIds oUser.username, ( err , obj ) ->
test.ok oEpOne.id not in obj,
'Event Poller key still exists in set'
@ -232,11 +230,11 @@ exports.EventPoller =
db.eventPollers.storeModule oUser.username, oEpOne
db.eventPollers.storeModule oUser.username, oEpTwo
db.eventPollers.getModuleIds ( err, obj ) ->
db.eventPollers.getModuleIds oUser.username, ( err, obj ) ->
test.ok oEpOne.id in obj and oEpTwo.id in obj,
'Not all event poller Ids in set'
db.eventPollers.getModule oEpOne.id, fCheckInvoker oEpOne.id, oEpOne
db.eventPollers.getModule oEpTwo.id, fCheckInvoker oEpTwo.id, oEpTwo
db.eventPollers.getModule oUser.username, oEpOne.id, fCheckInvoker oEpOne.id, oEpOne
db.eventPollers.getModule oUser.username, oEpTwo.id, fCheckInvoker oEpTwo.id, oEpTwo
###