Skip to content

Commit 19b3b51

Browse files
authored
Support for local credential types for DTS (#396)
1 parent 8ad5e30 commit 19b3b51

File tree

5 files changed

+174
-14
lines changed

5 files changed

+174
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## v1.9.0 (unreleased)
44

55
- Introduce default version setting to DurableTaskClient and expose to orchestrator ([#393](https://github.com/microsoft/durabletask-dotnet/pull/393))
6+
- Add support for local credential types in DTS libraries ([#396](https://github.com/microsoft/durabletask-dotnet/pull/396))
67

78
## v1.8.1
89

src/Client/AzureManaged/DurableTaskSchedulerClientOptions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
3+
34
using System.ComponentModel.DataAnnotations;
45
using Azure.Core;
56
using Azure.Identity;
@@ -152,6 +153,12 @@ this.Credential is not null
152153
return new AzureCliCredential();
153154
case "azurepowershell":
154155
return new AzurePowerShellCredential();
156+
case "visualstudio":
157+
return new VisualStudioCredential();
158+
case "visualstudiocode":
159+
return new VisualStudioCodeCredential();
160+
case "interactivebrowser":
161+
return new InteractiveBrowserCredential();
155162
case "none":
156163
return null;
157164
default:

src/Worker/AzureManaged/DurableTaskSchedulerWorkerOptions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
3+
34
using System.ComponentModel.DataAnnotations;
45
using Azure.Core;
56
using Azure.Identity;
@@ -159,6 +160,12 @@ this.Credential is not null
159160
return new AzureCliCredential();
160161
case "azurepowershell":
161162
return new AzurePowerShellCredential();
163+
case "visualstudio":
164+
return new VisualStudioCredential();
165+
case "visualstudiocode":
166+
return new VisualStudioCodeCredential();
167+
case "interactivebrowser":
168+
return new InteractiveBrowserCredential();
162169
case "none":
163170
return null;
164171
default:

test/Client/AzureManaged.Tests/DurableTaskSchedulerClientOptionsTests.cs

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,95 @@ public void FromConnectionString_WithWorkloadIdentity_ShouldCreateValidInstance(
6060
options.Credential.Should().BeOfType<WorkloadIdentityCredential>();
6161
}
6262

63-
[Theory]
64-
[InlineData("Environment")]
65-
[InlineData("AzureCLI")]
66-
[InlineData("AzurePowerShell")]
67-
public void FromConnectionString_WithValidAuthTypes_ShouldCreateValidInstance(string authType)
63+
64+
[Fact]
65+
public void FromConnectionString_WithEnvironmentCredential_ShouldCreateValidInstance()
66+
{
67+
// Arrange
68+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=Environment;TaskHub={ValidTaskHub}";
69+
70+
// Act
71+
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
72+
73+
// Assert
74+
options.EndpointAddress.Should().Be(ValidEndpoint);
75+
options.TaskHubName.Should().Be(ValidTaskHub);
76+
options.Credential.Should().BeOfType<EnvironmentCredential>();
77+
}
78+
79+
[Fact]
80+
public void FromConnectionString_WithAzureCliCredential_ShouldCreateValidInstance()
81+
{
82+
// Arrange
83+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=AzureCLI;TaskHub={ValidTaskHub}";
84+
85+
// Act
86+
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
87+
88+
// Assert
89+
options.EndpointAddress.Should().Be(ValidEndpoint);
90+
options.TaskHubName.Should().Be(ValidTaskHub);
91+
options.Credential.Should().BeOfType<AzureCliCredential>();
92+
}
93+
94+
[Fact]
95+
public void FromConnectionString_WithAzurePowerShellCredential_ShouldCreateValidInstance()
96+
{
97+
// Arrange
98+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=AzurePowerShell;TaskHub={ValidTaskHub}";
99+
100+
// Act
101+
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
102+
103+
// Assert
104+
options.EndpointAddress.Should().Be(ValidEndpoint);
105+
options.TaskHubName.Should().Be(ValidTaskHub);
106+
options.Credential.Should().BeOfType<AzurePowerShellCredential>();
107+
}
108+
109+
[Fact]
110+
public void FromConnectionString_WithVisualStudioCredential_ShouldCreateValidInstance()
111+
{
112+
// Arrange
113+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=VisualStudio;TaskHub={ValidTaskHub}";
114+
115+
// Act
116+
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
117+
118+
// Assert
119+
options.EndpointAddress.Should().Be(ValidEndpoint);
120+
options.TaskHubName.Should().Be(ValidTaskHub);
121+
options.Credential.Should().BeOfType<VisualStudioCredential>();
122+
}
123+
124+
[Fact]
125+
public void FromConnectionString_WithVisualStudioCodeCredential_ShouldCreateValidInstance()
126+
{
127+
// Arrange
128+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=VisualStudioCode;TaskHub={ValidTaskHub}";
129+
130+
// Act
131+
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
132+
133+
// Assert
134+
options.EndpointAddress.Should().Be(ValidEndpoint);
135+
options.TaskHubName.Should().Be(ValidTaskHub);
136+
options.Credential.Should().BeOfType<VisualStudioCodeCredential>();
137+
}
138+
139+
[Fact]
140+
public void FromConnectionString_WithInteractiveCredential_ShouldCreateValidInstance()
68141
{
69142
// Arrange
70-
string connectionString = $"Endpoint={ValidEndpoint};Authentication={authType};TaskHub={ValidTaskHub}";
143+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=InteractiveBrowser;TaskHub={ValidTaskHub}";
71144

72145
// Act
73146
DurableTaskSchedulerClientOptions options = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
74147

75148
// Assert
76149
options.EndpointAddress.Should().Be(ValidEndpoint);
77150
options.TaskHubName.Should().Be(ValidTaskHub);
78-
options.Credential.Should().NotBeNull();
151+
options.Credential.Should().BeOfType<InteractiveBrowserCredential>();
79152
}
80153

81154
[Fact]

test/Worker/AzureManaged.Tests/DurableTaskSchedulerWorkerOptionsTests.cs

Lines changed: 79 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,94 @@ public void FromConnectionString_WithWorkloadIdentity_ShouldCreateValidInstance(
6060
options.Credential.Should().BeOfType<WorkloadIdentityCredential>();
6161
}
6262

63-
[Theory]
64-
[InlineData("Environment")]
65-
[InlineData("AzureCLI")]
66-
[InlineData("AzurePowerShell")]
67-
public void FromConnectionString_WithValidAuthTypes_ShouldCreateValidInstance(string authType)
63+
[Fact]
64+
public void FromConnectionString_WithEnvironmentCredential_ShouldCreateValidInstance()
65+
{
66+
// Arrange
67+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=Environment;TaskHub={ValidTaskHub}";
68+
69+
// Act
70+
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
71+
72+
// Assert
73+
options.EndpointAddress.Should().Be(ValidEndpoint);
74+
options.TaskHubName.Should().Be(ValidTaskHub);
75+
options.Credential.Should().BeOfType<EnvironmentCredential>();
76+
}
77+
78+
[Fact]
79+
public void FromConnectionString_WithAzureCliCredential_ShouldCreateValidInstance()
80+
{
81+
// Arrange
82+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=AzureCLI;TaskHub={ValidTaskHub}";
83+
84+
// Act
85+
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
86+
87+
// Assert
88+
options.EndpointAddress.Should().Be(ValidEndpoint);
89+
options.TaskHubName.Should().Be(ValidTaskHub);
90+
options.Credential.Should().BeOfType<AzureCliCredential>();
91+
}
92+
93+
[Fact]
94+
public void FromConnectionString_WithAzurePowerShellCredential_ShouldCreateValidInstance()
95+
{
96+
// Arrange
97+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=AzurePowerShell;TaskHub={ValidTaskHub}";
98+
99+
// Act
100+
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
101+
102+
// Assert
103+
options.EndpointAddress.Should().Be(ValidEndpoint);
104+
options.TaskHubName.Should().Be(ValidTaskHub);
105+
options.Credential.Should().BeOfType<AzurePowerShellCredential>();
106+
}
107+
108+
[Fact]
109+
public void FromConnectionString_WithVisualStudioCredential_ShouldCreateValidInstance()
110+
{
111+
// Arrange
112+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=VisualStudio;TaskHub={ValidTaskHub}";
113+
114+
// Act
115+
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
116+
117+
// Assert
118+
options.EndpointAddress.Should().Be(ValidEndpoint);
119+
options.TaskHubName.Should().Be(ValidTaskHub);
120+
options.Credential.Should().BeOfType<VisualStudioCredential>();
121+
}
122+
123+
[Fact]
124+
public void FromConnectionString_WithVisualStudioCodeCredential_ShouldCreateValidInstance()
125+
{
126+
// Arrange
127+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=VisualStudioCode;TaskHub={ValidTaskHub}";
128+
129+
// Act
130+
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
131+
132+
// Assert
133+
options.EndpointAddress.Should().Be(ValidEndpoint);
134+
options.TaskHubName.Should().Be(ValidTaskHub);
135+
options.Credential.Should().BeOfType<VisualStudioCodeCredential>();
136+
}
137+
138+
[Fact]
139+
public void FromConnectionString_WithInteractiveCredential_ShouldCreateValidInstance()
68140
{
69141
// Arrange
70-
string connectionString = $"Endpoint={ValidEndpoint};Authentication={authType};TaskHub={ValidTaskHub}";
142+
string connectionString = $"Endpoint={ValidEndpoint};Authentication=InteractiveBrowser;TaskHub={ValidTaskHub}";
71143

72144
// Act
73145
DurableTaskSchedulerWorkerOptions options = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
74146

75147
// Assert
76148
options.EndpointAddress.Should().Be(ValidEndpoint);
77149
options.TaskHubName.Should().Be(ValidTaskHub);
78-
options.Credential.Should().NotBeNull();
150+
options.Credential.Should().BeOfType<InteractiveBrowserCredential>();
79151
}
80152

81153
[Fact]

0 commit comments

Comments
 (0)