I figured a way to see how to implement security. When the Moderator creates a table,the factory does not return a Table – but a combination of Table and ModeratorKey. Now the Moderator must maintain his ModeratorKey .The function that boots a participant requires passing this ModeratorKey – and,if it is correct,it boots the participant. The codes are the following:
[TestMethod] public void UseCase3BootTemporary() { var td = createdTable(); td.Table.BootParticipant(td.ModeratorKey,newParticipantName); Assert.AreEqual(0,td.Table.Participants.Count); td.Table.AddParticipant(newParticipantName); Assert.AreEqual(1,td.Table.Participants.Count); } [TestMethod] public void UseCase3BootPermanently() { var td = createdTable(); td.Table.BootParticipant(td.ModeratorKey,newParticipantName,true); Assert.AreEqual(0,td.Table.Participants.Count); try { td.Table.AddParticipant(newParticipantName); } catch (PPBannedUserException) { return;//expecting this exception } Assert.IsTrue(false,"the add participant should be throwing an error"); }
Now,as you can see,anyone could boot a participant from the table – with the condition,of course,to know the Moderator key.
Next time we will implement cards.
Leave a Reply