public async Task AuthenticateWithVsCredential() { var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(expectedToken, expectedExpiresOn, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var testProcess = new TestProcess { Output = processOutput }; var credential = InstrumentClient(new VisualStudioCredential(default, default, fileSystem, new TestProcessService(testProcess)));
public async Task AuthenticateWithVsCredential([Values(null, TenantIdHint)] string tenantId, [Values(true)] bool allowMultiTenantAuthentication) { var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(expectedToken, expectedExpiresOn, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var testProcess = new TestProcess { Output = processOutput }; var options = new VisualStudioCredentialOptions(); var credential = InstrumentClient(new VisualStudioCredential(TenantId, default, fileSystem, new TestProcessService(testProcess, true), options));
[RunOnlyOnPlatforms(Windows = true)] // VisualStudioCredential works only on Windows public async Task ChainedTokenCredential_UseVisualStudioCredential() { var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(expectedToken, expectedExpiresOn, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var processService = new TestProcessService(new TestProcess { Output = processOutput }); var miCredential = new ManagedIdentityCredential(EnvironmentVariables.ClientId); var vsCredential = new VisualStudioCredential(default, default, fileSystem, processService);
public override TokenCredential GetTokenCredential(TokenCredentialOptions options) { var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(_, _, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var testProcess = new TestProcess { Output = processOutput }; var vsOptions = new VisualStudioCredentialOptions { Diagnostics = { IsAccountIdentifierLoggingEnabled = options.Diagnostics.IsAccountIdentifierLoggingEnabled } }; return(InstrumentClient(new VisualStudioCredential(TenantId, default, fileSystem, new TestProcessService(testProcess, true), vsOptions)));
[RunOnlyOnPlatforms(Windows = true)] // VisualStudioCredential works only on Windows public async Task DefaultAzureCredential_UseVisualStudioCredential() { var options = InstrumentClientOptions(new DefaultAzureCredentialOptions { ExcludeEnvironmentCredential = true, ExcludeInteractiveBrowserCredential = true, ExcludeSharedTokenCacheCredential = true, }); var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(expectedToken, expectedExpiresOn, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var testProcess = new TestProcess { Output = processOutput }; var factory = new TestDefaultAzureCredentialFactory(options, fileSystem, new TestProcessService(testProcess), default) { ManagedIdentitySourceFactory = () => default }; var credential = InstrumentClient(new DefaultAzureCredential(factory, options)); AccessToken token; List <ClientDiagnosticListener.ProducedDiagnosticScope> scopes; using (ClientDiagnosticListener diagnosticListener = new ClientDiagnosticListener(s => s.StartsWith("Azure.Identity"))) { token = await credential.GetTokenAsync(new TokenRequestContext(new[] { "https://vault.azure.net/.default" }), CancellationToken.None); scopes = diagnosticListener.Scopes; } Assert.AreEqual(token.Token, expectedToken); Assert.AreEqual(token.ExpiresOn, expectedExpiresOn); Assert.AreEqual(2, scopes.Count); Assert.AreEqual($"{nameof(DefaultAzureCredential)}.{nameof(DefaultAzureCredential.GetToken)}", scopes[0].Name); Assert.AreEqual($"{nameof(VisualStudioCredential)}.{nameof(VisualStudioCredential.GetToken)}", scopes[1].Name); }
[RunOnlyOnPlatforms(Windows = true)] // VisualStudioCredential works only on Windows public async Task DefaultAzureCredential_UseVisualStudioCredential() { var options = Recording.InstrumentClientOptions(new DefaultAzureCredentialOptions { ExcludeEnvironmentCredential = true, ExcludeInteractiveBrowserCredential = true, ExcludeSharedTokenCacheCredential = true, }); var fileSystem = CredentialTestHelpers.CreateFileSystemForVisualStudio(); var(expectedToken, expectedExpiresOn, processOutput) = CredentialTestHelpers.CreateTokenForVisualStudio(); var testProcess = new TestProcess { Output = processOutput }; var factory = new TestDefaultAzureCredentialFactory(options, fileSystem, new TestProcessService(testProcess), default); var credential = InstrumentClient(new DefaultAzureCredential(factory, options)); AccessToken token = await credential.GetTokenAsync(new TokenRequestContext(new[] { "https://vault.azure.net/.default" }), CancellationToken.None); Assert.AreEqual(token.Token, expectedToken); Assert.AreEqual(token.ExpiresOn, expectedExpiresOn); }