Files
caliverse_server/BrokerApiTest/ControllerTests/AccontControllerTests.cs
2025-05-01 07:20:41 +09:00

164 lines
6.1 KiB
C#

namespace BrokerTest.Controllers;
using System.Net;
using System.Net.Http.Json;
using System.Text.Json;
using BrokerCore.ApiModels;
using Helper;
using Xunit;
public class AccountControllerTests
{
private readonly BrokerTestServer m_server = new BrokerTestServer();
[Fact]
public async Task initializeAsync()
{
await Task.CompletedTask;
}
[Fact]
public async Task Login_ValidRequest_ReturnsOkWithLoginResponse()
{
// Arrange
const string validToken = "valid_web_portal_token";
const string userGuid = "test_user_guid";
const string nickname = "test_nickname";
var client = m_server.getTestClient();
Assert.NotNull(client);
var request = new LoginRequest { WebPortalToken = validToken };
// Act
var response = await client.PostAsJsonAsync("/api/v1/account/login", request);
// Assert
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
// ReadFromJsonAsync 사용 시, 올바른 options 주입
var login_response = await response.Content.ReadFromJsonAsync<LoginResponse>();
Assert.NotNull(login_response);
Assert.Equal(userGuid, login_response.UserGuid);
Assert.Equal(nickname, login_response.Nickname);
// mockUserAuthService.Verify(m => m.authByWebPortalToken(validToken), Times.Once); //정확히 한번 호출되었는지 확인
// mockUserAuthService.VerifyGet(x=>x.UserGuid, Times.AtLeastOnce); //최소 한번 호출되었는지 확인
// mockUserAuthService.VerifyGet(x=>x.Nickname, Times.AtLeastOnce);
}
// [Fact]
// public async Task Login_InvalidRequest_EmptyToken_ReturnsBadRequest()
// {
// // Arrange
// var client = _factory.CreateClient();
// var request = new LoginRequest { WebPortalToken = "" }; // Empty token
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/account/login", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
//
// //응답 내용 확인 (선택)
// var errorResponse = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(_jsonOptions);
// Assert.NotNull(errorResponse);
// Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code);
// Assert.Contains("WebPortalToken does not exist", errorResponse.Message);
//
// }
//
// [Fact]
// public async Task Login_InvalidRequest_NullToken_ReturnsBadRequest()
// {
// // Arrange
// var client = _factory.CreateClient();
// var request = new LoginRequest { WebPortalToken = null }; // null token
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/account/login", request);
//
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
//
// //응답 내용 확인 (선택)
// var errorResponse = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(_jsonOptions);
// Assert.NotNull(errorResponse);
// Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code);
// Assert.Contains("WebPortalToken does not exist", errorResponse.Message);
// }
// [Fact]
// public async Task Login_InvalidRequest_NullRequest_ReturnsBadRequest()
// {
// // Arrange
// var client = _factory.CreateClient();
// LoginRequest? request = null; // Null request
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/account/login", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
//
// //응답 내용 확인 (선택)
// var errorResponse = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(_jsonOptions);
// Assert.NotNull(errorResponse);
// Assert.Equal((int)ServerErrorCode.InvalidRequest, errorResponse.Code);
// Assert.Contains("Request is empty", errorResponse.Message);
// }
//
// [Fact]
// public async Task Login_AuthServiceReturnsFail_ReturnsBadRequest()
// {
// // Arrange
// const string invalidToken = "invalid_token";
//
// // Mock UserAuthService
// var mockUserAuthService = new Mock<UserAuthService>(MockBehavior.Strict, null, null,null,null,null);
// mockUserAuthService.Setup(m => m.authByWebPortalToken(invalidToken))
// .ReturnsAsync(Result.Fail(ServerErrorCode.InvalidToken, "Invalid token"));
//
//
// var client = _factory.WithWebHostBuilder(builder =>
// {
// builder.ConfigureTestServices(services =>
// {
// services.AddScoped<UserAuthService>(_ => mockUserAuthService.Object);
// });
// }).CreateClient();
//
//
// var request = new LoginRequest { WebPortalToken = invalidToken };
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/account/login", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
// var errorResponse = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(_jsonOptions);
// Assert.NotNull(errorResponse);
// Assert.Equal((int)ServerErrorCode.InvalidToken, errorResponse.Code);
// Assert.Equal("Invalid token", errorResponse.Message);
//
// mockUserAuthService.Verify(m=>m.authByWebPortalToken(invalidToken), Times.Once);
// }
//
// [Fact]
// public async Task Dummy_ValidRequest_ReturnsOk()
// {
// // Arrange
// var client = _factory.CreateClient();
// var request = new DummyRequest { Dummy = "test" };
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/account/dummy", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.OK, response.StatusCode);
// var dummyResponse = await response.Content.ReadFromJsonAsync<DummyResponse>();
// Assert.NotNull(dummyResponse);
// Assert.Equal("test", dummyResponse.Dummy);
// }
}