From 6c0c0e95814dc66cc9ec163e42bf2f988dafd278 Mon Sep 17 00:00:00 2001 From: matmiranda Date: Sun, 6 Aug 2023 01:38:49 -0300 Subject: [PATCH] add mock --- Icon/pagbank-dotnet.png | Bin 0 -> 4496 bytes PagBank/Client/PagBankClient.cs | 30 +++++---------------- PagBank/Config/Interface/IPagBankConfig.cs | 9 +++++++ PagBank/Config/PagBankConfig.cs | 9 +++++++ PagBank/PagBank.csproj | 13 +++++++-- PagBank/Usings.cs | 2 +- PagBank/Util/PagBankUtil.cs | 20 ++++++++++++++ PagBankTest/UnitTest1.cs | 17 ++++++------ 8 files changed, 64 insertions(+), 36 deletions(-) create mode 100644 Icon/pagbank-dotnet.png create mode 100644 PagBank/Config/Interface/IPagBankConfig.cs create mode 100644 PagBank/Config/PagBankConfig.cs create mode 100644 PagBank/Util/PagBankUtil.cs diff --git a/Icon/pagbank-dotnet.png b/Icon/pagbank-dotnet.png new file mode 100644 index 0000000000000000000000000000000000000000..178674aa60895602eddb1c3cf0bbe7b7d78d53b8 GIT binary patch literal 4496 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 ExecuteAsync(PagBankRequest pagBankRequest) where T : class { + _pagBankConfig.RestClient ??= new RestClient(PagBankUtil.RestClientOptions(_pagBankConfig)); var request = new RestRequest(pagBankRequest.Endpoint, (RestSharp.Method)pagBankRequest.Method); if (pagBankRequest.Body != null) request.AddJsonBody(pagBankRequest.Body, ContentType.Json); request.AddOrUpdateHeader("accept", ContentType.Json); - request.AddOrUpdateHeader("user-agent", GetUserAgent()); + request.AddOrUpdateHeader("user-agent", PagBankUtil.GetUserAgent()); if (pagBankRequest.Headers != null) foreach (var header in pagBankRequest.Headers) request.AddOrUpdateHeader(header.Key, header.Value); - return await _restClient.ExecuteAsync(request); - } - - private RestClientOptions RestClientOptions() - { - var options = new RestClientOptions(_baseUrl.GetDescription()); - options.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token, "Bearer"); - return options; - } - - internal static string GetUserAgent() - { - var assembly = Assembly.GetExecutingAssembly(); - var attribute = assembly.GetCustomAttribute(); - var version = attribute?.InformationalVersion; - return $"pagbank-dotnet/{version}"; + return await _pagBankConfig.RestClient.ExecuteAsync(request); } } } diff --git a/PagBank/Config/Interface/IPagBankConfig.cs b/PagBank/Config/Interface/IPagBankConfig.cs new file mode 100644 index 0000000..aad86cc --- /dev/null +++ b/PagBank/Config/Interface/IPagBankConfig.cs @@ -0,0 +1,9 @@ +namespace PagBank +{ + public interface IPagBankConfig + { + BaseUrl BaseUrl { get; } + string Token { get; } + IRestClient? RestClient { get; } + } +} diff --git a/PagBank/Config/PagBankConfig.cs b/PagBank/Config/PagBankConfig.cs new file mode 100644 index 0000000..269399c --- /dev/null +++ b/PagBank/Config/PagBankConfig.cs @@ -0,0 +1,9 @@ +namespace PagBank +{ + public class PagBankConfig : IPagBankConfig + { + public required BaseUrl BaseUrl { get; set; } + public required string Token { get; set; } + public IRestClient? RestClient { get; set; } + } +} diff --git a/PagBank/PagBank.csproj b/PagBank/PagBank.csproj index 9c806c4..1865dcc 100644 --- a/PagBank/PagBank.csproj +++ b/PagBank/PagBank.csproj @@ -4,8 +4,8 @@ net7.0 enable enable - 1.0.2 - Matheus Miranda + 1.0.3 + Matheus Miranda, PagBank True pagbank;dotnet @@ -18,9 +18,14 @@ LICENSE Copyright (c) 2023 Matheus Miranda README.md + pagbank-dotnet.png + + True + \ + True \ @@ -35,4 +40,8 @@ + + + + diff --git a/PagBank/Usings.cs b/PagBank/Usings.cs index 2ba55aa..c187309 100644 --- a/PagBank/Usings.cs +++ b/PagBank/Usings.cs @@ -1,5 +1,5 @@ global using PagBank.Extension; global using RestSharp; -global using RestSharp.Authenticators.OAuth2; global using System.ComponentModel; global using System.Reflection; +global using RestSharp.Authenticators.OAuth2; diff --git a/PagBank/Util/PagBankUtil.cs b/PagBank/Util/PagBankUtil.cs new file mode 100644 index 0000000..c2e1ff2 --- /dev/null +++ b/PagBank/Util/PagBankUtil.cs @@ -0,0 +1,20 @@ +namespace PagBank +{ + public class PagBankUtil + { + internal static string GetUserAgent() + { + var assembly = Assembly.GetExecutingAssembly(); + var attribute = assembly.GetCustomAttribute(); + var version = attribute?.InformationalVersion; + return $"pagbank-dotnet/{version}"; + } + + internal static RestClientOptions RestClientOptions(PagBankConfig pagBankConfig) + { + var options = new RestClientOptions(pagBankConfig.BaseUrl.GetDescription()); + options.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(pagBankConfig.Token, "Bearer"); + return options; + } + } +} diff --git a/PagBankTest/UnitTest1.cs b/PagBankTest/UnitTest1.cs index 3281ad0..8a5b9e1 100644 --- a/PagBankTest/UnitTest1.cs +++ b/PagBankTest/UnitTest1.cs @@ -10,13 +10,6 @@ public class Tests [Test] public async Task MockCriarPedido() { - // Define o seu token - var token = "123"; - - // Crie header - //var header = new Dictionary(); - //header.Add("accept", "application/json"); - // Crie objeto var body = new { @@ -53,11 +46,17 @@ public async Task MockCriarPedido() .Setup(x => x.ExecuteAsync(It.IsAny(), default)) .ReturnsAsync(restResponse); + var config = new PagBankConfig + { + BaseUrl = BaseUrl.Sandbox, + Token = "123", + RestClient = mockRestClient.Object + }; + // Create the PagBankClient using the mocked IRestClient - var pagBankClient = new PagBankClient(BaseUrl.Sandbox, token, mockRestClient.Object); + var pagBankClient = new PagBankClient(config); // Chame o método que utiliza o método ExecuteAsync - //var response = await pagBankClient.ExecuteAsync(pagBankRequest); var response = await pagBankClient.ExecuteAsync(pagBankRequest); // Verifique o resultado