Skip to content

Commit

Permalink
Merge pull request #31 from fga-eps-mds/30-testes-usuarioRepositorio
Browse files Browse the repository at this point in the history
#30 Testes UsuarioRepositorio
  • Loading branch information
lucas229 authored Jun 25, 2023
2 parents 2f8bb85 + 30f9399 commit ec930dc
Show file tree
Hide file tree
Showing 2 changed files with 184 additions and 1 deletion.
182 changes: 182 additions & 0 deletions test/UsuarioRepositorioTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
using Xunit;
using repositorio;
using repositorio.Interfaces;
using dominio;
using Microsoft.Data.Sqlite;
using System.Data;
using repositorio.Contexto;
using Dapper;
using test.Stub;
using System;

namespace test
{
public class Contexto : IContexto
{
public IDbConnection Conexao { get; }

public Contexto(IDbConnection conexao)
{
Conexao = conexao;
}
}

public class UsuarioRepositorioTest : IDisposable
{
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("[email protected]");

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<UsuarioDnit>(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<UsuarioTerceiro>(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);
}
public void Dispose()
{
connection.Close();
connection.Dispose();
}
}
}
3 changes: 2 additions & 1 deletion test/test.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
Expand All @@ -9,6 +9,7 @@

<ItemGroup>
<PackageReference Include="AutoMapper" Version="12.0.1" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="7.0.8" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Moq" Version="4.18.4" />
<PackageReference Include="xunit" Version="2.4.1" />
Expand Down

0 comments on commit ec930dc

Please sign in to comment.