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
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@
<PackageVersion Include="Xunit.SkippableFact" Version="1.5.23" />

<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0" />
<PackageVersion Include="Verify.Xunit" Version="26.6.0" />

<!-- Transitive Dependencies -->
<!-- These packages are all transitive dependencies that would
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="PublicApiGenerator" />
<PackageReference Include="Verify.Xunit" />

</ItemGroup>

<ItemGroup>
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
namespace Duende.Bff.Blazor.Client
{
public class AntiforgeryHandler : System.Net.Http.DelegatingHandler
{
public AntiforgeryHandler() { }
protected override System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { }
}
public class BffBlazorClientOptions
{
public BffBlazorClientOptions() { }
public string? RemoteApiBaseAddress { get; set; }
public string RemoteApiPath { get; set; }
public string? StateProviderBaseAddress { get; set; }
public int WebAssemblyStateProviderPollingDelay { get; set; }
public int WebAssemblyStateProviderPollingInterval { get; set; }
}
public static class Constants
{
public static class ClaimTypes
{
public const string LogoutUrl = "bff:logout_url";
}
}
public static class ServiceCollectionExtensions
{
public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddBffBlazorClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<Duende.Bff.Blazor.Client.BffBlazorClientOptions>? configureAction = null) { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.Net.Http.HttpClient> configureClient) { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null) { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddLocalApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null)
where T : class { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.Net.Http.HttpClient> configureClient) { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string clientName, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null) { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.Net.Http.HttpClient> configureClient)
where T : class { }
public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddRemoteApiHttpClient<T>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action<System.IServiceProvider, System.Net.Http.HttpClient>? configureClient = null)
where T : class { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
namespace Duende.Bff
{
public sealed class ActivityPropagationHandler : System.Net.Http.DelegatingHandler
{
public ActivityPropagationHandler(System.Net.Http.HttpMessageHandler innerHandler) { }
protected override System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { }
}
}
namespace Duende.Bff.Yarp
{
public class AccessTokenRequestTransform : Yarp.ReverseProxy.Transforms.RequestTransform
{
public AccessTokenRequestTransform(Microsoft.Extensions.Options.IOptions<Duende.Bff.BffOptions> options, Duende.AccessTokenManagement.IDPoPProofService proofService, Microsoft.Extensions.Logging.ILogger<Duende.Bff.Yarp.AccessTokenRequestTransform> logger) { }
public override System.Threading.Tasks.ValueTask ApplyAsync(Yarp.ReverseProxy.Transforms.RequestTransformContext context) { }
}
public class AccessTokenTransformProvider : Yarp.ReverseProxy.Transforms.Builder.ITransformProvider
{
public AccessTokenTransformProvider(Microsoft.Extensions.Options.IOptions<Duende.Bff.BffOptions> options, Microsoft.Extensions.Logging.ILogger<Duende.Bff.Yarp.AccessTokenTransformProvider> logger, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Duende.AccessTokenManagement.IDPoPProofService dPoPProofService) { }
public void Apply(Yarp.ReverseProxy.Transforms.Builder.TransformBuilderContext transformBuildContext) { }
public void ValidateCluster(Yarp.ReverseProxy.Transforms.Builder.TransformClusterValidationContext context) { }
public void ValidateRoute(Yarp.ReverseProxy.Transforms.Builder.TransformRouteValidationContext context) { }
}
public class AntiforgeryMiddleware
{
public AntiforgeryMiddleware(Microsoft.AspNetCore.Http.RequestDelegate next, Microsoft.Extensions.Options.IOptions<Duende.Bff.BffOptions> options, Microsoft.Extensions.Logging.ILogger<Duende.Bff.Yarp.AntiforgeryMiddleware> logger) { }
public System.Threading.Tasks.Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) { }
}
public static class BffBuilderExtensions
{
public static Microsoft.AspNetCore.Builder.BffBuilder AddRemoteApis(this Microsoft.AspNetCore.Builder.BffBuilder builder) { }
}
public delegate void BffYarpTransformBuilder(string localPath, Yarp.ReverseProxy.Transforms.Builder.TransformBuilderContext context);
public static class DefaultBffYarpTransformerBuilders
{
public static Duende.Bff.Yarp.BffYarpTransformBuilder DirectProxyWithAccessToken;
}
public static class ProxyAppBuilderExtensions
{
public static Microsoft.AspNetCore.Builder.IApplicationBuilder UseAntiforgeryCheck(this Microsoft.AspNetCore.Builder.IApplicationBuilder yarpApp) { }
}
public static class ProxyConfigExtensions
{
public static Yarp.ReverseProxy.Configuration.ClusterConfig WithAccessToken(this Yarp.ReverseProxy.Configuration.ClusterConfig config, Duende.Bff.TokenType tokenType) { }
public static Yarp.ReverseProxy.Configuration.RouteConfig WithAccessToken(this Yarp.ReverseProxy.Configuration.RouteConfig config, Duende.Bff.TokenType tokenType) { }
public static Yarp.ReverseProxy.Configuration.RouteConfig WithAntiforgeryCheck(this Yarp.ReverseProxy.Configuration.RouteConfig config) { }
public static Yarp.ReverseProxy.Configuration.RouteConfig WithOptionalUserAccessToken(this Yarp.ReverseProxy.Configuration.RouteConfig config) { }
}
public static class ReverseProxyBuilderExtensions
{
public static Microsoft.Extensions.DependencyInjection.IReverseProxyBuilder AddBffExtensions(this Microsoft.Extensions.DependencyInjection.IReverseProxyBuilder builder) { }
}
public static class ReverseProxyEndpointConventionBuilderExtensions
{
public static Microsoft.AspNetCore.Builder.ReverseProxyConventionBuilder AsBffApiEndpoint(this Microsoft.AspNetCore.Builder.ReverseProxyConventionBuilder builder) { }
public static Microsoft.AspNetCore.Builder.ReverseProxyConventionBuilder MapBffReverseProxy(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints) { }
public static Microsoft.AspNetCore.Builder.ReverseProxyConventionBuilder MapBffReverseProxy(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, System.Action<Microsoft.AspNetCore.Builder.IReverseProxyApplicationBuilder> configureAction) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright (c) Duende Software. All rights reserved.
// See LICENSE in the project root for license information.

using Duende.Bff.Blazor.Client;
using PublicApiGenerator;

namespace Bff.Tests;

public class PublicApiVerificationTests
{


[Fact]
public async Task VerifyPublicApi_Bff_Blazor_Client()
{
var apiGeneratorOptions = new ApiGeneratorOptions
{
IncludeAssemblyAttributes = false
};
var publicApi = typeof(AntiforgeryHandler).Assembly.GeneratePublicApi(apiGeneratorOptions);
var settings = new VerifySettings();
await Verify(publicApi, settings);
}

}
3 changes: 3 additions & 0 deletions bff/test/Bff.Blazor.UnitTests/Bff.Blazor.UnitTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
<ItemGroup>
<PackageReference Include="NSubstitute" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
<PackageReference Include="PublicApiGenerator" />
<PackageReference Include="Verify.Xunit" />

</ItemGroup>

<ItemGroup>
Expand Down
Loading