public void MultiAccessClientComunicarManagerSobreFimEdicaoTarefa()
        {
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8086;
            TcpListener  servidor   = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();

            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                EnderecoIp = ipServidor, Porta = porta, Login = "******", OidCronograma = "C1"
            };

            cliente.AoServidorDesconectar += (mensagemDto) => { };
            cliente.Conectar();

            TcpClient conexaoTcpEmServidor = servidor.AcceptTcpClient();

            //efetuando a leitura da primeira mensagem do cliente mensagemd e autenticação
            TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);
            ///Comunicando o fim da tarefa
            cliente.RnComunicarFimEdicaoTarefa("T2");
            string mensagemJson = TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);

            mensagemJson = TcpUtil.RemoverStringProtecaoDeIntegridade(mensagemJson);
            MensagemDto mensagem = Mensagem.DeserializarMensagemDto(mensagemJson);

            Assert.AreEqual(cliente.OidCronograma, (string)mensagem.Propriedades[Constantes.OIDCRONOGRAMA], "Deveria ser o mesmo cronograma em que esta conectado o client");
            Assert.IsTrue(mensagem.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "Deveria conter o login do colaborador que esta editou a tarefa");
            Assert.AreEqual("T2", (string)mensagem.Propriedades[Constantes.OIDTAREFA], "Deveria ser a mesma tarefa comunicada na mensagem de fim de edição");
            cliente.RnDesconectar();
            servidor.Stop();
        }
        public void RnComunicarFimEdicaoTarefaTest()
        {
            int                      contador = 0;
            TcpAdapterPool           pool     = new TcpAdapterPool();
            WexMultiAccessClientMock cliente  = new WexMultiAccessClientMock()
            {
                EnderecoIp          = ipServidor,
                OidCronograma       = "C1",
                Porta               = porta,
                Login               = "******",
                TcpAdapterStubAtivo = true
            };

            WexMultiAccessClientMock cliente2 = new WexMultiAccessClientMock()
            {
                EnderecoIp          = ipServidor,
                OidCronograma       = "C1",
                Porta               = porta,
                Login               = "******",
                TcpAdapterStubAtivo = true
            };

            cliente.Conectar();
            pool.AceitarConexao(cliente);

            cliente2.Conectar();
            pool.AceitarConexao(cliente2);

            cliente2.AoServidorDesconectar += (mensagem) => { };
            cliente2.AoSerFinalizadaEdicaoTarefaPorOutroUsuario += (mensagem) => { contador++; };
            cliente.AoServidorDesconectar += (mensagem) => { };



            cliente.RnComunicarFimEdicaoTarefa("T1");
            ControleDeEsperaUtil.AguardarAte(() => { return(contador == 1); });

            MensagemDto mensagemDto = cliente2.MensagensRecebidas.FirstOrDefault(o => o.Tipo.Equals(CsTipoMensagem.EdicaoTarefaFinalizada));

            Assert.AreEqual(CsTipoMensagem.EdicaoTarefaFinalizada, mensagemDto.Tipo, "A mensagem recebida veio com tipo diferente do original");
            Assert.IsTrue(mensagemDto.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "Deveria possuir joao na sua lista de propriedades");
            Assert.AreEqual("T1", (string)mensagemDto.Propriedades[Constantes.OIDTAREFA]);
            Assert.AreEqual("C1", (string)mensagemDto.Propriedades[OIDCRONOGRAMA]);
        }