using BuildingBlock.Identity.Contracts.Abstractions; using BuildingBlock.Identity.Contracts.Conventions; using BuildingBlock.Identity.Contracts.Requests; using BuildingBlock.Identity.Contracts.Responses; namespace BuildingBlock.Identity.Contracts.UnitTests; public class ContractShapeTests { [Fact] public void IdentityEnvelope_WhenCreated_PreservesValues() { var envelope = new IdentityContractEnvelope("1.0.0", "corr-identity-001"); Assert.Equal("1.0.0", envelope.ContractVersion); Assert.Equal("corr-identity-001", envelope.CorrelationId); } [Fact] public void IdentityContracts_WhenInstantiated_ImplementMarkerInterface() { IIdentityCapabilityContract issueRequest = new IssueIdentityTokenRequest( "subject-a", "tenant-a", IdentityAuthProvider.AzureAd, "external-token"); IIdentityCapabilityContract issueResponse = new IssueIdentityTokenResponse("token-a", 1800); IIdentityCapabilityContract policyRequest = new EvaluateIdentityPolicyRequest( "subject-b", "tenant-b", "identity.token.issue", IdentityAuthProvider.Google); IIdentityCapabilityContract policyResponse = new EvaluateIdentityPolicyResponse("subject-b", "identity.token.issue", true); IIdentityCapabilityContract refreshRequest = new RefreshIdentitySessionRequest( "refresh-a", "corr-refresh", IdentityAuthProvider.InternalJwt); IIdentityCapabilityContract refreshResponse = new RefreshIdentitySessionResponse("token-b", 900); IIdentityCapabilityContract exchangeRequest = new ExchangeIdentityProviderTokenRequest( "tenant-c", IdentityAuthProvider.AzureAd, "provider-token", "corr-exchange"); IIdentityCapabilityContract exchangeResponse = new ExchangeIdentityProviderTokenResponse( "subject-c", "tenant-c", IdentityAuthProvider.AzureAd, true); Assert.NotNull(issueRequest); Assert.NotNull(issueResponse); Assert.NotNull(policyRequest); Assert.NotNull(policyResponse); Assert.NotNull(refreshRequest); Assert.NotNull(refreshResponse); Assert.NotNull(exchangeRequest); Assert.NotNull(exchangeResponse); } [Fact] public void IssueIdentityTokenRequest_WhenProviderSpecified_PreservesProviderMetadata() { var request = new IssueIdentityTokenRequest( "subject-1", "tenant-1", IdentityAuthProvider.Google, "google-token"); Assert.Equal(IdentityAuthProvider.Google, request.Provider); Assert.Equal("google-token", request.ExternalToken); } }