Skip to content

Commit

Permalink
test: tests Controller User
Browse files Browse the repository at this point in the history
  • Loading branch information
caioBatistaDosSantos committed Nov 8, 2022
2 parents 359e4f4 + a1901df commit 03071b9
Show file tree
Hide file tree
Showing 18 changed files with 1,299 additions and 6 deletions.
277 changes: 277 additions & 0 deletions Backend/Tryitter.Test/ApiUserTest.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
using System.Collections.Generic;
using System.Net;
using System.Net.Http.Json;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using tryitter.Models;
using TryitterAuth;
using Tryitter.Requesties;
using tryitter.Auth;
using tryitter.Requesties;

namespace tryitter.Tests;

Expand All @@ -11,17 +16,289 @@ public class ApiUserTest
[Fact]
public async Task GET_all_users_test_sucess()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.GetAsync(url);
var users = await client.GetFromJsonAsync<IEnumerable<User>>(url);

result.StatusCode.Should().Be(HttpStatusCode.OK);
users.Count().Should().Be(4);
}

[Fact]
public async Task GET_all_users_test_empty()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, false);
var url = "/User";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.GetAsync(url);
var users = await client.GetFromJsonAsync<IEnumerable<User>>(url);

result.StatusCode.Should().Be(HttpStatusCode.OK);
users.Count().Should().Be(0);
}

[Fact]
public async Task POST_login_test_sucess()
{
UserLogin userLogin = new()
{
Email = "[email protected]",
Password = "123456"
};

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User";

var client = application.CreateClient();

var result = await client.PostAsJsonAsync(url, userLogin);
var content = await result.Content.ReadFromJsonAsync<AuthToken>();

result.StatusCode.Should().Be(HttpStatusCode.OK);
content.Token.Should().BeOfType<string>();
}

[Fact]
public async Task GET_user_by_id_test_sucess()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/1";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.GetAsync(url);
var content = await client.GetFromJsonAsync<User>(url);

result.StatusCode.Should().Be(HttpStatusCode.OK);
content.Should().BeEquivalentTo(user);
}

[Fact]
public async Task GET_user_by_id_test_failed()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/100";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.GetAsync(url);
var content = await result.Content.ReadAsStringAsync();

result.StatusCode.Should().Be(HttpStatusCode.NotFound);
content.Should().BeEquivalentTo("Não encontrei.");
}

[Fact]
public async Task DELETE_user_by_id_test_sucess()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/1";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.DeleteAsync(url);

result.StatusCode.Should().Be(HttpStatusCode.NoContent);
}

[Fact]
public async Task DELETE_user_by_id_test_failed()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/100";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.DeleteAsync(url);
var content = await result.Content.ReadAsStringAsync();

result.StatusCode.Should().Be(HttpStatusCode.NotFound);
content.Should().BeEquivalentTo("Não encontrei.");
}

[Fact]
public async Task PUT_user_by_id_test_sucess()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/2";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.PutAsJsonAsync(url, user);
var content = await client.GetFromJsonAsync<User>(url);

user.Id = 2;

result.StatusCode.Should().Be(HttpStatusCode.OK);
content.Should().BeEquivalentTo(user);
}

[Fact]
public async Task PUT_user_by_id_test_failed()
{
User user = new()
{
Id = 1,
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

var token = new TokenGenerator().Generate(user);

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User/100";

var client = application.CreateClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

var result = await client.PutAsJsonAsync(url, user);
var content = await result.Content.ReadAsStringAsync();

result.StatusCode.Should().Be(HttpStatusCode.NotFound);
content.Should().BeEquivalentTo("Não encontrei.");
}

[Fact]
public async Task POST_user_test_sucess()
{
User user = new()
{
Name = "Bruce",
Email = "[email protected]",
Module = "Ciência da Computação",
Status = "Combatendo o crime em Gothan por meio da programação.",
Password = "123456"
};

await using var application = new TryitterFactory();

await TryitterMockData.CreateAPI(application, true);
var url = "/User";

var client = application.CreateClient();

var result = await client.PostAsJsonAsync(url, user);
var content = await result.Content.ReadFromJsonAsync<User>();

result.StatusCode.Should().Be(HttpStatusCode.OK);
content.Name.Should().Be(user.Name);
}
}
Binary file modified Backend/Tryitter.Test/bin/Debug/net6.0/Tryitter.Test.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Test/bin/Debug/net6.0/Tryitter.Test.pdb
Binary file not shown.
Binary file modified Backend/Tryitter.Test/bin/Debug/net6.0/Tryitter.Web.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Test/bin/Debug/net6.0/Tryitter.Web.pdb
Binary file not shown.
4 changes: 2 additions & 2 deletions Backend/Tryitter.Test/bin/Debug/net6.0/Tryitter.Web.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Binary file modified Backend/Tryitter.Test/obj/Debug/net6.0/Tryitter.Test.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Test/obj/Debug/net6.0/Tryitter.Test.pdb
Binary file not shown.
Binary file modified Backend/Tryitter.Test/obj/Debug/net6.0/ref/Tryitter.Test.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Test/obj/Debug/net6.0/refint/Tryitter.Test.dll
Binary file not shown.
10 changes: 6 additions & 4 deletions Backend/Tryitter.Web/Controllers/UserControlller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,14 @@ public async Task<ActionResult<User>> GetByPk(int userid) {
/// <summary>
/// Remove o item o objeto User se existir
/// </summary>
/// <returns>Um item do objeto User</returns>
/// <response code="200">Retorna o objeto User encontrado</response>
/// <returns>StatusCode NoContent</returns>
/// <response code="204">Retorna um StatusCode NoContent</response>
[HttpDelete("{userid}")]
public async Task<ActionResult<User>> Remove(int userid) {
try
{
return Ok(await _repository.Remove(userid));
await _repository.Remove(userid);
return NoContent();
}
catch (InvalidOperationException err)
{
Expand All @@ -92,7 +93,8 @@ public async Task<ActionResult<User>> Update(int userid, User request) {
}
catch(Exception err)
{
return NotFound(err.Message);
Console.WriteLine(err.Message);
return NotFound("Não encontrei.");
}
}

Expand Down
Binary file modified Backend/Tryitter.Web/bin/Debug/net6.0/Tryitter.Web.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Web/bin/Debug/net6.0/Tryitter.Web.pdb
Binary file not shown.
Binary file modified Backend/Tryitter.Web/obj/Debug/net6.0/Tryitter.Web.dll
Binary file not shown.
Binary file modified Backend/Tryitter.Web/obj/Debug/net6.0/Tryitter.Web.pdb
Binary file not shown.
Loading

0 comments on commit 03071b9

Please sign in to comment.