Skip to content

Commit

Permalink
add mock
Browse files Browse the repository at this point in the history
  • Loading branch information
matmiranda committed Aug 6, 2023
1 parent 3cd862f commit 6c0c0e9
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 36 deletions.
Binary file added Icon/pagbank-dotnet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 6 additions & 24 deletions PagBank/Client/PagBankClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,25 @@
{
public class PagBankClient : IPagBankClient
{
private readonly string _token;
private readonly BaseUrl _baseUrl;
private readonly IRestClient _restClient;
private readonly PagBankConfig _pagBankConfig;

public PagBankClient(BaseUrl baseUrl, string token, IRestClient? restClient = null)
public PagBankClient(PagBankConfig pagBankConfig)
{
_token = token;
_baseUrl = baseUrl;
_restClient = restClient ?? new RestClient(RestClientOptions());
_pagBankConfig = pagBankConfig;
}

public async Task<RestResponse> ExecuteAsync<T>(PagBankRequest<T> 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<AssemblyInformationalVersionAttribute>();
var version = attribute?.InformationalVersion;
return $"pagbank-dotnet/{version}";
return await _pagBankConfig.RestClient.ExecuteAsync(request);
}
}
}
9 changes: 9 additions & 0 deletions PagBank/Config/Interface/IPagBankConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace PagBank
{
public interface IPagBankConfig
{
BaseUrl BaseUrl { get; }
string Token { get; }
IRestClient? RestClient { get; }
}
}
9 changes: 9 additions & 0 deletions PagBank/Config/PagBankConfig.cs
Original file line number Diff line number Diff line change
@@ -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; }
}
}
13 changes: 11 additions & 2 deletions PagBank/PagBank.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.0.2</Version>
<Authors>Matheus Miranda</Authors>
<Version>1.0.3</Version>
<Authors>Matheus Miranda, PagBank</Authors>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageTags>pagbank;dotnet</PackageTags>
<PackageReleaseNotes></PackageReleaseNotes>
Expand All @@ -18,9 +18,14 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Copyright>Copyright (c) 2023 Matheus Miranda</Copyright>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>pagbank-dotnet.png</PackageIcon>
</PropertyGroup>

<ItemGroup>
<None Include="..\Icon\pagbank-dotnet.png">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
<None Include="..\LICENSE">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
Expand All @@ -35,4 +40,8 @@
<PackageReference Include="RestSharp" Version="110.2.0" />
</ItemGroup>

<ItemGroup>
<Folder Include="Service\" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion PagBank/Usings.cs
Original file line number Diff line number Diff line change
@@ -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;
20 changes: 20 additions & 0 deletions PagBank/Util/PagBankUtil.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace PagBank
{
public class PagBankUtil
{
internal static string GetUserAgent()
{
var assembly = Assembly.GetExecutingAssembly();
var attribute = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
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;
}
}
}
17 changes: 8 additions & 9 deletions PagBankTest/UnitTest1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, string>();
//header.Add("accept", "application/json");

// Crie objeto
var body = new
{
Expand Down Expand Up @@ -53,11 +46,17 @@ public async Task MockCriarPedido()
.Setup(x => x.ExecuteAsync(It.IsAny<RestRequest>(), 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
Expand Down

0 comments on commit 6c0c0e9

Please sign in to comment.