public async Task GetTokenTest() { // Mock the progress manager. This emulates running an actual process to get token from Visual Studio key chain. var mockProcessManager = new MockProcessManager(MockProcessManager.MockProcessManagerRequestType.VisualStudioSuccess); // VisualStudioAccessTokenProvider has in internal only constructor to allow for unit testing. var visualStudioAccessTokenProvider = new VisualStudioAccessTokenProvider(mockProcessManager, _visualStudioTokenProviderFile); // Get token and validate it var authResult = await visualStudioAccessTokenProvider.GetAuthResultAsync(Constants.KeyVaultResourceId, Constants.TenantId).ConfigureAwait(false); Validator.ValidateToken(authResult.AccessToken, visualStudioAccessTokenProvider.PrincipalUsed, Constants.UserType, Constants.TenantId, expiresOn: authResult.ExpiresOn); }
public async Task FailedToGetToken() { var mockProcessManager = new MockProcessManager(MockProcessManager.MockProcessManagerRequestType.Failure); // VisualStudioAccessTokenProvider has in internal only constructor to allow for unit testing. var visualStudioAccessTokenProvider = new VisualStudioAccessTokenProvider(mockProcessManager, _visualStudioTokenProviderFile); var exception = await Assert.ThrowsAsync <AzureServiceTokenProviderException>(() => Task.Run(() => visualStudioAccessTokenProvider.GetAuthResultAsync(Constants.KeyVaultResourceId, Constants.TenantId))); Assert.Contains(AzureServiceTokenProviderException.GenericErrorMessage, exception.Message); Assert.Contains(Constants.DeveloperToolError, exception.Message); Assert.Contains(Constants.KeyVaultResourceId, exception.Message); Assert.Contains(VisualStudioAccessTokenProvider.TokenProviderGenericError, exception.Message); }
public async Task TokenProvidersNotFoundTest() { // set all token providers in the token provider object to non-existent paths _visualStudioTokenProviderFile.TokenProviders.ForEach(tp => tp.Path = $"C:\\{Guid.NewGuid()}\\Microsoft.Asal.TokenService.exe.json"); var visualStudioAccessTokenProvider = new VisualStudioAccessTokenProvider(new ProcessManager(), _visualStudioTokenProviderFile); var exception = await Assert.ThrowsAsync <AzureServiceTokenProviderException>(() => Task.Run(() => visualStudioAccessTokenProvider.GetAuthResultAsync(Constants.KeyVaultResourceId, Constants.TenantId))); Assert.Contains(AzureServiceTokenProviderException.GenericErrorMessage, exception.Message); Assert.Contains(Constants.KeyVaultResourceId, exception.Message); Assert.Contains(VisualStudioAccessTokenProvider.TokenProvidersNotFound, exception.Message); }
public async Task TokenProviderFileNotFoundTest() { var visualStudioAccessTokenProvider = new VisualStudioAccessTokenProvider(new ProcessManager()); // This will ensure that the localappdata folder doesnt exist on the machine. Since VS token provider file path is added to this, the file will not exist either. string path = Guid.NewGuid().ToString(); Environment.SetEnvironmentVariable(Constants.LocalAppDataEnv, path); var exception = await Assert.ThrowsAsync <AzureServiceTokenProviderException>(() => Task.Run(() => visualStudioAccessTokenProvider.GetAuthResultAsync(Constants.KeyVaultResourceId, Constants.TenantId))); Assert.Contains(path, exception.Message); Assert.Contains(AzureServiceTokenProviderException.GenericErrorMessage, exception.Message); Assert.Contains(Constants.KeyVaultResourceId, exception.Message); Assert.Contains(VisualStudioAccessTokenProvider.TokenProviderFileNotFound, exception.Message); }
public async Task ResourceInvalidCharsTest() { var mockProcessManager = new MockProcessManager(MockProcessManager.MockProcessManagerRequestType.Success); // VisualStudioAccessTokenProvider has in internal only constructor to allow for unit testing. var visualStudioAccessTokenProvider = new VisualStudioAccessTokenProvider(mockProcessManager, _visualStudioTokenProviderFile); var exception = await Assert.ThrowsAsync <AzureServiceTokenProviderException>(() => Task.Run(() => visualStudioAccessTokenProvider.GetAuthResultAsync("https://test^", Constants.TenantId))); Assert.Contains(Constants.NotInExpectedFormatError, exception.Message); }