public void TestConnectMagicFromEnvironment() { var azureClient = new MockAzureClient(); var logger = new UnitTestLogger <ConnectMagic>(); var config = new ConfigurationSource(skipLoading: true); var connectMagic = new ConnectMagic(azureClient, config, logger); // no input connectMagic.Test(string.Empty); Assert.AreEqual(AzureClientAction.GetConnectionStatus, azureClient.LastAction); // Missing environment variables connectMagic.Test($"credential=ENVIRONMENT", ExecuteStatus.Error); // Pick up environment variables System.Environment.SetEnvironmentVariable(EnvironmentSubscriptionId, subscriptionId); System.Environment.SetEnvironmentVariable(EnvironmentResourceGroup, resourceGroupName); System.Environment.SetEnvironmentVariable(EnvironmentWorkspaceName, workspaceName); System.Environment.SetEnvironmentVariable(EnvironmentLocation, location); // Temporarily set the environment variables with old prefix, as the renaming // has not being applied to the C# client yet System.Environment.SetEnvironmentVariable("AZUREQUANTUM_SUBSCRIPTION_ID", subscriptionId); System.Environment.SetEnvironmentVariable("AZUREQUANTUM_WORKSPACE_RG", resourceGroupName); System.Environment.SetEnvironmentVariable("AZUREQUANTUM_WORKSPACE_NAME", workspaceName); System.Environment.SetEnvironmentVariable("AZUREQUANTUM_WORKSPACE_LOCATION", location); connectMagic.Test("credential=ENVIRONMENT"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); Assert.AreEqual(CredentialType.Environment, azureClient.CredentialType); Assert.AreEqual(location, azureClient.Location); // Reset env variables: System.Environment.SetEnvironmentVariable(EnvironmentSubscriptionId, string.Empty); System.Environment.SetEnvironmentVariable(EnvironmentResourceGroup, string.Empty); System.Environment.SetEnvironmentVariable(EnvironmentWorkspaceName, string.Empty); System.Environment.SetEnvironmentVariable(EnvironmentLocation, string.Empty); }
public void TestConnectMagic() { var azureClient = new MockAzureClient(); var logger = new UnitTestLogger <ConnectMagic>(); var config = new ConfigurationSource(skipLoading: true); var connectMagic = new ConnectMagic(azureClient, config, logger); // no input connectMagic.Test(string.Empty); Assert.AreEqual(AzureClientAction.GetConnectionStatus, azureClient.LastAction); // unrecognized input connectMagic.Test($"invalid", ExecuteStatus.Error); // valid input with resource ID (and to verify case-insensitivity of resourceId parsing) connectMagic.Test($"resourceId=/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); Assert.AreEqual(string.Empty, azureClient.Location); // valid input with implied resource ID key, without surrounding quotes connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); Assert.AreEqual(string.Empty, azureClient.Location); Assert.AreEqual(CredentialType.Default, azureClient.CredentialType); // valid input with implied resource ID key, with surrounding quotes connectMagic.Test($"\"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}\""); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); Assert.AreEqual(string.Empty, azureClient.Location); Assert.AreEqual(CredentialType.Default, azureClient.CredentialType); // valid input with resource ID and storage account connection string connectMagic.Test( @$ "resourceId=/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName} storage={storageAccountConnectionString} credential=cli"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); Assert.AreEqual(string.Empty, azureClient.Location); Assert.AreEqual(CredentialType.CLI, azureClient.CredentialType); // valid input with individual parameters connectMagic.Test( @$ "subscription={subscriptionId} resourceGroup={resourceGroupName} workspace={workspaceName} storage={storageAccountConnectionString} location={location} credential=interactive"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(location, azureClient.Location); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); Assert.AreEqual(CredentialType.Interactive, azureClient.CredentialType); // valid input with extra whitespace and quotes connectMagic.Test( @$ "location ={location} subscription = {subscriptionId} resourceGroup= " "{resourceGroupName}" " workspace ={workspaceName} credential=ENVIRONMENT storage = '{storageAccountConnectionString}'"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); Assert.AreEqual(CredentialType.Environment, azureClient.CredentialType); Assert.AreEqual(location, azureClient.Location); // refresh parameter, which has been deprecated so has no effect: connectMagic.Test( @$ "refresh subscription={subscriptionId} resourceGroup={resourceGroupName} workspace={workspaceName} storage={storageAccountConnectionString}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); Assert.AreEqual(string.Empty, azureClient.Location); Assert.AreEqual(CredentialType.Default, azureClient.CredentialType); connectMagic.Test($"refresh /subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName} refresh"); connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); }
public void TestConnectMagic() { var azureClient = new MockAzureClient(); var connectMagic = new ConnectMagic(azureClient); // no input connectMagic.Test(string.Empty); Assert.AreEqual(AzureClientAction.GetConnectionStatus, azureClient.LastAction); // unrecognized input connectMagic.Test($"invalid", ExecuteStatus.Error); // valid input with resource ID (and to verify case-insensitivity of resourceId parsing) connectMagic.Test($"resourceId=/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); // valid input with implied resource ID key, without surrounding quotes connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); // valid input with implied resource ID key, with surrounding quotes connectMagic.Test($"\"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}\""); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(string.Empty, azureClient.ConnectionString); // valid input with resource ID and storage account connection string connectMagic.Test( @$ "resourceId=/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName} storage={storageAccountConnectionString}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); // valid input with individual parameters connectMagic.Test( @$ "subscription={subscriptionId} resourceGroup={resourceGroupName} workspace={workspaceName} storage={storageAccountConnectionString}"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); // valid input with extra whitespace and quotes connectMagic.Test( @$ "subscription = {subscriptionId} resourceGroup= " "{resourceGroupName}" " workspace ={workspaceName} storage = '{storageAccountConnectionString}'"); Assert.AreEqual(AzureClientAction.Connect, azureClient.LastAction); Assert.IsFalse(azureClient.RefreshCredentials); Assert.AreEqual(subscriptionId, azureClient.SubscriptionId); Assert.AreEqual(resourceGroupName, azureClient.ResourceGroupName); Assert.AreEqual(workspaceName, azureClient.WorkspaceName); Assert.AreEqual(storageAccountConnectionString, azureClient.ConnectionString); // valid input with forced login connectMagic.Test( @$ "refresh subscription={subscriptionId} resourceGroup={resourceGroupName} workspace={workspaceName} storage={storageAccountConnectionString}"); Assert.IsTrue(azureClient.RefreshCredentials); // forced login with implied resource ID before, after, and missing connectMagic.Test($"refresh /subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.IsTrue(azureClient.RefreshCredentials); connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName} refresh"); Assert.IsTrue(azureClient.RefreshCredentials); connectMagic.Test($"/subscriptions/{subscriptionId}/RESOurceGroups/{resourceGroupName}/providers/Microsoft.Quantum/Workspaces/{workspaceName}"); Assert.IsFalse(azureClient.RefreshCredentials); }