164 lines
6.1 KiB
C#
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);
|
|
// }
|
|
}
|