From b37e701706c40ba269277fd0ca86aebdd01539f0 Mon Sep 17 00:00:00 2001 From: lucas229 Date: Fri, 23 Jun 2023 19:45:20 -0300 Subject: [PATCH 1/2] #30 Testes adicionados para UsuarioRepositorio --- test/UsuarioRepositorioTest.cs | 176 +++++++++++++++++++++++++++++++++ test/test.csproj | 3 +- 2 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 test/UsuarioRepositorioTest.cs diff --git a/test/UsuarioRepositorioTest.cs b/test/UsuarioRepositorioTest.cs new file mode 100644 index 0000000..8c57c5d --- /dev/null +++ b/test/UsuarioRepositorioTest.cs @@ -0,0 +1,176 @@ +using Xunit; +using repositorio; +using repositorio.Interfaces; +using dominio; +using Microsoft.Data.Sqlite; +using System.Data; +using repositorio.Contexto; +using Dapper; +using test.Stub; + +namespace test +{ + public class Contexto : IContexto + { + public IDbConnection Conexao { get; } + + public Contexto(IDbConnection conexao) + { + Conexao = conexao; + } + } + + public class UsuarioRepositorioTest + { + IUsuarioRepositorio repositorio; + SqliteConnection connection; + + public UsuarioRepositorioTest() + { + connection = new SqliteConnection("Data Source=:memory:"); + connection.Open(); + + string sql = @" + ATTACH DATABASE ':memory:' AS public; + + CREATE TABLE public.usuario ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + email TEXT UNIQUE, + senha TEXT, + nome TEXT + ); + + CREATE TABLE public.usuario_unidade_federativa_lotacao ( + id_usuario INTEGER REFERENCES usuario (id), + id_unidade_federativa INTEGER); + + CREATE TABLE public.usuario_empresa ( + id_usuario INTEGER REFERENCES usuario (id), + cnpj_empresa INTEGER); + + CREATE TABLE public.recuperacao_senha ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + uuid TEXT, + id_usuario INTEGER REFERENCES usuario (id)); + "; + + connection.Execute(sql); + + repositorio = new UsuarioRepositorio(contexto => new Contexto(connection)); + } + + [Fact] + public void ObterUsuario_QuandoEmailForPassado_DeveRetornarUsuarioCorrespondente() + { + UsuarioStub usuarioStub = new(); + var usuarioDNIT = usuarioStub.RetornarUsuarioDnit(); + + repositorio.CadastrarUsuarioDnit(usuarioDNIT); + + var usuarioObtido = repositorio.ObterUsuario("usuarioteste@gmail.com"); + + Assert.Equal(usuarioDNIT.Email, usuarioObtido?.Email); + Assert.Equal(usuarioDNIT.Senha, usuarioObtido?.Senha); + Assert.Equal(usuarioDNIT.Nome, usuarioObtido?.Nome); + } + + [Fact] + public void CadastrarUsuarioDnit_QuandoUsuarioForPassado_DeveCadastrarUsuarioComDadosPassados() + { + UsuarioStub usuarioStub = new(); + var usuarioDNIT = usuarioStub.RetornarUsuarioDnit(); + + repositorio.CadastrarUsuarioDnit(usuarioDNIT); + + var sql = $@"SELECT u.id, u.email, u.senha, u.nome, uufl.id_unidade_federativa uf + FROM public.usuario u + JOIN public.usuario_unidade_federativa_lotacao uufl + ON u.id = uufl.id_usuario + WHERE email = '{usuarioDNIT.Email}';"; + + UsuarioDnit? usuarioObtido = connection.QueryFirst(sql); + + Assert.Equal(usuarioDNIT.Email, usuarioObtido.Email); + Assert.Equal(usuarioDNIT.Senha, usuarioObtido.Senha); + Assert.Equal(usuarioDNIT.Nome, usuarioObtido.Nome); + Assert.Equal(usuarioDNIT.UF, usuarioObtido.UF); + } + + [Fact] + public void TrocarSenha_QuandoNovaSenhaForPassada_DeveAtualizarSenhaDoUsuario() + { + UsuarioStub usuarioStub = new(); + var usuarioDNIT = usuarioStub.RetornarUsuarioDnit(); + + repositorio.CadastrarUsuarioDnit(usuarioDNIT); + + string novaSenha = "NovaSenha"; + + repositorio.TrocarSenha(usuarioDNIT.Email, novaSenha); + + var usuarioObtido = repositorio.ObterUsuario(usuarioDNIT.Email); + + Assert.Equal(novaSenha, usuarioObtido?.Senha); + } + + [Fact] + public void ObterEmailRedefinicaoSenha_QuandoUuidForPassado_DeveRetornarEmailCorrespondente() + { + UsuarioStub usuarioStub = new(); + RedefinicaoSenhaStub redefinicaoSenhaStub = new(); + var usuarioDNIT = usuarioStub.RetornarUsuarioDnit(); + var redefinicaoSenha = redefinicaoSenhaStub.ObterRedefinicaoSenha(); + + repositorio.CadastrarUsuarioDnit(usuarioDNIT); + var usuarioObtido = repositorio.ObterUsuario(usuarioDNIT.Email); + + repositorio.InserirDadosRecuperacao(redefinicaoSenha.UuidAutenticacao, usuarioObtido.Id); + + var email = repositorio.ObterEmailRedefinicaoSenha(redefinicaoSenha.UuidAutenticacao); + + Assert.Equal(usuarioDNIT.Email, email); + } + + [Fact] + public void RemoverUuidRedefinicaoSenha_QuandoUuidForPassado_DeveRemoverUuidDoBanco() + { + UsuarioStub usuarioStub = new(); + RedefinicaoSenhaStub redefinicaoSenhaStub = new(); + var usuarioDNIT = usuarioStub.RetornarUsuarioDnit(); + var redefinicaoSenha = redefinicaoSenhaStub.ObterRedefinicaoSenha(); + + repositorio.CadastrarUsuarioDnit(usuarioDNIT); + var usuarioObtido = repositorio.ObterUsuario(usuarioDNIT.Email); + + repositorio.InserirDadosRecuperacao(redefinicaoSenha.UuidAutenticacao, usuarioObtido.Id); + repositorio.RemoverUuidRedefinicaoSenha(redefinicaoSenha.UuidAutenticacao); + + var email = repositorio.ObterEmailRedefinicaoSenha(redefinicaoSenha.UuidAutenticacao); + + Assert.Null(email); + } + + + [Fact] + public void CadastrarUsuarioTerceiro_QuandoUsuarioForPassado_DeveCadastrarUsuarioComDadosPassados() + { + UsuarioStub usuarioStub = new(); + var usuarioTerceiro = usuarioStub.RetornarUsuarioTerceiro(); + + repositorio.CadastrarUsuarioTerceiro(usuarioTerceiro); + + var sql = $@"SELECT u.id, u.email, u.senha, u.nome, ue.cnpj_empresa cnpj + FROM public.usuario u + JOIN public.usuario_empresa ue + ON u.id = ue.id_usuario + WHERE email = '{usuarioTerceiro.Email}';"; + + UsuarioTerceiro? usuarioObtido = connection.QueryFirst(sql); + + Assert.Equal(usuarioTerceiro.Email, usuarioObtido.Email); + Assert.Equal(usuarioTerceiro.Senha, usuarioObtido.Senha); + Assert.Equal(usuarioTerceiro.Nome, usuarioObtido.Nome); + Assert.Equal(usuarioTerceiro.CNPJ, usuarioObtido.CNPJ); + } + } +} diff --git a/test/test.csproj b/test/test.csproj index 1989cdf..5ddbe87 100644 --- a/test/test.csproj +++ b/test/test.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -9,6 +9,7 @@ + From 30f93998c9cbc1c0c851d2074a460a482a44867c Mon Sep 17 00:00:00 2001 From: lucas229 Date: Sat, 24 Jun 2023 22:22:53 -0300 Subject: [PATCH 2/2] =?UTF-8?q?#30=20Fechando=20a=20conex=C3=A3o=20com=20o?= =?UTF-8?q?=20banco=20ap=C3=B3s=20os=20testes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UsuarioRepositorioTest.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/UsuarioRepositorioTest.cs b/test/UsuarioRepositorioTest.cs index 8c57c5d..c102370 100644 --- a/test/UsuarioRepositorioTest.cs +++ b/test/UsuarioRepositorioTest.cs @@ -7,6 +7,7 @@ using repositorio.Contexto; using Dapper; using test.Stub; +using System; namespace test { @@ -20,7 +21,7 @@ public Contexto(IDbConnection conexao) } } - public class UsuarioRepositorioTest + public class UsuarioRepositorioTest : IDisposable { IUsuarioRepositorio repositorio; SqliteConnection connection; @@ -172,5 +173,10 @@ JOIN public.usuario_empresa ue Assert.Equal(usuarioTerceiro.Nome, usuarioObtido.Nome); Assert.Equal(usuarioTerceiro.CNPJ, usuarioObtido.CNPJ); } + public void Dispose() + { + connection.Close(); + connection.Dispose(); + } } }