InboundGrantIssuanceTests.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Admin.NET.Plugin.AiDOP.DataPlatform.Inbound;
  2. using Xunit;
  3. namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform;
  4. public class InboundGrantIssuanceTests
  5. {
  6. private static string NeverCalled() => throw new InvalidOperationException("不应签发新凭据");
  7. [Fact]
  8. public void EmptyKey_CreatesIdentity_AndBothTokens()
  9. {
  10. var plan = InboundGrantIssuance.Plan("", 11, 0, false, () => "key-1", () => "secret-1");
  11. Assert.Equal(InboundGrantIssuanceKind.CreateIdentity, plan.Kind);
  12. Assert.Equal("key-1", plan.AccessKey);
  13. Assert.Equal("secret-1", plan.AccessSecret);
  14. }
  15. [Fact]
  16. public void SameTenantKey_ReusesIdentity_WithoutNewSecret()
  17. {
  18. var plan = InboundGrantIssuance.Plan("existing", 11, boundTenantId: 11, identityExists: true, NeverCalled, NeverCalled);
  19. Assert.Equal(InboundGrantIssuanceKind.ReuseIdentity, plan.Kind);
  20. Assert.Equal("existing", plan.AccessKey);
  21. Assert.Equal("", plan.AccessSecret);
  22. }
  23. [Fact]
  24. public void OtherTenantKey_IsRejected()
  25. {
  26. var plan = InboundGrantIssuance.Plan("existing", 11, boundTenantId: 22, identityExists: true, NeverCalled, NeverCalled);
  27. Assert.Equal(InboundGrantIssuanceKind.RejectCrossTenant, plan.Kind);
  28. }
  29. [Fact]
  30. public void UnknownKey_IsRejected()
  31. {
  32. var plan = InboundGrantIssuance.Plan("missing", 11, boundTenantId: 0, identityExists: false, NeverCalled, NeverCalled);
  33. Assert.Equal(InboundGrantIssuanceKind.RejectUnknownKey, plan.Kind);
  34. }
  35. [Fact]
  36. public void Reuse_IsIdempotent_AcrossRepeatedPlans()
  37. {
  38. var first = InboundGrantIssuance.Plan("existing", 11, 11, true, NeverCalled, NeverCalled);
  39. var second = InboundGrantIssuance.Plan("existing", 11, 11, true, NeverCalled, NeverCalled);
  40. Assert.Equal(first, second);
  41. }
  42. }