public void RnProcessarEventosFinalizarEdicaoTarefa() { int contador = 0; WexMultiAccessClientMock cliente = new WexMultiAccessClientMock() { TcpAdapterStubAtivo = true }; TcpAdapterPool pool = new TcpAdapterPool(); #region Preenchendo informações do cliente cliente.EnderecoIp = ipServidor; cliente.OidCronograma = "C1"; cliente.Porta = porta; cliente.Login = "******"; cliente.Conectar(); pool.AceitarConexao(cliente); cliente.AoSerFinalizadaEdicaoTarefaPorOutroUsuario += (mensagem) => { contador++; }; cliente.AoServidorDesconectar += (mensagemDto) => { }; #endregion //Criando a mensagem de fim de edição de uma tarefa por outro colaborador MensagemDto mensagemFimDeEdicao = Mensagem.RnCriarMensagemFinalizarEdicaoTarefa("T1", "Marcos", "C1"); string mensagemJson = JsonConvert.SerializeObject(mensagemFimDeEdicao); mensagemJson = TcpUtil.AdicionarStringProtecaoDeIntegridade(mensagemJson); pool.EnviarMensagemPara(cliente, mensagemJson); ControleDeEsperaUtil.AguardarAte(() => { return(contador == 1); }); Assert.AreEqual(1, contador, "Deveria ter sido disparado o evento AoEdicaoTarefaSerRecusada"); cliente.RnDesconectar(); }
public void RnProcessarEventosReceberMensagensComStringDeProtecao() { int contador = 0; WexMultiAccessClientMock cliente = new WexMultiAccessClientMock() { Porta = porta, EnderecoIp = ipServidor, Login = "******", OidCronograma = "C1", TcpAdapterStubAtivo = true }; TcpAdapterPool pool = new TcpAdapterPool(); // mensagemDto que serão preenchidas no disparo dos eventos do client MensagemDto mensagemAutenticacaoEsperada = new MensagemDto(); MensagemDto mensagemNovaTarefaCriadaEsperada = new MensagemDto(); MensagemDto mensagemInicioEdicaoTarefaCriada = new MensagemDto(); //eventos que deverão preencher as mensagensDto anteriores para comparação posterior cliente.AoSerAutenticadoComSucesso += (mensagem) => { contador++; mensagemAutenticacaoEsperada = mensagem; }; cliente.AoSerCriadaNovaTarefa += (mensagem) => { contador++; mensagemNovaTarefaCriadaEsperada = mensagem; }; cliente.AoIniciarEdicaoTarefa += (mensagem) => { contador++; mensagemInicioEdicaoTarefaCriada = mensagem; }; cliente.AoServidorDesconectar += (mensagemDto) => { }; cliente.Conectar(); pool.AceitarConexao(cliente); //dicionário de tarefas impactadas Dictionary <string, Int16> tarefasImpactadas = new Dictionary <string, short>(); tarefasImpactadas.Add("T2", 1); tarefasImpactadas.Add("T3", 2); tarefasImpactadas.Add("T4", 3); tarefasImpactadas.Add("T5", 4); //mensagens que serão comunicadas ao client e deverão ser recebidas com sucesso no client MensagemDto autenticacaoEnviada, novaTarefaCriadaEnviada, inicioEdicaoTarefaEnviada; //criando mensagem de conexão aceita e retornando a mensagem ao client autenticacaoEnviada = Mensagem.RnCriarMensagemConexaoEfetuadaComSucesso(new string[] { "Joao", "Pedro" }, "C1", null); string json = JsonConvert.SerializeObject(autenticacaoEnviada); json = TcpUtil.AdicionarStringProtecaoDeIntegridade(json); //criando mensagem de inicio de edição de uma tarefa e comunicando ao client inicioEdicaoTarefaEnviada = Mensagem.RnCriarMensagemInicioEdicaoTarefa("T1", "Joao", "C1"); string json2 = JsonConvert.SerializeObject(inicioEdicaoTarefaEnviada); json2 = TcpUtil.AdicionarStringProtecaoDeIntegridade(json2); DateUtil.CurrentDateTime = DateTime.Now; //criando mensagem de criação de uma nova tarefa novaTarefaCriadaEnviada = Mensagem.RnCriarMensagemNovaTarefaCriada("T2", "Gabriel", "C2", tarefasImpactadas, DateUtil.CurrentDateTime); string json3 = JsonConvert.SerializeObject(novaTarefaCriadaEnviada); json3 = TcpUtil.AdicionarStringProtecaoDeIntegridade(json3); //unindo as mensagens em uma unica para testar o envio e o recebimento de mensagens coladas json = json + json2 + json3; pool.EnviarMensagemPara(cliente, json); //aguardar até que os 3 eventos do client sejam disparados ao receber e tratar as mensagens enviadas ControleDeEsperaUtil.AguardarAte(() => { return(contador == 3); }); Assert.AreEqual(3, contador, "Deveria ter contado 3 pois foram é a quantidade de mensagens acumuladas no tcp"); //asserts para a mensagem de autenticação Assert.AreEqual(mensagemAutenticacaoEsperada.Tipo, autenticacaoEnviada.Tipo, "A mensagem recebida de autenticação deveria ser do mesmo tipo"); Assert.AreEqual((string)mensagemAutenticacaoEsperada.Propriedades[Constantes.OIDCRONOGRAMA], (string)autenticacaoEnviada.Propriedades["oidCronograma"], "Deveria possuir o mesmo" + " cronograma nas mensagens de autenticação"); CollectionAssert.AreEquivalent((string[])mensagemAutenticacaoEsperada.Propriedades[Constantes.USUARIOS], (string[])autenticacaoEnviada.Propriedades[Constantes.USUARIOS], "Deveria possuir a mesma lista de usuários online"); //asserts para mensagem de criação de nova tarefa Assert.AreEqual(mensagemNovaTarefaCriadaEsperada.Tipo, novaTarefaCriadaEnviada.Tipo, "A mensagem recebida de nova tarefa criada deveria ser do mesmo tipo"); Assert.AreEqual((string)mensagemNovaTarefaCriadaEsperada.Propriedades[Constantes.OIDCRONOGRAMA], (string)novaTarefaCriadaEnviada.Propriedades[Constantes.OIDCRONOGRAMA], "A mensagem recebida de nova tarefa criada deveria ser do mesmo tipo"); CollectionAssert.AreEquivalent((Dictionary <string, Int16>)mensagemNovaTarefaCriadaEsperada.Propriedades[Constantes.TAREFAS_IMPACTADAS], (Dictionary <string, Int16>)novaTarefaCriadaEnviada.Propriedades[Constantes.TAREFAS_IMPACTADAS], "Deveria possuir as tarefas impactadas com a mesma ordenacao"); }