private void ValidateTestCaseDataSourceCredential(DataSourceCredential credential) { if (credential is ServicePrincipalDataSourceCredential spCredential) { Assert.That(spCredential.ClientId, Is.EqualTo(ClientId)); Assert.That(spCredential.TenantId, Is.EqualTo(TenantId)); } else if (credential is ServicePrincipalInKeyVaultDataSourceCredential kvCredential) { Assert.That(kvCredential.Endpoint.AbsoluteUri, Is.EqualTo(Endpoint)); Assert.That(kvCredential.KeyVaultClientId, Is.EqualTo(ClientId)); Assert.That(kvCredential.TenantId, Is.EqualTo(TenantId)); Assert.That(kvCredential.SecretNameForClientId, Is.EqualTo(ClientIdSecretName)); Assert.That(kvCredential.SecretNameForClientSecret, Is.EqualTo(ClientSecretSecretName)); } else if (credential is DataLakeGen2SharedKeyDataSourceCredential || credential is SqlConnectionStringDataSourceCredential) { // There's nothing to validate since these credential types do not have public properties. } else { throw new Exception($"Unknown credential type: {credential.GetType()}"); } }
public async Task DeleteDataSourceCredential() { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); var credentialName = Recording.GenerateAlphaNumericId("credential"); var credentialToCreate = new ServicePrincipalDataSourceCredential(credentialName, "clientId", "clientSecret", "tenantId"); string credentialId = null; try { DataSourceCredential createdCredential = await adminClient.CreateDataSourceCredentialAsync(credentialToCreate); credentialId = createdCredential.Id; Assert.That(credentialId, Is.Not.Null.And.Not.Empty); } finally { if (credentialId != null) { await adminClient.DeleteDataSourceCredentialAsync(credentialId); var errorCause = "credentialId is invalid"; Assert.That(async() => await adminClient.GetDataSourceCredentialAsync(credentialId), Throws.InstanceOf <RequestFailedException>().With.Message.Contains(errorCause)); } } }
/// <summary> /// Creates a data source credential using the specified <see cref="MetricsAdvisorAdministrationClient"/>. /// A <see cref="DisposableDataSourceCredential"/> instance is returned, from which the created credential can /// be obtained. Except for the name, all of its required properties are initialized with mock values. Upon disposal, /// the created credential will be deleted. /// </summary> /// <param name="adminClient">The client to use for creating and for deleting the data source credential.</param> /// <param name="name">The name of the data source credential to be created.</param> /// <param name="authenticationType">Specifies which type of <see cref="DataSourceCredential"/> should be created.</param> /// <returns>A <see cref="DisposableDataSourceCredential"/> instance from which the created credential can be obtained.</returns> public static async Task <DisposableDataSourceCredential> CreateDataSourceCredentialAsync(MetricsAdvisorAdministrationClient adminClient, string name, string authenticationType) { DataSourceCredential credential = authenticationType switch { "ServicePrincipal" => new ServicePrincipalDataSourceCredential(name, "mock", "mock", "mock"), "ServicePrincipalInKeyVault" => new ServicePrincipalInKeyVaultDataSourceCredential(name, new Uri("https://mock.com/"), "mock", "mock", "mock", "mock", "mock"), "SharedKey" => new DataLakeGen2SharedKeyDataSourceCredential(name, "mock"), "SqlConnectionString" => new SqlConnectionStringDataSourceCredential(name, "mock"), _ => throw new ArgumentOutOfRangeException($"Invalid data source credential type: {authenticationType}") }; return(await CreateDataSourceCredentialAsync(adminClient, credential).ConfigureAwait(false)); }
public async Task CreateAndGetDataSourceCredentialWithDescription(string credentialTypeName) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string credentialName = Recording.GenerateAlphaNumericId("credential"); string expectedDescription = "This is a description"; DataSourceCredential credentialToCreate = GetDataSourceCredentialTestCase(credentialTypeName, credentialName); credentialToCreate.Description = expectedDescription; await using var disposableCredential = await DisposableDataSourceCredential.CreateDataSourceCredentialAsync(adminClient, credentialToCreate); DataSourceCredential createdCredential = disposableCredential.Credential; Assert.That(createdCredential.Description, Is.EqualTo(expectedDescription)); }
public async Task CreateAndGetDataSourceCredential(string credentialTypeName) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string credentialName = Recording.GenerateAlphaNumericId("credential"); DataSourceCredential credentialToCreate = GetDataSourceCredentialTestCase(credentialTypeName, credentialName); await using var disposableCredential = await DisposableDataSourceCredential.CreateDataSourceCredentialAsync(adminClient, credentialToCreate); DataSourceCredential createdCredential = disposableCredential.Credential; Assert.That(createdCredential.Id, Is.Not.Empty.And.Not.Null); Assert.That(createdCredential.Name, Is.EqualTo(credentialName)); Assert.That(createdCredential.Description, Is.Empty); ValidateTestCaseDataSourceCredential(createdCredential); }
public async Task DataSourceCredentialSendsSecretDuringCreation(DataSourceCredential credential, string expectedSubstring) { MockResponse createResponse = new MockResponse(201); createResponse.AddHeader(new HttpHeader("Location", $"https://fakeresource.cognitiveservices.azure.com/metricsadvisor/v1.0/credentials/{FakeGuid}")); MockResponse getResponse = new MockResponse(200); getResponse.SetContent(DataSourceCredentialResponseContent); MockTransport mockTransport = new MockTransport(createResponse, getResponse); MetricsAdvisorAdministrationClient adminClient = CreateInstrumentedAdministrationClient(mockTransport); await adminClient.CreateDataSourceCredentialAsync(credential); MockRequest request = mockTransport.Requests.First(); string content = ReadContent(request); Assert.That(content, Contains.Substring(expectedSubstring)); }
public async Task UpdateDataSourceCredentialCommonProperties(string credentialTypeName) { MetricsAdvisorAdministrationClient adminClient = GetMetricsAdvisorAdministrationClient(); string credentialName = Recording.GenerateAlphaNumericId("credential"); DataSourceCredential credentialToCreate = GetDataSourceCredentialTestCase(credentialTypeName, credentialName); await using var disposableCredential = await DisposableDataSourceCredential.CreateDataSourceCredentialAsync(adminClient, credentialToCreate); DataSourceCredential credentialToUpdate = disposableCredential.Credential; string expectedName = Recording.GenerateAlphaNumericId("credential"); string expectedDescription = "This description was created by a .NET test"; credentialToUpdate.Name = expectedName; credentialToUpdate.Description = expectedDescription; DataSourceCredential updatedCredential = await adminClient.UpdateDataSourceCredentialAsync(credentialToUpdate); Assert.That(updatedCredential.Id, Is.EqualTo(credentialToUpdate.Id)); Assert.That(updatedCredential.Name, Is.EqualTo(expectedName)); Assert.That(updatedCredential.Description, Is.EqualTo(expectedDescription)); }
/// <summary> /// Creates a data source credential using the specified <see cref="MetricsAdvisorAdministrationClient"/>. /// A <see cref="DisposableDataSourceCredential"/> instance is returned, from which the created credential /// can be obtained. Upon disposal, the created credential will be deleted. /// </summary> /// <param name="adminClient">The client to use for creating and for deleting the data source credential.</param> /// <param name="credential">Specifies how the created <see cref="DataSourceCredential"/> should be configured.</param> /// <returns>A <see cref="DisposableDataSourceCredential"/> instance from which the created credential can be obtained.</returns> public static async Task <DisposableDataSourceCredential> CreateDataSourceCredentialAsync(MetricsAdvisorAdministrationClient adminClient, DataSourceCredential credential) { DataSourceCredential createdCredential = await adminClient.CreateDataSourceCredentialAsync(credential); return(new DisposableDataSourceCredential(adminClient, createdCredential)); }
/// <summary> /// Initializes a new instance of the <see cref="DisposableDataSourceCredential"/> class. /// </summary> /// <param name="adminClient">The client to use for deleting the credential entity upon disposal.</param> /// <param name="credential">The data source credential this instance is associated with.</param> private DisposableDataSourceCredential(MetricsAdvisorAdministrationClient adminClient, DataSourceCredential credential) { _adminClient = adminClient; Credential = credential; }