コード例 #1
0
        public async Task <Dominio.Servicos.Resposta <Modelos.Usuario> > Salvar(DTOs.NovoUsuario dadosUsuario)
        {
            var resposta = new Resposta <Modelos.Usuario>();
            var senha    = new Modelos.Senha();

            if (string.IsNullOrWhiteSpace(dadosUsuario.Nome))
            {
                resposta.Erro = new ErroAtributoEmBranco("nome");
            }

            else if (string.IsNullOrWhiteSpace(dadosUsuario.Login))
            {
                resposta.Erro = new ErroAtributoEmBranco("login");
            }

            else if (string.IsNullOrWhiteSpace(dadosUsuario.Senha))
            {
                resposta.Erro = new ErroAtributoEmBranco("senha");
            }

            else
            {
                var usuario = new Modelos.Usuario(dadosUsuario.Login, senha.GerarHash(dadosUsuario.Senha), dadosUsuario.Nome);

                usuario.Id = await _usuarios.Salvar(usuario);

                resposta.Resultado = usuario;
            }

            return(resposta);
        }
コード例 #2
0
        public async Task Deve_Autenticar_Um_Usuario()
        {
            var usuario = new Modelos.Usuario(
                "usuario login",
                "pMt6WXGnAFrN1o13CIDRGw==.Bc8/fYrDFfyw576GfZnlEgnYIqZfszuKEErs2agPgRA=",
                "usuario nome")
            {
                Id = 1,
            };

            usuario.AdicionarToken(Guid.NewGuid().ToString());

            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = "******",
                Senha = "123456"
            };

            _usuarios.Setup(repositorio => repositorio.ObterPorLogin(It.IsAny <string>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Autenticar(dadosUsuario);

            var usuarioEncontrado = resposta.Resultado;

            usuarioEncontrado.Id.Should().NotBe(0);
            usuarioEncontrado.Login.Should().Be("usuario login");
            usuarioEncontrado.Token.Should().NotBeNullOrWhiteSpace();
            usuarioEncontrado.Nome.Should().Be("usuario nome");
        }
コード例 #3
0
        public async Task Deve_Deletar_Um_Usuario()
        {
            var usuario = new Modelos.Usuario("", "", "");

            _usuarios.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Deletar(1);

            resposta.TemErro().Should().BeFalse();
        }
コード例 #4
0
        public async Task Deve_Retornar_Um_Usuario_Por_Id()
        {
            var usuario = new Modelos.Usuario("usuario.xpto", "123456", "usuário nome");

            _usuarios.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.ObterPorId(1);

            var usuarioEncontrado = resposta.Resultado;

            usuarioEncontrado.Login.Should().Be("usuario.xpto");
            usuarioEncontrado.Nome.Should().Be("usuário nome");
            usuarioEncontrado.Senha.Should().Be("123456");
        }
コード例 #5
0
        public async Task Deve_Retornar_Erro_Quando_Tentar_Deletar_Um_Usuario_Com_Contatos_Vinculados_A_Ele()
        {
            var usuario = new Modelos.Usuario("xpto", "123", "usuario nome");

            var contato = new Modelos.Contato("Contato", "11 985478521", "11 45873214", "*****@*****.**", usuario);

            usuario.AdicionarContato(contato);

            _usuarios.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Deletar(1);

            resposta.Erro.Mensagem.Should().Be("Erro! Este usuário possui contatos vinculados.");
            resposta.Erro.StatusCode.Should().Be(400);
            resposta.Erro.GetType().Should().Be(typeof(ErroObjetoPossuiObjetosVinculados));
        }
コード例 #6
0
        public async Task Deve_Deletar_Um_Contato()
        {
            var usuario = new Modelos.Usuario("", "", "");

            var contato = new Modelos.Contato(
                "Contato",
                "11 985478521",
                "11 45873214",
                "*****@*****.**",
                usuario
                );

            _contatos.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(contato));

            var resposta = await _servico.Deletar(1);

            resposta.TemErro().Should().BeFalse();
        }
コード例 #7
0
        public async Task Deve_Atualizar_Um_Contato()
        {
            var usuario = new Modelos.Usuario("usuario", "123", "usuário nome");

            var contato = new DTOs.AlteraContato
            {
                Id       = 1,
                Nome     = "Contato",
                Telefone = "11 45873214",
                Celular  = "11 985478521",
                Email    = "*****@*****.**"
            };

            _contatos.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(new Modelos.Contato("Contato", "11 985478521", "11 45873214", "*****@*****.**", usuario)));

            var resposta = await _servico.Atualizar(contato);

            resposta.TemErro().Should().BeFalse();
        }
コード例 #8
0
        public async Task Deve_Retornar_Erro_Quando_Tentar_Autenticar_Um_Usuario_Com_Senha_Invalida()
        {
            var usuario = new Modelos.Usuario(
                "usuario login",
                "bHBlUVj1rFG48+Bd+4+yGA==.7KQGnYFMukLhkfSqhbfGhtqtqELUntz4AbGhrrqspLs=",
                "usuario nome");

            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = "******",
                Senha = "123456"
            };

            _usuarios.Setup(repositorio => repositorio.ObterPorLogin(It.IsAny <string>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Autenticar(dadosUsuario);

            resposta.Erro.Mensagem.Should().Be("Senha inválido(a)!");
            resposta.Erro.StatusCode.Should().Be(400);
            resposta.Erro.GetType().Should().Be(typeof(ErroAtributoInvalido));
        }
コード例 #9
0
        public async Task Deve_Retornar_Um_Contato_Por_Id()
        {
            var usuario = new Modelos.Usuario("", "", "");

            var contato = new Modelos.Contato(
                "Contato",
                "11 985478521",
                "11 45873214",
                "*****@*****.**",
                usuario
                );

            _contatos.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(contato));

            var resposta = await _servico.ObterPorId(1);

            var contatoEncontrado = resposta.Resultado;

            contatoEncontrado.Nome.Should().Be("Contato");
            contatoEncontrado.Celular.Should().Be("11 985478521");
            contatoEncontrado.Telefone.Should().Be("11 45873214");
            contatoEncontrado.Email.Should().Be("*****@*****.**");
        }
コード例 #10
0
        public async Task Deve_Retornar_Todos_Os_Contatos_De_Um_Usuario()
        {
            var usuario = new Modelos.Usuario("usuario", "123", "usuário nome");
            var contato = new Modelos.Contato("Contato", "11 985478521", "11 45873214", "*****@*****.**", usuario);

            usuario.AdicionarContato(contato);

            _usuarios.Setup(repositorio => repositorio.ObterPorId(It.IsAny <int>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.ListarPorUsuarioId(1);

            var contatos = resposta.Resultado;

            contatos.Should().HaveCountGreaterThan(0);
            contatos.ForEach((contato) =>
            {
                contato.GetType().GetProperty("Id").Should().NotBeNull();
                contato.GetType().GetProperty("Nome").Should().NotBeNull();
                contato.GetType().GetProperty("Telefone").Should().NotBeNull();
                contato.GetType().GetProperty("Celular").Should().NotBeNull();
                contato.GetType().GetProperty("Email").Should().NotBeNull();
            });
        }
コード例 #11
0
 private bool ExisteContatosVinculados(Modelos.Usuario usuario) => usuario.Contatos.Count() > 0;