Skip to content

Commit c14d777

Browse files
committed
test: add tests to failure on register user
1 parent 5109f01 commit c14d777

1 file changed

Lines changed: 84 additions & 2 deletions

File tree

Lines changed: 84 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
using System.Net;
22
using System.Net.Http.Json;
33
using System.Text.Json;
4+
using API.Test.InlineData;
45
using CommonTestUtilities.Requests;
56
using CommonTestUtilities.Services;
7+
using RecipesApp.Exception.Resources;
68

79
namespace API.Test.User.Register;
810

911
public class RegisterUserEndpoint(WebApplicationMockFactory factory)
1012
: IClassFixture<WebApplicationMockFactory>
1113
{
1214
private readonly HttpClient _client = factory.CreateClient();
13-
15+
1416
[Fact]
1517
public async Task Test_OnSuccess()
1618
{
@@ -20,9 +22,89 @@ public async Task Test_OnSuccess()
2022
await using var body = await response.Content.ReadAsStreamAsync();
2123
var result = await JsonDocument.ParseAsync(body);
2224
var username = result.RootElement.GetProperty("name").GetString();
23-
25+
2426
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
2527
Assert.False(string.IsNullOrWhiteSpace(username));
2628
Assert.Equal(request.Name, username);
2729
}
30+
31+
[Theory]
32+
[ClassData(typeof(CultureInlineData))]
33+
public async Task Test_EmptyName_OnFailure(string? culture)
34+
{
35+
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", culture);
36+
var request = RegisterUserRequestJSONMockFactory.CreateMockWithoutName();
37+
38+
var response = await _client.PostAsJsonAsync("/Users", request);
39+
await using var body = await response.Content.ReadAsStreamAsync();
40+
var result = await JsonDocument.ParseAsync(body);
41+
var errors = result.RootElement.GetProperty("errors")
42+
.EnumerateArray().ToList();
43+
44+
var expectedMessage = ResourcesAccessor.GetMessageByCulture("NAME_REQUIRED", culture);
45+
46+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
47+
Assert.Single(errors,
48+
error => error.GetString()!.Equals(expectedMessage));
49+
}
50+
51+
[Theory]
52+
[ClassData(typeof(CultureInlineData))]
53+
public async Task Test_EmptyEmail_OnFailure(string? culture)
54+
{
55+
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", culture);
56+
var request = RegisterUserRequestJSONMockFactory.CreateMockWithoutEmail();
57+
58+
var response = await _client.PostAsJsonAsync("/Users", request);
59+
await using var body = await response.Content.ReadAsStreamAsync();
60+
var result = await JsonDocument.ParseAsync(body);
61+
var errors = result.RootElement.GetProperty("errors")
62+
.EnumerateArray().ToList();
63+
64+
var expectedMessage = ResourcesAccessor.GetMessageByCulture("EMAIL_REQUIRED", culture);
65+
66+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
67+
Assert.Single(errors,
68+
error => error.GetString()!.Equals(expectedMessage));
69+
}
70+
71+
[Theory]
72+
[ClassData(typeof(CultureInlineData))]
73+
public async Task Test_InvalidEmail_OnFailure(string? culture)
74+
{
75+
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", culture);
76+
var request = RegisterUserRequestJSONMockFactory.CreateMockWithInvalidEmail("email.com");
77+
78+
var response = await _client.PostAsJsonAsync("/Users", request);
79+
await using var body = await response.Content.ReadAsStreamAsync();
80+
var result = await JsonDocument.ParseAsync(body);
81+
var errors = result.RootElement.GetProperty("errors")
82+
.EnumerateArray().ToList();
83+
84+
var expectedMessage = ResourcesAccessor.GetMessageByCulture("EMAIL_INVALID", culture);
85+
86+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
87+
Assert.Single(errors,
88+
error => error.GetString()!.Equals(expectedMessage));
89+
}
90+
91+
[Theory]
92+
[ClassData(typeof(CultureInlineData))]
93+
public async Task Test_EmptyPassword_OnFailure(string? culture)
94+
{
95+
_client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", culture);
96+
var request = RegisterUserRequestJSONMockFactory.CreateMockWithoutPassword();
97+
98+
var response = await _client.PostAsJsonAsync("/Users", request);
99+
await using var body = await response.Content.ReadAsStreamAsync();
100+
var result = await JsonDocument.ParseAsync(body);
101+
var errors = result.RootElement.GetProperty("errors")
102+
.EnumerateArray().ToList();
103+
104+
var expectedMessage = ResourcesAccessor.GetMessageByCulture("PASSWORD_REQUIRED", culture);
105+
106+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
107+
Assert.Single(errors,
108+
error => error.GetString()!.Equals(expectedMessage));
109+
}
28110
}

0 commit comments

Comments
 (0)