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
98 changes: 98 additions & 0 deletions Tests/Fido2.AspNet.Tests/AddFido2ExtensionTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
using System;

using Fido2NetLib;

using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Internal;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace Fido2.AspNet.Tests;

public class AddFido2ExtensionTests
{
[Fact]
public void AddFido2_WithConfiguration_RegistersServices()
{
// Arrange
var services = new ServiceCollection();
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string>
{
["ServerName"] = "Test Server",
["ServerDomain"] = "localhost",
["Origins"] = "https://localhost:5001"
})
.Build();

// Act
var builder = services.AddFido2(configuration);

// Assert
Assert.NotNull(builder);
Assert.IsAssignableFrom<IFido2NetLibBuilder>(builder);

var serviceProvider = services.BuildServiceProvider();

// Verify IFido2 can be resolved
var fido2 = serviceProvider.GetService<IFido2>();
Assert.NotNull(fido2);

// Verify Fido2Configuration can be resolved
var config = serviceProvider.GetService<Fido2Configuration>();
Assert.NotNull(config);
Assert.Equal("Test Server", config.ServerName);
Assert.Equal("localhost", config.ServerDomain);

// Verify ISystemClock is registered
var systemClock = serviceProvider.GetService<ISystemClock>();
Assert.NotNull(systemClock);

// Verify MDS is null
// var mds = serviceProvider.GetService<IMetadataService>();
// Assert.Null(mds);
}

[Fact]
public void AddFido2_WithSetupAction_RegistersServices()
{
// Arrange
var services = new ServiceCollection();

// Act
var builder = services.AddFido2(config =>
{
config.ServerName = "Action Server";
config.ServerDomain = "example.com";
config.Origins = new HashSet<string> { "https://example.com" };
});

// Assert
Assert.NotNull(builder);
Assert.IsAssignableFrom<IFido2NetLibBuilder>(builder);

var serviceProvider = services.BuildServiceProvider();

// Verify IFido2 can be resolved
var fido2 = serviceProvider.GetService<IFido2>();
Assert.NotNull(fido2);

// Verify Fido2Configuration can be resolved with correct values
var config = serviceProvider.GetService<Fido2Configuration>();
Assert.NotNull(config);
Assert.Equal("Action Server", config.ServerName);
Assert.Equal("example.com", config.ServerDomain);
Assert.Contains("https://example.com", config.Origins);

// Verify ISystemClock is registered
var systemClock = serviceProvider.GetService<ISystemClock>();
Assert.NotNull(systemClock);

// Verify MDS is null
// var mds = serviceProvider.GetService<IMetadataService>();
// Assert.Null(mds);
}
}
35 changes: 35 additions & 0 deletions Tests/Fido2.AspNet.Tests/Fido2.AspNet.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(SupportedTargetFrameworks)</TargetFrameworks>
<NoWarn>$(NoWarm);CA1822;IDE0007;IDE0037;IDE0039;IDE0057;CA1825</NoWarn>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\Src\Fido2\Fido2.csproj" />
<ProjectReference Include="..\..\Src\Fido2.AspNet\Fido2.AspNet.csproj" />
<ProjectReference Include="..\..\Src\Fido2.Models\Fido2.Models.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="Moq" Version="4.18.4" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup>
<Using Include="Xunit" />
</ItemGroup>
</Project>
7 changes: 7 additions & 0 deletions fido2-net-lib.sln
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "Demo\Demo.csproj",
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{9A6A08F5-14A7-4256-9717-2CF80B5B4AAC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fido2.AspNet.Tests", "Tests\Fido2.AspNet.Tests\Fido2.AspNet.Tests.csproj", "{B4E8AF2B-E616-4197-8366-CAF1222B53DD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -88,6 +90,10 @@ Global
{BAD65EF0-0157-4DAA-85CD-6BF53ED2E39A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BAD65EF0-0157-4DAA-85CD-6BF53ED2E39A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BAD65EF0-0157-4DAA-85CD-6BF53ED2E39A}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E8AF2B-E616-4197-8366-CAF1222B53DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E8AF2B-E616-4197-8366-CAF1222B53DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E8AF2B-E616-4197-8366-CAF1222B53DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E8AF2B-E616-4197-8366-CAF1222B53DD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -107,5 +113,6 @@ Global
{EAFF4332-145B-4719-B261-827CEB447A62} = {9A6A08F5-14A7-4256-9717-2CF80B5B4AAC}
{0EC19932-290A-4D92-9603-B0533DD022D9} = {9A6A08F5-14A7-4256-9717-2CF80B5B4AAC}
{BAD65EF0-0157-4DAA-85CD-6BF53ED2E39A} = {9A6A08F5-14A7-4256-9717-2CF80B5B4AAC}
{B4E8AF2B-E616-4197-8366-CAF1222B53DD} = {B7A8B758-5566-4D58-9157-36D23395C0E3}
EndGlobalSection
EndGlobal
Loading