초기커밋
This commit is contained in:
302
BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs
Normal file
302
BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs
Normal file
@@ -0,0 +1,302 @@
|
||||
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 PlanetUserControllerTests : IAsyncLifetime
|
||||
{
|
||||
private readonly ITestOutputHelper m_test_output_helper;
|
||||
// const string m_planet_id = "new_earth";
|
||||
const string m_planet_id = "igm26_iggymob";
|
||||
const string m_planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
|
||||
const string m_user_guid = "1052b08b52ef4d69a27ee1f40911a72f"; //park chan heon
|
||||
const string m_account_id = "20462";
|
||||
|
||||
//40dbf485dc5b41508b7d53aa77819201
|
||||
// const string m_account_id = "20437";
|
||||
// const string m_user_guid = "40dbf485dc5b41508b7d53aa77819201";
|
||||
|
||||
private string m_planet_token = string.Empty;
|
||||
private readonly MetaTableTestHelper m_meta_table_test_helper = new();
|
||||
|
||||
// private readonly IBrokerTestServer m_server = new BrokerTestServer();
|
||||
private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://dev.planethub.caliverse.io:12000");
|
||||
|
||||
public PlanetUserControllerTests(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()
|
||||
{
|
||||
MetaTableTestHelper meta_table_test_helper = new();
|
||||
meta_table_test_helper.load();
|
||||
var meta = meta_table_test_helper.getMetaTableRef();
|
||||
Assert.NotNull(meta);
|
||||
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, 5));
|
||||
// 테스트 이력용
|
||||
foreach (var i in Enumerable.Range(0, 1))
|
||||
{
|
||||
foreach (var meta_tuple in meta_tuples)
|
||||
{
|
||||
await orderTest(meta_tuple.Item1, meta_tuple.Item2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// [Fact(DisplayName = "아이템 교환 주문 예외테스트")]
|
||||
// public async Task exceptionTests()
|
||||
// {
|
||||
// MetaTableTestHelper meta_table_test_helper = new();
|
||||
// meta_table_test_helper.load();
|
||||
// var meta = meta_table_test_helper.getMetaTableRef();
|
||||
// Assert.NotNull(meta);
|
||||
// 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 dailyAmountExceedError(string metaId, int metaAmount, int totalDailyAmount)
|
||||
{
|
||||
const string TEST_SEASON_ID = "TEST_SEASON_ID";
|
||||
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);
|
||||
if (exchange_response.StatusCode == HttpStatusCode.BadRequest)
|
||||
{
|
||||
|
||||
}
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task orderTest(string metaId, int metaAmount)
|
||||
{
|
||||
const string TEST_SEASON_ID = "TEST_SEASON_ID";
|
||||
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
|
||||
{
|
||||
PlanetId = m_planet_id,
|
||||
SeasonId = TEST_SEASON_ID,
|
||||
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/list";
|
||||
var client = getTestClientWithBearer();
|
||||
var list_request = new PlanetItemExchangeOrderListRequest
|
||||
{
|
||||
PlanetId = m_planet_id,
|
||||
ExchangeMetaId = metaId,
|
||||
SeasonId = TEST_SEASON_ID,
|
||||
SsoAccountId = m_account_id, Option = FindOption.All,
|
||||
};
|
||||
|
||||
// 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/list";
|
||||
var client = getTestClientWithBearer();
|
||||
var list_request = new PlanetItemExchangeOrderListRequest
|
||||
{
|
||||
PlanetId = m_planet_id,
|
||||
ExchangeMetaId = "",
|
||||
SeasonId = TEST_SEASON_ID,
|
||||
SsoAccountId = m_account_id, Option = FindOption.All,
|
||||
};
|
||||
|
||||
// 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);
|
||||
|
||||
Assert.True(list_response_body.TotalCount > 0);
|
||||
}
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user