Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ MONGO_INITDB_ROOT_PASSWORD=admin
COMANDA_MONGO_CONNECTIONSTRING=mongodb://admin:admin@localhost:27017/comanda?authSource=admin
COMANDA_MONGO_DATABASENAME=comanda

COMANDA_FEDERATION_BASEURL=http://localhost:8080
COMANDA_FEDERATION_AUTHORITY=http://localhost:8080
COMANDA_FEDERATION_REALM=comanda
COMANDA_FEDERATION_CLIENTID=client-identifier
COMANDA_FEDERATION_CLIENTSECRET=client-secret
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.1.1" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.3" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="4.2.0" />
<PackageReference Include="Comanda.Internal.Contracts" Version="1.0.8" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ public sealed record FederationSettings
public string ClientId { get; init; } = default!;
public string ClientSecret { get; init; } = default!;
public string Realm { get; init; } = default!;
public string BaseUrl { get; init; } = default!;
public string Authority { get; init; } = default!;
public string[] Audiences { get; init; } = default!;
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<PackageReference Include="Sentry.Serilog" Version="6.0.0" />
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
{
ClientCredentials = new OpenApiOAuthFlow
{
TokenUrl = new Uri(settings.Federation.BaseUrl + "/api/v1/protocol/open-id/connect/token")
TokenUrl = new Uri(settings.Federation.Authority + "/api/v1/protocol/open-id/connect/token")
}
}
};
Expand All @@ -41,12 +41,6 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
[document.Components.SecuritySchemes[SecuritySchemes.Bearer]] = Array.Empty<string>(),
});

document.Info.Contact = new OpenApiContact
{
Name = "Richard Garcia",
Email = "code.richardys@gmail.com",
};

return Task.CompletedTask;
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ public static void AddWebComposition(this IServiceCollection services)
services.AddOpenApiSpecification();
services.AddFederation(options =>
{
options.BaseUrl = settings.Federation.BaseUrl;
options.Authority = settings.Federation.Authority;
options.ClientId = settings.Federation.ClientId;
options.Realm = settings.Federation.Realm;
options.ClientSecret = settings.Federation.ClientSecret;
options.Audiences = settings.Federation.Audiences;
});

services.AddIdempotency()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"Settings": {
"Federation": {
"BaseUrl": "${Settings__Federation__BaseUrl}",
"Authority": "${Settings__Federation__BaseUrl}",
"Realm": "${Settings__Federation__Realm}",
"ClientId": "${Settings__Federation__ClientId}",
"ClientSecret": "${Settings__Federation__ClientSecret}"
"ClientSecret": "${Settings__Federation__ClientSecret}",
"Audiences": [ "${Settings__Federation__Audiences__0}" ]
},
"Downstream": {
"ProfilesUrl": "${Settings__Downstream__ProfilesUrl}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public sealed class WebApplicationFixture : IAsyncLifetime
public IServiceProvider Services { get; private set; } = default!;
private WebApplicationFactory<Program> _factory = default!;

public async ValueTask InitializeAsync()
public ValueTask InitializeAsync()
{
_factory = new WebApplicationFactory<Program>().WithWebHostBuilder(builder =>
{
Expand All @@ -22,7 +22,7 @@ public async ValueTask InitializeAsync()
options.DefaultScheme = Defaults.AuthenticationScheme;
});

policy.AddScheme<AuthenticationSchemeOptions, BypassAuthenticationHandler>(Defaults.AuthenticationScheme, _ => { });
policy.AddScheme<AuthenticationSchemeOptions, BypassAuthenticationHandler>(Defaults.AuthenticationScheme, _ => { });
services.AddAuthorizationBuilder()
.SetDefaultPolicy(new AuthorizationPolicyBuilder(Defaults.AuthenticationScheme)
.RequireAuthenticatedUser()
Expand All @@ -32,6 +32,8 @@ public async ValueTask InitializeAsync()

HttpClient = _factory.CreateClient();
Services = _factory.Services;

return ValueTask.CompletedTask;
}

public async ValueTask DisposeAsync()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.0.0" />
<PackageReference Include="Comanda.Internal.Contracts" Version="1.0.1" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="1.0.2" />
<PackageReference Include="Comanda.Internal.Contracts" Version="1.0.8" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.3" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ public sealed record FederationSettings
public string ClientId { get; init; } = default!;
public string ClientSecret { get; init; } = default!;
public string Realm { get; init; } = default!;
public string BaseUrl { get; init; } = default!;
public string Authority { get; init; } = default!;
public string[] Audiences { get; init; } = default!;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<PackageReference Include="Sentry.Serilog" Version="6.0.0" />
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
{
ClientCredentials = new OpenApiOAuthFlow
{
TokenUrl = new Uri(settings.Federation.BaseUrl + "/api/v1/protocol/open-id/connect/token")
TokenUrl = new Uri(settings.Federation.Authority + "/api/v1/protocol/open-id/connect/token")
}
}
};
Expand All @@ -41,12 +41,6 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
[document.Components.SecuritySchemes[SecuritySchemes.Bearer]] = Array.Empty<string>(),
});

