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:
		@@ -94,4 +94,50 @@ public sealed class MongoBootstrapperTests : IClassFixture<MongoIntegrationFixtu
 | 
			
		||||
            await _fixture.Client.DropDatabaseAsync(databaseName);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Fact]
 | 
			
		||||
    public async Task InitializeAsync_CreatesAdvisoryEventIndexes()
 | 
			
		||||
    {
 | 
			
		||||
        var databaseName = $"concelier-bootstrap-events-{Guid.NewGuid():N}";
 | 
			
		||||
        var database = _fixture.Client.GetDatabase(databaseName);
 | 
			
		||||
 | 
			
		||||
        try
 | 
			
		||||
        {
 | 
			
		||||
            var runner = new MongoMigrationRunner(
 | 
			
		||||
                database,
 | 
			
		||||
                Array.Empty<IMongoMigration>(),
 | 
			
		||||
                NullLogger<MongoMigrationRunner>.Instance,
 | 
			
		||||
                TimeProvider.System);
 | 
			
		||||
 | 
			
		||||
            var bootstrapper = new MongoBootstrapper(
 | 
			
		||||
                database,
 | 
			
		||||
                Options.Create(new MongoStorageOptions()),
 | 
			
		||||
                NullLogger<MongoBootstrapper>.Instance,
 | 
			
		||||
                runner);
 | 
			
		||||
 | 
			
		||||
            await bootstrapper.InitializeAsync(CancellationToken.None);
 | 
			
		||||
 | 
			
		||||
            var statementIndexes = await database
 | 
			
		||||
                .GetCollection<BsonDocument>(MongoStorageDefaults.Collections.AdvisoryStatements)
 | 
			
		||||
                .Indexes
 | 
			
		||||
                .ListAsync();
 | 
			
		||||
            var statementIndexNames = (await statementIndexes.ToListAsync()).Select(x => x["name"].AsString).ToArray();
 | 
			
		||||
 | 
			
		||||
            Assert.Contains("advisory_statements_vulnerability_asof_desc", statementIndexNames);
 | 
			
		||||
            Assert.Contains("advisory_statements_statementHash_unique", statementIndexNames);
 | 
			
		||||
 | 
			
		||||
            var conflictIndexes = await database
 | 
			
		||||
                .GetCollection<BsonDocument>(MongoStorageDefaults.Collections.AdvisoryConflicts)
 | 
			
		||||
                .Indexes
 | 
			
		||||
                .ListAsync();
 | 
			
		||||
            var conflictIndexNames = (await conflictIndexes.ToListAsync()).Select(x => x["name"].AsString).ToArray();
 | 
			
		||||
 | 
			
		||||
            Assert.Contains("advisory_conflicts_vulnerability_asof_desc", conflictIndexNames);
 | 
			
		||||
            Assert.Contains("advisory_conflicts_conflictHash_unique", conflictIndexNames);
 | 
			
		||||
        }
 | 
			
		||||
        finally
 | 
			
		||||
        {
 | 
			
		||||
            await _fixture.Client.DropDatabaseAsync(databaseName);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user