Add channel test providers for Email, Slack, Teams, and Webhook
- Implemented EmailChannelTestProvider to generate email preview payloads. - Implemented SlackChannelTestProvider to create Slack message previews. - Implemented TeamsChannelTestProvider for generating Teams Adaptive Card previews. - Implemented WebhookChannelTestProvider to create webhook payloads. - Added INotifyChannelTestProvider interface for channel-specific preview generation. - Created ChannelTestPreviewContracts for request and response models. - Developed NotifyChannelTestService to handle test send requests and generate previews. - Added rate limit policies for test sends and delivery history. - Implemented unit tests for service registration and binding. - Updated project files to include necessary dependencies and configurations.
This commit is contained in:
		@@ -62,6 +62,18 @@ public sealed class AuthorityTokenDocument
 | 
			
		||||
    [BsonIgnoreIfNull]
 | 
			
		||||
    public string? RevokedReasonDescription { get; set; }
 | 
			
		||||
 | 
			
		||||
    [BsonElement("senderConstraint")]
 | 
			
		||||
    [BsonIgnoreIfNull]
 | 
			
		||||
    public string? SenderConstraint { get; set; }
 | 
			
		||||
 | 
			
		||||
    [BsonElement("senderKeyThumbprint")]
 | 
			
		||||
    [BsonIgnoreIfNull]
 | 
			
		||||
    public string? SenderKeyThumbprint { get; set; }
 | 
			
		||||
 | 
			
		||||
    [BsonElement("senderNonce")]
 | 
			
		||||
    [BsonIgnoreIfNull]
 | 
			
		||||
    public string? SenderNonce { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    [BsonElement("devices")]
 | 
			
		||||
    [BsonIgnoreIfNull]
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,13 @@ internal sealed class AuthorityTokenCollectionInitializer : IAuthorityCollection
 | 
			
		||||
                Builders<AuthorityTokenDocument>.IndexKeys
 | 
			
		||||
                    .Ascending(t => t.Status)
 | 
			
		||||
                    .Ascending(t => t.RevokedAt),
 | 
			
		||||
                new CreateIndexOptions<AuthorityTokenDocument> { Name = "token_status_revokedAt" })
 | 
			
		||||
                new CreateIndexOptions<AuthorityTokenDocument> { Name = "token_status_revokedAt" }),
 | 
			
		||||
            new(
 | 
			
		||||
                Builders<AuthorityTokenDocument>.IndexKeys.Ascending(t => t.SenderConstraint),
 | 
			
		||||
                new CreateIndexOptions<AuthorityTokenDocument> { Name = "token_sender_constraint", Sparse = true }),
 | 
			
		||||
            new(
 | 
			
		||||
                Builders<AuthorityTokenDocument>.IndexKeys.Ascending(t => t.SenderKeyThumbprint),
 | 
			
		||||
                new CreateIndexOptions<AuthorityTokenDocument> { Name = "token_sender_thumbprint", Sparse = true })
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        var expirationFilter = Builders<AuthorityTokenDocument>.Filter.Exists(t => t.ExpiresAt, true);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user