public async Task RepeatSendMessage()
        {
            this.RegisterType <BadServerSaltHandler>();

            this.BuildClientSettingsProps();

            const int BadMsgId = 1;
            var       request  = new RequestPing();

            this.Resolve <Mock <ISessionWriter> >()
            .BuildSuccessSave();

            var mRequestService = this.Resolve <Mock <IRequestService> >();

            mRequestService.Setup(rs => rs.GetRequestToReply(BadMsgId))
            .Returns(() => request);

            var requestEncoder = this.Resolve <BadServerSaltHandler>();

            var channel = new EmbeddedChannel(requestEncoder);

            var badServerSalt = new TBadServerSalt
            {
                BadMsgId      = BadMsgId,
                NewServerSalt = Random.NextLong()
            };

            // ---

            channel.WriteInbound(badServerSalt);

            await Task.Delay(500).ConfigureAwait(false);

            // ---

            Assert.Equal(request, channel.ReadOutbound <object>());
        }
        public void BadServerSaltHandle()
        {
            this.RegisterType <BadServerSaltHandler>();

            var mSettings = this.BuildClientSettingsProps();

            var requestEncoder = this.Resolve <BadServerSaltHandler>();

            var channel = new EmbeddedChannel(requestEncoder);

            var badServerSalt = new TBadServerSalt
            {
                NewServerSalt = Random.NextLong()
            };

            // ---

            channel.WriteInbound(badServerSalt);

            // ---

            Assert.Null(channel.ReadOutbound <object>());
            Assert.Equal(BitConverter.GetBytes(badServerSalt.NewServerSalt), mSettings.Object.ClientSession.ServerSalt);
        }