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(); 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(); 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(); 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(); 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(); Assert.NotNull(response_body); Assert.NotNull(response_body.OrderId); Assert.Equal(order_id, response_body.OrderId); Assert.Equal(ExchangeOrderStatus.Completed, response_body.Status); // Assert } } }