250501 커밋

This commit is contained in:
2025-05-01 07:23:28 +09:00
parent 98bb2e3c5c
commit 23176551b7
353 changed files with 9972 additions and 6652 deletions

View File

@@ -1,163 +0,0 @@
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);
// }
}

View File

@@ -1,17 +1,8 @@
using System.IdentityModel.Tokens.Jwt;
using System.Net.Http.Json;
using System.Security.Claims;
using System.Text.Json;
using BrokerCore.ApiModels;
using BrokerCore.Common;
using BrokerCore.DbEntity;
using BrokerCore.Services;
using System.Net.Http.Json;
using BrokerApiCore;
using BrokerTest.Helper;
namespace BrokerTest.Controllers;
public class CurrencyControllerTests
{
private readonly BrokerTestServer m_server = new BrokerTestServer();

View File

@@ -1,16 +1,10 @@
using System.IdentityModel.Tokens.Jwt;
using System.Net.Http.Json;
using System.Security.Claims;
using System.Text.Json;
using System.Net.Http.Json;
using BrokerCore.ApiModels;
using BrokerCore.Common;
using BrokerCore.DbEntity;
using BrokerCore.Services;
using BrokerApiCore;
using BrokerTest.Helper;
using BrokerApiServer;
namespace BrokerTest.Controllers;
namespace BrokerTest;
public class DevCurrencyControllerTests
{

View File

@@ -1,179 +0,0 @@
// using System.Net;
// using System.Net.Http.Json;
//
// using BrokerCore.ApiModels;
// using BrokerCore.DbEntity;
//
// using BrokerTest.Helper;
//
// using ServerCommon;
//
// using Xunit.Abstractions;
//
// namespace BrokerTest.Controllers;
//
// public class DevPlanetUserControllerTests : IAsyncLifetime
// {
// private readonly ITestOutputHelper m_test_output_helper;
// const string m_planet_id = "new_earth";
// const string m_planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
// const string m_user_guid = "1052b08b52ef4d69a27ee1f40911a72f";
// private string m_planet_token = string.Empty;
// const string m_remote_server_url = "https://dev.planethub.caliverse.io:12000";
// private readonly MetaTableTestHelper m_meta_table_test_helper = new();
//
// private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer(m_remote_server_url);
//
// public DevPlanetUserControllerTests(ITestOutputHelper testOutputHelper)
// {
// m_test_output_helper = testOutputHelper;
// }
//
// private HttpClient getTestClient()
// {
// var client = m_server.getTestClient();
// if (m_planet_token != string.Empty)
// {
// client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}");
// }
//
// return client;
// }
//
// private HttpClient getTestClientWithBearer()
// {
// var client = m_server.getTestClient();
// if (m_planet_token != string.Empty)
// {
// client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}");
// }
//
// return client;
// }
//
// public async Task InitializeAsync()
// {
// m_meta_table_test_helper.load();
//
// // Arrange
// var client = getTestClient();
// var request = new PlanetAuthRequest { PlanetId = m_planet_id, PlanetSecretKey = m_planet_secret_key };
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
//
// // Assert
// response.EnsureSuccessStatusCode();
// var response_body = await response.Content.ReadFromJsonAsync<PlanetAuthResponse>();
// Assert.NotNull(response_body);
// Assert.NotEmpty(response_body.AccessToken);
// m_planet_token = response_body.AccessToken;
// }
//
// public async Task DisposeAsync()
// {
// await Task.CompletedTask;
// }
//
// private bool checkError(HttpResponseMessage responseMessage)
// {
// if (responseMessage.StatusCode != HttpStatusCode.OK)
// {
// var error_body = responseMessage.Content.ReadFromJsonAsync<ApiErrorResponse>().Result;
// Assert.NotNull(error_body);
// m_test_output_helper.WriteLine(error_body.ErrorMessage ?? string.Empty);
// Assert.True(false);
// }
//
// return true;
// }
//
// [Fact(DisplayName = "아이템 교환 주문 컨트롤러 테스트 모든 Meta")]
// public async Task allMetaTests()
// {
// var meta = m_meta_table_test_helper.getMetaTableRef();
// var meta_tuples = meta.MetaTable.PlanetItemExchangePolicyMetaTable.PlanetItemExchangePolicyDataList
// .Select(x =>
// string.Equals(x.CaliverseItemType, CaliverseItemType.Currency.ToString(),
// StringComparison.CurrentCultureIgnoreCase)
// ? (x.ID, Random.Shared.Next(10, 201))
// : (x.ID, 1));
// foreach (var meta_tuple in meta_tuples)
// {
// await orderTest(meta_tuple.Item1, meta_tuple.Item2);
// }
// }
//
// private async Task orderTest(string metaId, int metaAmount)
// {
// string order_id;
// {
// // Arrange
// var request_uri = "/api/v1/planet/user/exchange/order/create";
// var client = getTestClientWithBearer();
// var exchange_request = new PlanetItemExchangeRequest
// {
// SeasonId = "TEST_SEASON_ID",
// UserGuid = m_user_guid, ExchangeMetaId = metaId, ExchangeMetaAmount = metaAmount,
// };
//
// // Act
// var exchange_response = await client.PostAsJsonAsync(request_uri, exchange_request);
//
// // Assert
// checkError(exchange_response);
// var exchange_response_body =
// await exchange_response.Content.ReadFromJsonAsync<PlanetItemExchangeResponse>();
// Assert.NotNull(exchange_response_body);
// Assert.NotNull(exchange_response_body.ExchangeOrder.OrderId);
// order_id = exchange_response_body.ExchangeOrder.OrderId;
// }
// {
// // Arrange
// var request_uri = "/api/v1/planet/user/exchange/order/list";
// var client = getTestClientWithBearer();
// var list_request = new PlanetItemExchangeOrderListRequest
// {
// UserGuid = m_user_guid, Option = FindOption.All, ExchangeMetaId = metaId,
// };
//
// // Act
// var list_response = await client.PostAsJsonAsync(request_uri, list_request);
// checkError(list_response);
//
// // Assert
// list_response.EnsureSuccessStatusCode();
// var list_response_body =
// await list_response.Content.ReadFromJsonAsync<PlanetItemExchangeOrderListResponse>();
// Assert.NotNull(list_response_body);
// Assert.NotNull(list_response_body.Orders);
//
// var order = list_response_body.Orders.FirstOrDefault(x => x.OrderId == order_id);
// Assert.NotNull(order);
// Assert.Equal(ExchangeOrderStatus.Pending, order.OrderStatus);
// }
// {
// // Arrange
// var request_uri = "/api/v1/planet/user/exchange/order/complete";
// var client = getTestClientWithBearer();
//
// // Act
// var complete_request = new PlanetItemExchangeCompleteRequest
// {
// UserGuid = m_user_guid, ExchangeOrderId = order_id
// };
// var complete_response =
// await client.PostAsJsonAsync(request_uri, complete_request);
// checkError(complete_response);
//
// // Assert
// complete_response.EnsureSuccessStatusCode();
// var complete_response_body =
// await complete_response.Content.ReadFromJsonAsync<PlanetItemExchangeResponse>();
// Assert.NotNull(complete_response_body);
// Assert.NotNull(complete_response_body.ExchangeOrder);
// Assert.Equal(order_id, complete_response_body.ExchangeOrder.OrderId);
// Assert.Equal(ExchangeOrderStatus.Completed, complete_response_body.ExchangeOrder.OrderStatus);
// }
// }
// }

View File

@@ -1,16 +1,14 @@
namespace BrokerTest.Controllers;
using System.IdentityModel.Tokens.Jwt;
using System.Net;
using System.IdentityModel.Tokens.Jwt;
using System.Net.Http.Json;
using System.Security.Claims;
using System.Text.Json;
using BrokerCore.ApiModels;
using BrokerCore.Common;
using BrokerCore.Services;
using Helper;
using Xunit;
using BrokerApiCore;
using BrokerApiServer;
using BrokerTest.Helper;
namespace BrokerTest;
public class PlanetControllerTests
{
private readonly BrokerTestServer m_server = new();
@@ -49,40 +47,4 @@ public class PlanetControllerTests
Assert.NotNull(auth_response.AccessToken);
Assert.NotEqual(auth_response.AccessToken, string.Empty);
}
// [Fact]
// public async Task Auth_InvalidRequest_EmptyPlanetId_ReturnsBadRequest()
// {
// // Arrange
// var client = m_server.getTestClient();
// var request = new PlanetAuthRequest { PlanetId = "", PlanetSecretKey = "test_secret_key" };
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
// var error_response = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(m_json_options);
// Assert.NotNull(error_response);
// Assert.Equal((int)ServerErrorCode.InvalidRequest, error_response.Code);
// Assert.Contains("planet id is required", error_response.Message);
// }
//
// [Fact]
// public async Task Auth_InvalidRequest_NullPlanetSecretKey_ReturnsBadRequest()
// {
// // Arrange
// var client = m_server.getTestClient();
// var request = new PlanetAuthRequest { PlanetId = "test_planet_id", PlanetSecretKey = null };
//
// // Act
// var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
//
// // Assert
// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
// var error_response = await response.Content.ReadFromJsonAsync<ApiErrorResponse>(m_json_options);
// Assert.NotNull(error_response);
// Assert.Equal((int)ServerErrorCode.InvalidRequest, error_response.Code);
// Assert.Contains("planet access key is required", error_response.Message);
// }
}

View File

@@ -1,8 +1,9 @@
using System.Net;
using System.Net.Http.Json;
using BrokerCore.ApiModels;
using BrokerCore.DbEntity;
using BrokerApiCore;
using BrokerApiServer;
using BrokerTest.Helper;
@@ -10,8 +11,7 @@ using ServerCommon;
using Xunit.Abstractions;
namespace BrokerTest.Controllers;
namespace BrokerTest;
public class PlanetUserControllerTests : IAsyncLifetime
{
private readonly ITestOutputHelper m_test_output_helper;

View File

@@ -1,19 +1,16 @@
using System.Net;
using System.Net.Http.Json;
using BrokerCore.ApiModels;
using BrokerCore.DbEntity;
using BrokerApiCore;
using BrokerTest.Helper;
using Microsoft.IdentityModel.Tokens;
using Xunit.Abstractions;
using ServerCommon;
using ServerCore;
using Xunit.Abstractions;
namespace BrokerTest.Controllers;
using BrokerApiServer;
using BrokerTest.Helper;
namespace BrokerTest;
public class QaPlanetUserControllerTests : IAsyncLifetime
{
private readonly ITestOutputHelper m_test_output_helper;

View File

@@ -1,115 +0,0 @@
using System.IdentityModel.Tokens.Jwt;
using System.Net;
using System.Net.Http.Json;
using System.Security.Claims;
using System.Text.Json;
using BrokerCore.ApiModels;
using BrokerCore.Common;
using BrokerCore.DbEntity;
using BrokerCore.Services;
using BrokerTest.Helper;
using Xunit.Abstractions;
namespace BrokerTest.Controllers;
public class QaCurrencyControllerTests
{
private readonly ITestOutputHelper m_test_output_helper;
public QaCurrencyControllerTests(ITestOutputHelper testOutputHelper)
{
m_test_output_helper = testOutputHelper;
}
// private readonly BrokerTestServer m_server = new BrokerTestServer();
public HttpClient getTestClient()
{
return new HttpClient { BaseAddress = new Uri("https://qa.planethub.caliverse.io:12000") };
}
[Fact]
public async Task initializeAsync()
{
await Task.CompletedTask;
}
[Fact]
public async Task Auth_ValidRequest_ReturnsOkWithAccessToken()
{
// Arrange
const string planet_id = "new_earth";
const string planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
var planet_token = string.Empty;
var order_id = string.Empty;
{
var client = getTestClient();
var request = new PlanetAuthRequest { PlanetId = planet_id, PlanetSecretKey = planet_secret_key };
// Act
var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
// Assert
response.EnsureSuccessStatusCode();
var response_body = await response.Content.ReadFromJsonAsync<PlanetAuthResponse>();
Assert.NotNull(response_body);
planet_token = response_body.AccessToken;
}
{
var client = getTestClient();
var request = new ExchangeOrderRequest
{
UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Sapphire = 10, Emerald = 10
};
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
var response = await client.PostAsJsonAsync("/api/v1/exchange/order/create", request);
if (response.StatusCode == HttpStatusCode.BadRequest)
{
var response_body_error = await response.Content.ReadFromJsonAsync<ApiErrorResponse>();
Assert.NotNull(response_body_error);
m_test_output_helper.WriteLine(response_body_error.ErrorMessage);
// Assert.Contains("Insufficient balance", response_body_error);
return;
}
response.EnsureSuccessStatusCode();
var response_body = await response.Content.ReadFromJsonAsync<ExchangeOrderResponse>();
Assert.NotNull(response_body);
Assert.NotNull(response_body.OrderId);
order_id = response_body.OrderId;
// Assert
}
//UserGuid:1052b08b52ef4d69a27ee1f40911a72f
{
var client = getTestClient();
var request = new ExchangeOrderListRequest
{
UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Option = FindOption.All
};
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
var response = await client.PostAsJsonAsync("/api/v1/exchange/order/list", request);
response.EnsureSuccessStatusCode();
var response_body = await response.Content.ReadFromJsonAsync<ExchangeOrderListResponse>();
Assert.NotNull(response_body);
Assert.NotNull(response_body.Orders);
// Assert
}
{
var client = getTestClient();
var request =
new ExchangeOrderCompleteRequest { UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", OrderId = order_id };
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
var response = await client.PostAsJsonAsync("/api/v1/exchange/order/complete", request);
response.EnsureSuccessStatusCode();
var response_body = await response.Content.ReadFromJsonAsync<ExchangeOrderCompleteResponse>();
Assert.NotNull(response_body);
Assert.NotNull(response_body.OrderId);
Assert.Equal(order_id, response_body.OrderId);
Assert.Equal(ExchangeOrderStatus.Completed, response_body.Status);
// Assert
}
}
}

View File

@@ -1,19 +1,17 @@
using System.Net;
using System.Net.Http.Json;
using BrokerCore.ApiModels;
using BrokerCore.DbEntity;
using BrokerApiCore;
using BrokerTest.Helper;
using Microsoft.IdentityModel.Tokens;
using Xunit.Abstractions;
using ServerCommon;
using ServerCore;
using Xunit.Abstractions;
namespace BrokerTest.Controllers;
using BrokerApiServer;
using BrokerTest.Helper;
namespace BrokerTest;
public class StagePlanetUserControllerTests : IAsyncLifetime
{
private readonly ITestOutputHelper m_test_output_helper;
@@ -28,7 +26,7 @@ public class StagePlanetUserControllerTests : IAsyncLifetime
private readonly MetaTableTestHelper m_meta_table_test_helper = new();
// private readonly IBrokerTestServer m_server = new BrokerTestServer();
private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://qa.planethub.caliverse.io:12000");
private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://stage.planethub.caliverse.io:12000");
public StagePlanetUserControllerTests(ITestOutputHelper testOutputHelper)
{