public static void Test_Session_Throws_Null_Arg_OnRequestRecieve_When_MessageParameters_Is_Null() { //arrange UserClientPeerSession session = new UserClientPeerSession(Mock.Of <ILog>(), Mock.Of <INetworkMessageRouterService>(), new Mock <IConnectionDetails>(MockBehavior.Loose).Object, Mock.Of <INetworkMessageSubscriptionService>(), Mock.Of <IDisconnectionServiceHandler>(), Mock.Of <INetworkMessageRouteBackService>(), Mock.Of <IRequestMessageHandlerService <UserClientPeerSession> >()); //assert Assert.Throws <ArgumentNullException>(() => GrabProtectedOnRecieveRequestMethod(session).Invoke(Mock.Of <IRequestMessage>(), null)); }
public static void Test_Session_Does_Process_Encrypted_Messages() { //arrange Mock <IRequestMessageHandlerService <UserClientPeerSession> > handler = new Mock <IRequestMessageHandlerService <UserClientPeerSession> >(MockBehavior.Loose); UserClientPeerSession session = new UserClientPeerSession(Mock.Of <ILog>(), Mock.Of <INetworkMessageRouterService>(), new Mock <IConnectionDetails>(MockBehavior.Loose).Object, Mock.Of <INetworkMessageSubscriptionService>(), Mock.Of <IDisconnectionServiceHandler>(), Mock.Of <INetworkMessageRouteBackService>(), handler.Object); Mock <IMessageParameters> messageParameters = new Mock <IMessageParameters>(); messageParameters.SetupGet(mp => mp.Encrypted).Returns(true); //act //Generate and bind a method to a delegate Action <IRequestMessage, IMessageParameters> method = GrabProtectedOnRecieveRequestMethod(session); method.Invoke(Mock.Of <IRequestMessage>(), messageParameters.Object); //assert //Make sure the message didn't make it to the handler handler.Verify(x => x.TryProcessMessage(It.IsAny <IRequestMessage>(), It.IsAny <IMessageParameters>(), session), Times.Once()); }
public static Action <IRequestMessage, IMessageParameters> GrabProtectedOnRecieveRequestMethod(UserClientPeerSession session) { return(Delegate.CreateDelegate(typeof(Action <IRequestMessage, IMessageParameters>), session, session.GetType().GetMethod("OnReceiveRequest", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public, null, new Type[] { typeof(IRequestMessage), typeof(IMessageParameters) }, null)) as Action <IRequestMessage, IMessageParameters>); }