document.Info.Contact = new OpenApiContact
{
Name = "Richard Garcia",
Email = "code.richardy@gmail.com",
};

return Task.CompletedTask;
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ public static void AddWebComposition(this IServiceCollection services)
services.AddOpenApiSpecification();
services.AddFederation(options =>
{
options.BaseUrl = settings.Federation.BaseUrl;
options.Authority = settings.Federation.Authority;
options.ClientId = settings.Federation.ClientId;
options.Realm = settings.Federation.Realm;
options.ClientSecret = settings.Federation.ClientSecret;
options.Audiences = settings.Federation.Audiences;
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
"DatabaseName": "${Settings__Database__DatabaseName}"
},
"Federation": {
"BaseUrl": "${Settings__Federation__BaseUrl}",
"Authority": "${Settings__Federation__Authority}",
"Realm": "${Settings__Federation__Realm}",
"ClientId": "${Settings__Federation__ClientId}",
"ClientSecret": "${Settings__Federation__ClientSecret}"
"ClientSecret": "${Settings__Federation__ClientSecret}",
"Audiences": [ "${Settings__Federation__Audiences__0}" ]
},
"Observability": {
"SeqServerUrl": "${Settings__Observability__SeqServerUrl}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public async ValueTask InitializeAsync()
_factory = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.UseEnvironment("Testing");
builder.ConfigureServices(services =>
{
services.AddAuthentication(options =>
Expand Down
1 change: 1 addition & 0 deletions Boundaries/Comanda.Orders/Tests/Usings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
global using Microsoft.AspNetCore.Authorization;

global using Microsoft.AspNetCore.Mvc.Testing;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.Extensions.DependencyInjection;

global using Comanda.Orders.WebApi;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.0.0" />
<PackageReference Include="Comanda.Internal.Contracts" Version="1.0.1" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="1.0.2" />
<PackageReference Include="Comanda.Internal.Contracts" Version="1.0.8" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.3" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ public sealed record FederationSettings
public string ClientId { get; init; } = default!;
public string ClientSecret { get; init; } = default!;
public string Realm { get; init; } = default!;
public string BaseUrl { get; init; } = default!;
public string Authority { get; init; } = default!;
public string[] Audiences { get; init; } = default!;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<PackageReference Include="Sentry.Serilog" Version="6.0.0" />
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ public static class MonitoringExtension
{
public static void AddMonitoring(this WebApplicationBuilder builder)
{
// prevents sentry from being initialized in non-production/non-development environments (e.g., testing)
if (!builder.Environment.IsDevelopment() && !builder.Environment.IsProduction())
return;

var settings = builder.Services
.BuildServiceProvider()
.GetRequiredService<ISettings>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ public static class ObservabilityExtension
{
public static void AddObservability(this WebApplicationBuilder builder)
{
// prevents seq from being initialized in non-production/non-development environments (e.g., testing)
if (!builder.Environment.IsDevelopment() && !builder.Environment.IsProduction())
return;

builder.Host.UseSerilog((context, services, logger) =>
{
var settings = services.GetRequiredService<ISettings>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
{
ClientCredentials = new OpenApiOAuthFlow
{
TokenUrl = new Uri(settings.Federation.BaseUrl + "/api/v1/protocol/open-id/connect/token")
TokenUrl = new Uri(settings.Federation.Authority + "/api/v1/protocol/open-id/connect/token")
}
}
};
Expand All @@ -40,12 +40,6 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
[document.Components.SecuritySchemes[SecuritySchemes.Bearer]] = Array.Empty<string>(),
});

document.Info.Contact = new OpenApiContact
{
Name = "Richard Garcia",
Email = "code.richardy@gmail.com",
};

return Task.CompletedTask;
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ namespace Comanda.Payments.WebApi.Extensions;
[ExcludeFromCodeCoverage(Justification = "contains only web infrastructure configuration with no business logic.")]
public static class WebInfrastructureExtension
{
public static void AddWebComposition(this IServiceCollection services, IWebHostEnvironment environment)
public static void AddWebComposition(this IServiceCollection services)
{
var provider = services.BuildServiceProvider();
var settings = provider.GetRequiredService<ISettings>();
Expand All @@ -22,10 +22,11 @@ public static void AddWebComposition(this IServiceCollection services, IWebHostE
services.AddOpenApiSpecification();
services.AddFederation(options =>
{
options.BaseUrl = settings.Federation.BaseUrl;
options.Authority = settings.Federation.Authority;
options.ClientId = settings.Federation.ClientId;
options.Realm = settings.Federation.Realm;
options.ClientSecret = settings.Federation.ClientSecret;
options.Audiences = settings.Federation.Audiences;
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ private static async Task Main(string[] args)
var configuration = builder.Configuration;

builder.Services.AddInfrastructure(configuration);
builder.Services.AddWebComposition(environment);
builder.Services.AddWebComposition();

builder.Configuration.AddEnvironmentVariables();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
"DatabaseName": "${Settings__Database__DatabaseName}"
},
"Federation": {
"BaseUrl": "${Settings__Federation__BaseUrl}",
"Authority": "${Settings__Federation__Authority}",
"Realm": "${Settings__Federation__Realm}",
"ClientId": "${Settings__Federation__ClientId}",
"ClientSecret": "${Settings__Federation__ClientSecret}"
"ClientSecret": "${Settings__Federation__ClientSecret}",
"Audiences": [ "${Settings__Federation__Audiences__0}" ]
},
"AbacatePay": {
"Url": "${Settings__AbacatePay__Url}"
Expand All @@ -28,4 +29,4 @@
"FromLogContext"
]
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;

namespace Comanda.Payments.TestSuite.Fixtures;

Expand Down Expand Up @@ -28,6 +29,7 @@ public async ValueTask InitializeAsync()
_factory = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.UseEnvironment("Testing");
builder.ConfigureServices(services =>
{
services.AddAuthentication(options =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.0.0" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Dispatcher" Version="1.0.3" />
<PackageReference Include="HttpsRichardy.Federation.Sdk.Contracts" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ public sealed record FederationSettings
public string ClientId { get; init; } = default!;
public string ClientSecret { get; init; } = default!;
public string Realm { get; init; } = default!;
public string BaseUrl { get; init; } = default!;
public string Authority { get; init; } = default!;
public string[] Audiences { get; init; } = default!;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<PackageReference Include="Sentry.Serilog" Version="6.0.0" />
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="1.0.2" />
<PackageReference Include="HttpsRichardy.Federation.Sdk" Version="4.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
{
ClientCredentials = new OpenApiOAuthFlow
{
TokenUrl = new Uri(settings.Federation.BaseUrl + "/api/v1/protocol/open-id/connect/token")
TokenUrl = new Uri(settings.Federation.Authority + "/api/v1/protocol/open-id/connect/token")
}
}
};
Expand All @@ -40,12 +40,6 @@ public static void AddOpenApiSpecification(this IServiceCollection services)
[document.Components.SecuritySchemes[SecuritySchemes.Bearer]] = Array.Empty<string>(),
});

document.Info.Contact = new OpenApiContact
{
Name = "vinder.io",
Email = "vinder.desenvolvimento@gmail.com",
};

return Task.CompletedTask;
});
});
Expand Down
Loading
Loading