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)); } } }
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()}"); } }
/// <summary> /// Creates a datasource 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 datasource 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); Assert.That(createdCredential, Is.Not.Null); Assert.That(createdCredential.Id, Is.Not.Null.And.Not.Empty); return(new DisposableDatasourceCredential(adminClient, createdCredential)); }
/// <summary> /// Creates a datasource 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 datasource credential.</param> /// <param name="name">The name of the datasource 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 datasource 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.Name, Is.EqualTo(expectedName)); Assert.That(updatedCredential.Description, Is.EqualTo(expectedDescription)); }
/// <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 datasource credential this instance is associated with.</param> private DisposableDatasourceCredential(MetricsAdvisorAdministrationClient adminClient, DatasourceCredential credential) { _adminClient = adminClient; Credential = credential; }
/// <summary> /// Creates a datasource 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 datasource 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)); }