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
 | 
			
		||||
	EndProjectSection
 | 
			
		||||
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
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		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}.Release|Any CPU.ActiveCfg = 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
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
| 
						 | 
				
			
			@ -151,8 +139,6 @@ Global
 | 
			
		|||
		{DCBEAB71-0BDE-42F4-8187-F576942CB038} = {B2DB41EE-45F5-447B-95E8-38E1E8B70C4E}
 | 
			
		||||
		{576B28F7-0D86-4C11-828A-B648E11863F6} = {9ED03812-9DDE-4DFE-9574-DF3671EECA25}
 | 
			
		||||
		{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
 | 
			
		||||
	GlobalSection(ExtensibilityGlobals) = postSolution
 | 
			
		||||
		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
 | 
			
		||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dapr.AspNetCore", "Dapr.AspNetCore\Dapr.AspNetCore.csproj", "{08D602F6-7C11-4653-B70B-B56333BF6FD2}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.Extensions.Configuration", "Dapr.Extensions.Configuration\Dapr.Extensions.Configuration.csproj", "{3757D4B4-D084-4938-88CF-6539B6E3D08C}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		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}.Release|Any CPU.ActiveCfg = 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
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		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
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		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}.Release|Any CPU.ActiveCfg = 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
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue