Files
tiku-backend.net/Tiku.UnitTests/Tenancy/TenantOwnerActivationUrlPolicyTests.cs
xiong c497a3ca8d
Some checks failed
ci / release-gate (push) Has been cancelled
清理代码
2026-08-03 12:31:39 +08:00

48 lines
1.5 KiB
C#

using Tiku.Application.PlatformAdmin;
namespace Tiku.UnitTests.Tenancy;
public sealed class TenantOwnerActivationUrlPolicyTests
{
[Fact]
public void Custom_domain_always_uses_secure_activation_origin()
{
var id = Guid.NewGuid();
var options = new TenantProvisioningOptions
{
OwnerActivationUrlTemplate = "https://{host}",
DevelopmentLocalhostOwnerActivationUrlTemplate = "http://{host}:5180"
};
var url = TenantOwnerActivationUrlPolicy.Build(options, "School.Example.Test", id, "secret");
Assert.Equal($"https://school.example.test/activate/{id}#token=secret", url);
}
[Fact]
public void Development_localhost_can_use_explicit_http_origin()
{
var id = Guid.NewGuid();
var options = new TenantProvisioningOptions
{
OwnerActivationUrlTemplate = "https://{host}",
DevelopmentLocalhostOwnerActivationUrlTemplate = "http://{host}:5180"
};
var url = TenantOwnerActivationUrlPolicy.Build(options, "school.localhost", id, "secret");
Assert.Equal($"http://school.localhost:5180/activate/{id}#token=secret", url);
}
[Fact]
public void Insecure_custom_domain_template_is_rejected()
{
var options = new TenantProvisioningOptions
{
OwnerActivationUrlTemplate = "http://{host}"
};
Assert.Throws<InvalidOperationException>(() =>
TenantOwnerActivationUrlPolicy.Build(options, "school.example.test", Guid.NewGuid(), "secret"));
}
}