def echo(self, msg): if msg.getSpeechAct() != "experiment": #Not our hack - just echo back resp = self.makeResponse(msg, None, INFORM_ACT) resp.setVerb("HOLLA BACK") return resp #Special, hacky case: create an experiment context dt = datetime.now().isoformat() #Look by ID and name (we're expecting name) ctx = UserContext.findContext("DemoExperiment") if not ctx: ctx = UserContext(name="DemoExperiment") ctx.setPrefValue("ContextCreated", dt) ctx.setPrefValue("ContextUpdated", dt) #Add all users (and set an experimental context variable for them) for user in UserData.objects(): user.setPrefValue(ctx.getName(), "UserAdded", dt) user.save() ctx.addUser(user.getId()) ctx.save() resp = self.makeResponse(msg, None, INFORM_ACT) resp.setVerb("HOLLA BACK") resp.setSpeechAct(resp.getSpeechAct() + " => Created context " + ctx.getId()) return resp
def testReadWriteRetrieveUsers(self): u1 = UserData.onLogin("user1", "User One", "*****@*****.**", "testing") u2 = UserData.onLogin("user2", "User Two", "*****@*****.**", "testing") self.assertNotEquals(u1.getId(), u2.getId()) ctx = UserContext("WithUsers", [u1.getId(), u2.getId()], { "u1Name": u1.getUserName(), "u2Name": u2.getUserName() }) self.assertReadWrite(ctx) #If read/write succeeded, check the indexes self.assertEquals([ctx], UserContext.objects(users=u1.getId())) self.assertEquals([ctx], UserContext.objects(users=u2.getId())) self.assertEquals([], UserContext.objects(users='notAPerson')) self.assertEquals([ctx], UserContext.objects(name='WithUsers')) self.assertEquals([], UserContext.objects(name='notAContext')) idList = sorted([u1.getId(), u2.getId()]) #Test users changes that shouldn't affect state copy = UserContext.read(ctx.getId()) self.assertSerialEquals(ctx, copy) ctx.addUser(u1.getId()) ctx.removeUser("user3") self.assertSerialEquals(ctx, copy) self.assertEquals(idList, copy.getUsers()) #Check user DB read users = ctx.readDBUsers() self.assertEquals(idList, sorted([u.getId() for u in users])) #What about empty users (via removal and then when hitting the DB) ctx.removeUser(u1.getId()) ctx.removeUser(u2.getId()) self.assertEquals([], ctx.getUsers()) self.assertEquals([], ctx.readDBUsers())
def testReadWriteRetrieveUsers(self): u1 = UserData.onLogin("user1", "User One", "*****@*****.**", "testing") u2 = UserData.onLogin("user2", "User Two", "*****@*****.**", "testing") self.assertNotEquals(u1.getId(), u2.getId()) ctx = UserContext( "WithUsers", [u1.getId(), u2.getId()], {"u1Name": u1.getUserName(), "u2Name": u2.getUserName()} ) self.assertReadWrite(ctx) #If read/write succeeded, check the indexes self.assertEquals([ctx], UserContext.objects(users=u1.getId())) self.assertEquals([ctx], UserContext.objects(users=u2.getId())) self.assertEquals([], UserContext.objects(users='notAPerson')) self.assertEquals([ctx], UserContext.objects(name='WithUsers')) self.assertEquals([], UserContext.objects(name='notAContext')) idList = sorted([u1.getId(), u2.getId()]) #Test users changes that shouldn't affect state copy = UserContext.read(ctx.getId()) self.assertSerialEquals(ctx, copy) ctx.addUser(u1.getId()) ctx.removeUser("user3") self.assertSerialEquals(ctx, copy) self.assertEquals(idList, copy.getUsers()) #Check user DB read users = ctx.readDBUsers() self.assertEquals(idList, sorted([u.getId() for u in users])) #What about empty users (via removal and then when hitting the DB) ctx.removeUser(u1.getId()) ctx.removeUser(u2.getId()) self.assertEquals([], ctx.getUsers()) self.assertEquals([], ctx.readDBUsers())