mirror of https://github.com/dapr/dotnet-sdk.git
Remove secret store extension from building (#348)
* Remove secret store extension from building * Remove code Co-authored-by: LM <lemai> Co-authored-by: Aman Bhardwaj <amanbha@users.noreply.github.com>
This commit is contained in:
parent
5b246c8665
commit
1974ab36a8
14
all.sln
14
all.sln
|
|
@ -50,10 +50,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
||||||
.editorconfig = .editorconfig
|
.editorconfig = .editorconfig
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.Extensions.Configuration", "src\Dapr.Extensions.Configuration\Dapr.Extensions.Configuration.csproj", "{3EFB6020-F928-4FF4-A795-6B426C3886A9}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.Extensions.Configuration.Test", "test\Dapr.Extensions.Configuration.Test\Dapr.Extensions.Configuration.Test.csproj", "{E39DC087-2521-4BB3-933E-E8AFD74AFA6F}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -120,14 +116,6 @@ Global
|
||||||
{576B28F7-0D86-4C11-828A-B648E11863F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{576B28F7-0D86-4C11-828A-B648E11863F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{576B28F7-0D86-4C11-828A-B648E11863F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{576B28F7-0D86-4C11-828A-B648E11863F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{576B28F7-0D86-4C11-828A-B648E11863F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
{576B28F7-0D86-4C11-828A-B648E11863F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3EFB6020-F928-4FF4-A795-6B426C3886A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{3EFB6020-F928-4FF4-A795-6B426C3886A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{3EFB6020-F928-4FF4-A795-6B426C3886A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{3EFB6020-F928-4FF4-A795-6B426C3886A9}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{E39DC087-2521-4BB3-933E-E8AFD74AFA6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{E39DC087-2521-4BB3-933E-E8AFD74AFA6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{E39DC087-2521-4BB3-933E-E8AFD74AFA6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{E39DC087-2521-4BB3-933E-E8AFD74AFA6F}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -151,8 +139,6 @@ Global
|
||||||
{DCBEAB71-0BDE-42F4-8187-F576942CB038} = {B2DB41EE-45F5-447B-95E8-38E1E8B70C4E}
|
{DCBEAB71-0BDE-42F4-8187-F576942CB038} = {B2DB41EE-45F5-447B-95E8-38E1E8B70C4E}
|
||||||
{576B28F7-0D86-4C11-828A-B648E11863F6} = {9ED03812-9DDE-4DFE-9574-DF3671EECA25}
|
{576B28F7-0D86-4C11-828A-B648E11863F6} = {9ED03812-9DDE-4DFE-9574-DF3671EECA25}
|
||||||
{9ED03812-9DDE-4DFE-9574-DF3671EECA25} = {B2DB41EE-45F5-447B-95E8-38E1E8B70C4E}
|
{9ED03812-9DDE-4DFE-9574-DF3671EECA25} = {B2DB41EE-45F5-447B-95E8-38E1E8B70C4E}
|
||||||
{3EFB6020-F928-4FF4-A795-6B426C3886A9} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
|
|
||||||
{E39DC087-2521-4BB3-933E-E8AFD74AFA6F} = {DD020B34-460F-455F-8D17-CF4A949F100B}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {65220BF2-EAE1-4CB2-AA58-EBE80768CB40}
|
SolutionGuid = {65220BF2-EAE1-4CB2-AA58-EBE80768CB40}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<!-- Additional Nuget package properties. -->
|
|
||||||
<PropertyGroup>
|
|
||||||
<Description>Dapr Secret Store configuration provider implementation for Microsoft.Extensions.Configuration.</Description>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\Dapr.Client\Dapr.Client.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="..\Dapr.Client\ArgumentVerifier.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
// ------------------------------------------------------------
|
|
||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT License.
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Dapr.Extensions.Configuration
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Represents the name and metadata for a Secret.
|
|
||||||
/// </summary>
|
|
||||||
public class DaprSecretDescriptor
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the secret name.
|
|
||||||
/// </summary>
|
|
||||||
public string SecretName { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the secret's metadata.
|
|
||||||
/// </summary>
|
|
||||||
public Dictionary<string, string> Metadata { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Secret Descriptor Construcutor
|
|
||||||
/// </summary>
|
|
||||||
public DaprSecretDescriptor(string secretName) : this(secretName, new Dictionary<string, string>())
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Secret Descriptor Construcutor
|
|
||||||
/// </summary>
|
|
||||||
public DaprSecretDescriptor(string secretName, Dictionary<string, string> metadata)
|
|
||||||
{
|
|
||||||
SecretName = secretName;
|
|
||||||
Metadata = metadata;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
// ------------------------------------------------------------
|
|
||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT License.
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Dapr.Client;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Dapr.Extensions.Configuration.DaprSecretStore;
|
|
||||||
|
|
||||||
namespace Dapr.Extensions.Configuration
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Extension methods for registering <see cref="DaprSecretStoreConfigurationProvider"/> with <see cref="IConfigurationBuilder"/>.
|
|
||||||
/// </summary>
|
|
||||||
public static class DaprSecretStoreConfigurationExtensions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Adds an <see cref="IConfigurationProvider"/> that reads configuration values from the Dapr Secret Store.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="configurationBuilder">The <see cref="IConfigurationBuilder"/> to add to.</param>
|
|
||||||
/// <param name="store">Dapr secret store name.</param>
|
|
||||||
/// <param name="secretDescriptors">The secrets to retrieve.</param>
|
|
||||||
/// <param name="client">The Dapr client</param>
|
|
||||||
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
|
|
||||||
public static IConfigurationBuilder AddDaprSecretStore(
|
|
||||||
this IConfigurationBuilder configurationBuilder,
|
|
||||||
string store,
|
|
||||||
IEnumerable<DaprSecretDescriptor> secretDescriptors,
|
|
||||||
DaprClient client)
|
|
||||||
{
|
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
|
|
||||||
ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors));
|
|
||||||
ArgumentVerifier.ThrowIfNull(client, nameof(client));
|
|
||||||
|
|
||||||
configurationBuilder.Add(new DaprSecretStoreConfigurationSource()
|
|
||||||
{
|
|
||||||
Store = store,
|
|
||||||
SecretDescriptors = secretDescriptors,
|
|
||||||
Client = client
|
|
||||||
});
|
|
||||||
|
|
||||||
return configurationBuilder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Adds an <see cref="IConfigurationProvider"/> that reads configuration values from the command line.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="configurationBuilder">The <see cref="IConfigurationBuilder"/> to add to.</param>
|
|
||||||
/// <param name="configureSource">Configures the source.</param>
|
|
||||||
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
|
|
||||||
public static IConfigurationBuilder AddDaprSecretStore(this IConfigurationBuilder configurationBuilder, Action<DaprSecretStoreConfigurationSource> configureSource)
|
|
||||||
=> configurationBuilder.Add(configureSource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
// ------------------------------------------------------------
|
|
||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT License.
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Dapr.Client;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
|
|
||||||
namespace Dapr.Extensions.Configuration.DaprSecretStore
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// A Dapr Secret Store based <see cref="ConfigurationProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider
|
|
||||||
{
|
|
||||||
private readonly string store;
|
|
||||||
|
|
||||||
private readonly IEnumerable<DaprSecretDescriptor> secretDescriptors;
|
|
||||||
|
|
||||||
private readonly DaprClient client;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Creates a new instance of <see cref="DaprSecretStoreConfigurationProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="store">Dapr Secre Store name.</param>
|
|
||||||
/// <param name="secretDescriptors">The secrets to retrieve.</param>
|
|
||||||
/// <param name="client">Dapr client used to retrieve Secrets</param>
|
|
||||||
public DaprSecretStoreConfigurationProvider(string store, IEnumerable<DaprSecretDescriptor> secretDescriptors, DaprClient client)
|
|
||||||
{
|
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
|
|
||||||
ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors));
|
|
||||||
ArgumentVerifier.ThrowIfNull(client, nameof(client));
|
|
||||||
|
|
||||||
this.store = store;
|
|
||||||
this.secretDescriptors = secretDescriptors;
|
|
||||||
this.client = client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Load() => LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult();
|
|
||||||
|
|
||||||
private async Task LoadAsync()
|
|
||||||
{
|
|
||||||
var data = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
|
||||||
foreach (var secretDescriptor in secretDescriptors)
|
|
||||||
{
|
|
||||||
var result = await client.GetSecretAsync(store, secretDescriptor.SecretName, secretDescriptor.Metadata).ConfigureAwait(false);
|
|
||||||
|
|
||||||
foreach (var key in result.Keys)
|
|
||||||
{
|
|
||||||
if (data.ContainsKey(key))
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException($"A duplicate key '{key}' was found in the secret store '{store}'. Please remove any duplicates from your secret store.");
|
|
||||||
}
|
|
||||||
|
|
||||||
data.Add(key, result[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Data = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
// ------------------------------------------------------------
|
|
||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT License.
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Dapr.Client;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
|
|
||||||
namespace Dapr.Extensions.Configuration.DaprSecretStore
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Represents Dapr Secret Store as an <see cref="IConfigurationSource"/>.
|
|
||||||
/// </summary>
|
|
||||||
public class DaprSecretStoreConfigurationSource : IConfigurationSource
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the store name.
|
|
||||||
/// </summary>
|
|
||||||
public string Store { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the secret names.
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<DaprSecretDescriptor> SecretDescriptors { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the http client.
|
|
||||||
/// </summary>
|
|
||||||
public DaprClient Client { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public IConfigurationProvider Build(IConfigurationBuilder builder)
|
|
||||||
{
|
|
||||||
return new DaprSecretStoreConfigurationProvider(Store, SecretDescriptors, Client);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -11,8 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.Client", "Dapr.Client\
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore", "Dapr.AspNetCore\Dapr.AspNetCore.csproj", "{08D602F6-7C11-4653-B70B-B56333BF6FD2}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore", "Dapr.AspNetCore\Dapr.AspNetCore.csproj", "{08D602F6-7C11-4653-B70B-B56333BF6FD2}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.Extensions.Configuration", "Dapr.Extensions.Configuration\Dapr.Extensions.Configuration.csproj", "{3757D4B4-D084-4938-88CF-6539B6E3D08C}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -35,10 +33,6 @@ Global
|
||||||
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.Build.0 = Release|Any CPU
|
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{3757D4B4-D084-4938-88CF-6539B6E3D08C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{3757D4B4-D084-4938-88CF-6539B6E3D08C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{3757D4B4-D084-4938-88CF-6539B6E3D08C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{3757D4B4-D084-4938-88CF-6539B6E3D08C}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="FluentAssertions" Version="5.9.0" />
|
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" />
|
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="..\Shared\TestHttpClient.cs" />
|
|
||||||
<Compile Include="..\Shared\GrpcUtils.cs" />
|
|
||||||
<Compile Include="..\Shared\ProtobufUtils.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\src\Dapr.Extensions.Configuration\Dapr.Extensions.Configuration.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
// ------------------------------------------------------------
|
|
||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT License.
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Autogenerated = Dapr.Client.Autogen.Grpc.v1;
|
|
||||||
using FluentAssertions;
|
|
||||||
using Xunit;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Dapr.Client;
|
|
||||||
using Grpc.Net.Client;
|
|
||||||
using System.Net;
|
|
||||||
|
|
||||||
namespace Dapr.Extensions.Configuration.Test
|
|
||||||
{
|
|
||||||
public class DaprSecretStoreConfigurationProviderTest
|
|
||||||
{
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void LoadSecrets_FromSecretStoreThatReturnsOneValue()
|
|
||||||
{
|
|
||||||
// Configure Client
|
|
||||||
var httpClient = new TestHttpClient()
|
|
||||||
{
|
|
||||||
Handler = async (entry) =>
|
|
||||||
{
|
|
||||||
var secrets = new Dictionary<string, string>() { { "secretName", "secret" } };
|
|
||||||
var secretResponse = new Autogenerated.GetSecretResponse();
|
|
||||||
secretResponse.Data.Add(secrets);
|
|
||||||
|
|
||||||
var streamContent = await GrpcUtils.CreateResponseContent(secretResponse);
|
|
||||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
|
||||||
entry.Completion.SetResult(response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var daprClient = new DaprClientBuilder()
|
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
var config = CreateBuilder()
|
|
||||||
.AddDaprSecretStore("store", new DaprSecretDescriptor[] { new DaprSecretDescriptor("secretName") }, daprClient)
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
config["secretName"].Should().Be("secret");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void LoadSecrets_FromSecretStoreThatCanReturnsMultipleValues()
|
|
||||||
{
|
|
||||||
// Configure Client
|
|
||||||
var httpClient = new TestHttpClient()
|
|
||||||
{
|
|
||||||
Handler = async (entry) =>
|
|
||||||
{
|
|
||||||
var secrets = new Dictionary<string, string>() {
|
|
||||||
{ "first_secret", "secret1" },
|
|
||||||
{ "second_secret", "secret2" }};
|
|
||||||
var secretResponse = new Autogenerated.GetSecretResponse();
|
|
||||||
secretResponse.Data.Add(secrets);
|
|
||||||
|
|
||||||
var streamContent = await GrpcUtils.CreateResponseContent(secretResponse);
|
|
||||||
var response = GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent);
|
|
||||||
entry.Completion.SetResult(response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var daprClient = new DaprClientBuilder()
|
|
||||||
.UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient })
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
var config = CreateBuilder()
|
|
||||||
.AddDaprSecretStore("store", new DaprSecretDescriptor[] { new DaprSecretDescriptor("secretName") }, daprClient)
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
config["first_secret"].Should().Be("secret1");
|
|
||||||
config["second_secret"].Should().Be("secret2");
|
|
||||||
}
|
|
||||||
|
|
||||||
private IConfigurationBuilder CreateBuilder()
|
|
||||||
{
|
|
||||||
return new ConfigurationBuilder();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -25,8 +25,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore.Integration
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore.IntegrationTest.App", "Dapr.AspNetCore.IntegrationTest.App\Dapr.AspNetCore.IntegrationTest.App.csproj", "{342783B5-F75B-4752-A3E2-B8CB7D09C080}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore.IntegrationTest.App", "Dapr.AspNetCore.IntegrationTest.App\Dapr.AspNetCore.IntegrationTest.App.csproj", "{342783B5-F75B-4752-A3E2-B8CB7D09C080}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.Extensions.Configuration.Test", "Dapr.Extensions.Configuration.Test\Dapr.Extensions.Configuration.Test.csproj", "{F676A444-9099-4382-9399-16C6F9A02AD1}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -69,10 +67,6 @@ Global
|
||||||
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.Build.0 = Release|Any CPU
|
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F676A444-9099-4382-9399-16C6F9A02AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{F676A444-9099-4382-9399-16C6F9A02AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{F676A444-9099-4382-9399-16C6F9A02AD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{F676A444-9099-4382-9399-16C6F9A02AD1}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue