/// <summary> /// Return the test environment created using CSM environment variables /// </summary> /// <returns>The test environment.</returns> protected override TestEnvironment GetTestEnvironmentFromContext() { TestEnvironment environment = null; try { environment = base.GetOrgIdTestEnvironment(TestCSMOrgIdConnectionStringKey); } catch (ArgumentException exception) { // allow running gallery tests TracingAdapter.Information("Node.exe was not found on the system, please install the x86 version of node.exe to run tests, received exception {0}", exception); } string galleryUri = Environment.GetEnvironmentVariable(TestCSMGalleryUri); if (null == environment) { // we shouild be able to run gallery tests, even if credentials are not set up environment = new TestEnvironment(); } if (!string.IsNullOrEmpty(galleryUri)) { environment.GalleryUri = new Uri(galleryUri); } else { environment.GalleryUri = new Uri(DefaultGalleryUri); } return environment; }
/// <summary> /// Return test credentials and URI using AAD auth for an OrgID account. Use this emthod with causion, it may take a dependency on ADAL /// </summary> /// <returns>The test credentials, or null if nthe appropriate environment variablke is not set.</returns> protected virtual TestEnvironment GetOrgIdTestEnvironment(string orgIdVariable) { TestEnvironment orgIdEnvironment = null; string orgIdAuth = GetOrgId(orgIdVariable); if (!string.IsNullOrEmpty(orgIdAuth)) { string token = null; IDictionary<string, string> authSettings = ParseConnectionString(orgIdAuth); string subscription = authSettings[SubscriptionIdKey]; string authEndpoint = authSettings.ContainsKey(AADAuthEndpoint) ? authSettings[AADAuthEndpoint] : AADAuthEndpointDefault; string tenant = authSettings.ContainsKey(AADTenant) ? authSettings[AADTenant] : AADTenantDefault; string user = null; // Preserve/restore subscription ID if (HttpMockServer.Mode == HttpRecorderMode.Record) { HttpMockServer.Variables[SubscriptionIdKey] = subscription; if (authSettings.ContainsKey(AADUserIdKey) && authSettings.ContainsKey(AADPasswordKey)) { user = authSettings[AADUserIdKey]; string password = authSettings[AADPasswordKey]; Tracing.Information("Using AAD auth with username and password combination"); token = TokenCloudCredentialsHelper.GetTokenFromBasicCredentials(user, password, authEndpoint, tenant); } else { Tracing.Information("Using AAD auth with pop-up dialog"); string clientId = authSettings.ContainsKey(ClientID) ? authSettings[ClientID] : ClientIdDefault; if (authSettings.ContainsKey(RawToken)) { token = authSettings[RawToken]; } else { token = TokenCloudCredentialsHelper.GetToken(authEndpoint, tenant, clientId); } } } if (HttpMockServer.Mode == HttpRecorderMode.Playback) { // playback mode but no stored credentials in mocks Tracing.Information("Using dummy token for playback"); token = Guid.NewGuid().ToString(); } orgIdEnvironment = new TestEnvironment { Credentials = token == null ? null : new TokenCloudCredentials(subscription, token), UserName = user }; if (authSettings.ContainsKey(BaseUriKey)) { orgIdEnvironment.BaseUri = new Uri(authSettings[BaseUriKey]); } if (!string.IsNullOrEmpty(authEndpoint)) { orgIdEnvironment.ActiveDirectoryEndpoint = new Uri(authEndpoint); } orgIdEnvironment.SubscriptionId = subscription; } return orgIdEnvironment; }
/// <summary> /// Get the test environment from a connection string specifying a certificate /// </summary> /// <param name="testConnectionString">The connetcion string to parse</param> /// <returns>The test environment from parsing the connection string.</returns> protected virtual TestEnvironment GetCertificateTestEnvironmentFromConnectionString(string testConnectionString) { IDictionary<string, string> connections = ParseConnectionString(testConnectionString); string certificateReference = connections[ManagementCertificateKey]; string subscriptionId = connections[SubscriptionIdKey]; Assert.IsNotNull(certificateReference); X509Certificate2 managementCertificate; if (IsCertificateReference(certificateReference)) { managementCertificate = GetCertificateFromReference(certificateReference); } else { managementCertificate = GetCertificateFromBase64String(certificateReference); } CertificateCloudCredentials credentials = new CertificateCloudCredentials(subscriptionId, managementCertificate); TestEnvironment currentEnvironment = new TestEnvironment { Credentials = credentials }; if (connections.ContainsKey(BaseUriKey)) { currentEnvironment.BaseUri = new Uri(connections[BaseUriKey]); } return currentEnvironment; }
/// <summary> /// Return test credentials and URI using AAD auth for an OrgID account. Use this emthod with causion, it may take a dependency on ADAL /// </summary> /// <returns>The test credentials, or null if nthe appropriate environment variablke is not set.</returns> protected virtual TestEnvironment GetOrgIdTestEnvironment(string orgIdVariable) { TestEnvironment orgIdEnvironment = null; string orgIdAuth = Environment.GetEnvironmentVariable(orgIdVariable); if (!string.IsNullOrEmpty(orgIdAuth)) { string token = null; IDictionary<string, string> authSettings = ParseConnectionString(orgIdAuth); string subscription = authSettings[SubscriptionIdKey]; string authEndpoint = authSettings.ContainsKey(AADAuthEndpoint) ? authSettings[AADAuthEndpoint] : AADAuthEndpointDefault; string tenant = authSettings.ContainsKey(AADTenant) ? authSettings[AADTenant] : AADTenantDefault; string user = null; if (authSettings.ContainsKey(AADUserIdKey) && authSettings.ContainsKey(AADPasswordKey)) { user = authSettings[AADUserIdKey]; string password = authSettings[AADPasswordKey]; Tracing.Information("Using AAD auth with username and password combination"); token = TokenCloudCredentialsHelper.GetTokenFromBasicCredentials(user, password, authEndpoint, tenant); Tracing.Information("Using token {0}", token); } else { Tracing.Information("Using AAD auth with pop-up dialog"); string clientId = authSettings.ContainsKey(ClientID) ? authSettings[ClientID] : ClientIdDefault; if (authSettings.ContainsKey(RawToken)) { token = authSettings[RawToken]; } } orgIdEnvironment = new TestEnvironment { Credentials = token == null ? null : new TokenCloudCredentials(subscription, token), UserName = user }; if (authSettings.ContainsKey(BaseUriKey)) { orgIdEnvironment.BaseUri = new Uri(authSettings[BaseUriKey]); } if (!string.IsNullOrEmpty(authEndpoint)) { orgIdEnvironment.ActiveDirectoryEndpoint = new Uri(authEndpoint); } orgIdEnvironment.SubscriptionId = subscription; } return orgIdEnvironment; }
private void SetupAzureEnvironmentFromEnvironmentVariables() { ServiceManagementTestEnvironmentFactory serviceManagementTestEnvironmentFactory = new ServiceManagementTestEnvironmentFactory(); TestEnvironment rdfeEnvironment = serviceManagementTestEnvironmentFactory.GetTestEnvironment(); ResourceManagerTestEnvironmentFactory resourceManagerTestEnvironmentFactory = new ResourceManagerTestEnvironmentFactory(); TestEnvironment csmEnvironment = resourceManagerTestEnvironmentFactory.GetTestEnvironment(); string jwtToken; if (_moduleMode == AzureModule.AzureResourceManager) { jwtToken = csmEnvironment.Credentials != null ? ((TokenCloudCredentials)csmEnvironment.Credentials).Token : null; } else if (_moduleMode == AzureModule.AzureServiceManagement) { jwtToken = rdfeEnvironment.Credentials != null ? ((TokenCloudCredentials)rdfeEnvironment.Credentials).Token : null; } else { throw new ArgumentException("Invalid module mode."); } WindowsAzureProfile.Instance.TokenProvider = new FakeAccessTokenProvider(jwtToken, csmEnvironment.UserName); WindowsAzureProfile.Instance.CurrentEnvironment = WindowsAzureProfile.Instance.Environments[testEnvironmentName]; WindowsAzureProfile.Instance.CurrentEnvironment.ActiveDirectoryEndpoint = csmEnvironment.ActiveDirectoryEndpoint.AbsoluteUri; WindowsAzureProfile.Instance.CurrentEnvironment.GalleryEndpoint = csmEnvironment.GalleryUri.AbsoluteUri; WindowsAzureProfile.Instance.CurrentEnvironment.ResourceManagerEndpoint = csmEnvironment.BaseUri.AbsoluteUri; WindowsAzureProfile.Instance.CurrentEnvironment.ServiceEndpoint = rdfeEnvironment.BaseUri.AbsoluteUri; testSubscrption = new WindowsAzureSubscription(false, false) { SubscriptionId = csmEnvironment.SubscriptionId, ActiveDirectoryEndpoint = WindowsAzureProfile.Instance.CurrentEnvironment.ActiveDirectoryEndpoint, ActiveDirectoryUserId = csmEnvironment.UserName, SubscriptionName = csmEnvironment.SubscriptionId, ServiceEndpoint = new Uri(WindowsAzureProfile.Instance.CurrentEnvironment.ServiceEndpoint), ResourceManagerEndpoint = new Uri(WindowsAzureProfile.Instance.CurrentEnvironment.ResourceManagerEndpoint), TokenProvider = WindowsAzureProfile.Instance.TokenProvider, GalleryEndpoint = new Uri(WindowsAzureProfile.Instance.CurrentEnvironment.GalleryEndpoint), SqlDatabaseDnsSuffix = WindowsAzureProfile.Instance.CurrentEnvironment.SqlDatabaseDnsSuffix, CurrentStorageAccountName = csmEnvironment.StorageAccount, IsDefault = true }; testEnvironment = csmEnvironment; if (HttpMockServer.GetCurrentMode() == HttpRecorderMode.Playback) { testSubscrption.SetAccessToken(new FakeAccessToken { AccessToken = "123", UserId = testEnvironment.UserName }); } else { testSubscrption.SetAccessToken(WindowsAzureProfile.Instance.TokenProvider.GetNewToken(WindowsAzureProfile.Instance.CurrentEnvironment)); } WindowsAzureProfile.Instance.AddSubscription(testSubscrption); WindowsAzureProfile.Instance.Save(); }