Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ public void Configure(ISiloBuilder builder, string? name, IConfigurationSection
options.Service = region;
}

var token = configurationSection[nameof(options.SecretKey)];
var token = configurationSection[nameof(options.Token)];
if (!string.IsNullOrEmpty(token))
{
options.Token = token;
}

var profileName = configurationSection[nameof(options.SecretKey)];
var profileName = configurationSection[nameof(options.ProfileName)];
if (!string.IsNullOrEmpty(profileName))
{
options.ProfileName = profileName;
Expand Down Expand Up @@ -100,13 +100,13 @@ public void Configure(IClientBuilder builder, string? name, IConfigurationSectio
options.Service = region;
}

var token = configurationSection[nameof(options.SecretKey)];
var token = configurationSection[nameof(options.Token)];
if (!string.IsNullOrEmpty(token))
{
options.Token = token;
}

var profileName = configurationSection[nameof(options.SecretKey)];
var profileName = configurationSection[nameof(options.ProfileName)];
if (!string.IsNullOrEmpty(profileName))
{
options.ProfileName = profileName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ public void Configure(ISiloBuilder builder, string? name, IConfigurationSection
options.Service = region;
}

var token = configurationSection[nameof(options.SecretKey)];
var token = configurationSection[nameof(options.Token)];
if (!string.IsNullOrEmpty(token))
{
options.Token = token;
}

var profileName = configurationSection[nameof(options.SecretKey)];
var profileName = configurationSection[nameof(options.ProfileName)];
if (!string.IsNullOrEmpty(profileName))
{
options.ProfileName = profileName;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Hosting;
using Orleans.Providers;
using Xunit;

namespace AWSUtils.Tests.MembershipTests;

[TestSuite("BVT")]
[TestProvider("DynamoDB")]
[TestArea("Clustering")]
[TestCategory("BVT")]
[TestCategory("AWS")]
[TestCategory("DynamoDB")]
[TestCategory("Clustering")]
public sealed class DynamoDBClusteringProviderBuilderTests
{
[Theory]
[InlineData("token-sentinel", "profile-sentinel")]
[InlineData(null, null)]
public void Configure_Silo_CredentialKeysBindIndependently(string? token, string? profileName)
{
var configuration = CreateConfiguration(token, profileName);
var builder = new TestSiloBuilder(configuration);
IProviderBuilder<ISiloBuilder> provider = new DynamoDBClusteringProviderBuilder();

provider.Configure(builder, null, configuration.GetSection("Clustering"));

using var services = builder.Services.BuildServiceProvider();
var options = services.GetRequiredService<IOptions<DynamoDBClusteringOptions>>().Value;
Assert.Equal("secret-sentinel", options.SecretKey);
Assert.Equal(token, options.Token);
Assert.Equal(profileName, options.ProfileName);
}

[Theory]
[InlineData("token-sentinel", "profile-sentinel")]
[InlineData(null, null)]
public void Configure_Client_CredentialKeysBindIndependently(string? token, string? profileName)
{
var configuration = CreateConfiguration(token, profileName);
var builder = new TestClientBuilder(configuration);
IProviderBuilder<IClientBuilder> provider = new DynamoDBClusteringProviderBuilder();

provider.Configure(builder, null, configuration.GetSection("Clustering"));

using var services = builder.Services.BuildServiceProvider();
var options = services.GetRequiredService<IOptions<DynamoDBGatewayOptions>>().Value;
Assert.Equal("secret-sentinel", options.SecretKey);
Assert.Equal(token, options.Token);
Assert.Equal(profileName, options.ProfileName);
}

private static IConfiguration CreateConfiguration(string? token, string? profileName)
{
var values = new Dictionary<string, string?>
{
[$"Clustering:{nameof(DynamoDBClusteringOptions.SecretKey)}"] = "secret-sentinel",
[$"Clustering:{nameof(DynamoDBClusteringOptions.Token)}"] = token,
[$"Clustering:{nameof(DynamoDBClusteringOptions.ProfileName)}"] = profileName,
};
return new ConfigurationBuilder()
.AddInMemoryCollection(values.Where(setting => setting.Value is not null))
.Build();
}

private sealed class TestSiloBuilder(IConfiguration configuration) : ISiloBuilder
{
public IServiceCollection Services { get; } = new ServiceCollection();

public IConfiguration Configuration { get; } = configuration;
}

private sealed class TestClientBuilder(IConfiguration configuration) : IClientBuilder
{
public IServiceCollection Services { get; } = new ServiceCollection();

public IConfiguration Configuration { get; } = configuration;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Hosting;
using Orleans.Providers;
using Xunit;

namespace AWSUtils.Tests.RemindersTest;

[TestSuite("BVT")]
[TestProvider("DynamoDB")]
[TestArea("Reminders")]
[TestCategory("BVT")]
[TestCategory("AWS")]
[TestCategory("DynamoDB")]
[TestCategory("Reminders")]
public sealed class DynamoDBRemindersProviderBuilderTests
{
[Theory]
[InlineData("token-sentinel", "profile-sentinel")]
[InlineData(null, null)]
public void Configure_CredentialKeysBindIndependently(string? token, string? profileName)
{
var values = new Dictionary<string, string?>
{
[$"Reminders:{nameof(DynamoDBReminderStorageOptions.SecretKey)}"] = "secret-sentinel",
[$"Reminders:{nameof(DynamoDBReminderStorageOptions.Token)}"] = token,
[$"Reminders:{nameof(DynamoDBReminderStorageOptions.ProfileName)}"] = profileName,
};
var configuration = new ConfigurationBuilder()
.AddInMemoryCollection(values.Where(setting => setting.Value is not null))
.Build();
var builder = new TestSiloBuilder(configuration);
IProviderBuilder<ISiloBuilder> provider = new DynamoDBRemindersProviderBuilder();

provider.Configure(builder, null, configuration.GetSection("Reminders"));

using var services = builder.Services.BuildServiceProvider();
var options = services.GetRequiredService<IOptions<DynamoDBReminderStorageOptions>>().Value;
Assert.Equal("secret-sentinel", options.SecretKey);
Assert.Equal(token, options.Token);
Assert.Equal(profileName, options.ProfileName);
}

private sealed class TestSiloBuilder(IConfiguration configuration) : ISiloBuilder
{
public IServiceCollection Services { get; } = new ServiceCollection();

public IConfiguration Configuration { get; } = configuration;
}
}
Loading