public void Succeed() { string RequestConvId = "5-562"; string ClientIp = "192.168.1.31"; int ClientPort = 5682; var testStock = new Stock("TST", "Test Stock"); ValuatedStock[] vStock = { new ValuatedStock(("1984-02-22,1,2,3,100,5").Split(','), testStock) }; MarketDay day = new MarketDay("day1", vStock); var RequestMessage = new StockPriceUpdate(day) { ConversationID = RequestConvId, }; Envelope Request = new Envelope(RequestMessage, ClientIp, ClientPort); var localConv = ConversationManager.GetConversation(RequestConvId); Assert.IsNull(localConv); Assert.IsNull(mock); ConversationManager.ProcessIncomingMessage(Request); localConv = ConversationManager.GetConversation(RequestConvId); Assert.IsNotNull(localConv); Assert.IsTrue(localConv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); }
private static Conversation HandleStockPriceUpdate(Envelope e) { Conversation conv = null; StockPriceUpdate m = e.Contents as StockPriceUpdate; var sigServ = new SignatureService(); var bits = Convert.FromBase64String(m.SerializedStockList); var StocksList = sigServ.Deserialize <MarketDay>(bits); if (!sigServ.VerifySignature(StocksList, m.StockListSignature)) { Log.Error("Stock Price Update signature validation failed. Ignoring message."); } else { LeaderboardManager.Market = StocksList; conv = new StockUpdateConversation(m.ConversationID); conv.SetInitialState(new ProcessStockUpdateState(e, conv)); //Send updated leaderboard to clients. Task.Run(() => { foreach (var clientIp in ClientManager.Clients.Keys) { var stockUpdateConv = new LeaderBoardUpdateRequestConversation(Config.GetInt(Config.BROKER_PROCESS_NUM)); stockUpdateConv.SetInitialState(new LeaderboardSendUpdateState(clientIp, stockUpdateConv, null)); ConversationManager.AddConversation(stockUpdateConv); } }); } return(conv); }
public void InheritsMessageTest() { var stockPriceUpdate = new StockPriceUpdate(); Assert.AreEqual(stockPriceUpdate.SourceID, 0); Assert.IsNull(stockPriceUpdate.ConversationID); Assert.IsNull(stockPriceUpdate.MessageID); }
public void DefaultConstructorTest() { var stockPriceUpdate = new StockPriceUpdate(); var StocksList = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); Assert.IsNull(StocksList.TradedCompanies); Assert.IsNull(StocksList.Date); }
public void LoadedConstructorTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-20"; var marketDay = new MarketDay(date, stocks); var stockPriceUpdate = new StockPriceUpdate(marketDay); var StocksList = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); Assert.AreEqual(3, StocksList.TradedCompanies.Count); Assert.AreEqual(StocksList.Date, date); }
public void ValidSignatureTest() { var key = SignatureService.GenerateKeys(1024); SignatureService.PublicKey = (RsaKeyParameters)(key.Public); SignatureService.PrivateKey = (RsaKeyParameters)(key.Private); var sigServe = new SignatureService(); var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-29"; var marketDay = new MarketDay(date, stocks); var marketDaySig = sigServe.GetSignature(marketDay); var stockPriceUpdate = new StockPriceUpdate(marketDay) { StockListSignature = marketDaySig }; var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig); Assert.IsTrue(isOriginalValid); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var StocksList_original = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); var StocksList_deserialized = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var isDeserializedValid = sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature); Assert.IsTrue(isDeserializedValid); Assert.AreEqual(StocksList_original.TradedCompanies.Count, StocksList_deserialized.TradedCompanies.Count); Assert.AreEqual(StocksList_original.Date, StocksList_deserialized.Date); Assert.IsTrue(sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature)); }
public void SerializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-20"; var marketDay = new MarketDay(date, stocks); var stockPriceUpdate = new StockPriceUpdate(marketDay); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; var StocksList_original = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); var StocksList_deserialized = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); Assert.AreEqual(StocksList_original.TradedCompanies.Count, StocksList_deserialized.TradedCompanies.Count); Assert.AreEqual(StocksList_original.Date, StocksList_deserialized.Date); }
public void InvalidSignatureTest() { var key = SignatureService.GenerateKeys(1024); SignatureService.PublicKey = (RsaKeyParameters)(key.Public); SignatureService.PrivateKey = (RsaKeyParameters)(key.Private); var sigServe = new SignatureService(); var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-29"; var marketDay = new MarketDay(date, stocks); var marketDaySig = sigServe.GetSignature(marketDay); var stockPriceUpdate = new StockPriceUpdate(marketDay) { StockListSignature = marketDaySig }; var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig); Assert.IsTrue(isOriginalValid); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; //"currupt" signature deserializedMessage.StockListSignature = deserializedMessage.StockListSignature.Replace(deserializedMessage.StockListSignature.Substring(0, 5), "fffff"); MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var isDeserializedValid = sigServe.VerifySignature(deserializedDay, deserializedMessage.StockListSignature); Assert.IsFalse(isDeserializedValid); }