Пример #1
0
        public async Task AddSecretStore_WithSpecificCriticalExceptionFilter_ThrowsSpecificCriticalExceptionThatMatchesFilter()
        {
            // Arrange
            const string expectedMessage = "This is a specific message";
            var          stubProvider1   = new SaboteurSecretProvider(new AuthenticationException(expectedMessage));
            var          stubProvider2   = new SaboteurSecretProvider(new AuthenticationException("This is a different message"));

            var services = new ServiceCollection();

            // Act
            services.AddSecretStore(stores =>
            {
                stores.AddCriticalException <AuthenticationException>(ex => ex.Message == expectedMessage)
                .AddProvider(stubProvider1)
                .AddProvider(stubProvider2);
            });

            // Assert
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            var provider = serviceProvider.GetRequiredService <ISecretProvider>();

            var exception = await Assert.ThrowsAsync <AuthenticationException>(() => provider.GetRawSecretAsync("some secret name"));

            Assert.Equal(expectedMessage, exception.Message);
        }
Пример #2
0
        public async Task AddSecretStore_WithMultipleSpecificCriticalExceptions_ThrowsAggregateExceptionWithAllThrownCriticalExceptionsWhenThrownInSecretProvider()
        {
            // Arrange
            var stubProvider1 = new SaboteurSecretProvider(new CryptographicException("Some cryptographic failure"));
            var stubProvider2 = new SaboteurSecretProvider(new AuthenticationException("Some authentication failure"));

            var services = new ServiceCollection();

            // Act
            services.AddSecretStore(stores =>
            {
                stores.AddCriticalException <CryptographicException>()
                .AddCriticalException <AuthenticationException>()
                .AddProvider(stubProvider1)
                .AddProvider(stubProvider2);
            });

            // Assert
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            var provider = serviceProvider.GetRequiredService <ISecretProvider>();

            var exception = await Assert.ThrowsAsync <AggregateException>(() => provider.GetSecretAsync("some secret name"));

            Assert.Collection(exception.InnerExceptions,
                              ex => Assert.IsType <CryptographicException>(ex),
                              ex => Assert.IsType <AuthenticationException>(ex));
        }
Пример #3
0
        public async Task GetSecret_WithCriticalException_ThrowsThroughMutatedSecretProvider()
        {
            // Arrange
            var saboteurProvider = new SaboteurSecretProvider(new AuthenticationException("Some authentication failure"));
            var builder          = new HostBuilder();

            // Act
            builder.ConfigureSecretStore((config, stores) =>
            {
                stores.AddProvider(saboteurProvider, name => "Extra.Ignored.Prefix-" + name)
                .AddCriticalException <AuthenticationException>();
            });

            // Assert
            IHost host     = builder.Build();
            var   provider = host.Services.GetRequiredService <ISecretProvider>();

            await Assert.ThrowsAsync <AuthenticationException>(() => provider.GetSecretAsync("some secret name"));
        }
        public async Task ConfigureSecretStore_WithSpecificCriticalException_ThrowsCriticalExceptionWhenThrownInSecretProvider()
        {
            // Arrange
            var stubProvider = new SaboteurSecretProvider(new AuthenticationException("Some authentication failure"));
            var builder      = new HostBuilder();

            // Act
            builder.ConfigureSecretStore((config, stores) =>
            {
                stores.AddCriticalException <AuthenticationException>()
                .AddProvider(stubProvider);
            });

            // Assert
            IHost host     = builder.Build();
            var   provider = host.Services.GetRequiredService <ISecretProvider>();

            await Assert.ThrowsAsync <AuthenticationException>(() => provider.GetRawSecretAsync("some secret name"));
        }