private async Task <string> UpdateSecretInternal(string newPath, string oldPath, Dictionary <string, object> data) { var slug = Normalize($"{_context.BasePathPrefix}:{newPath}"); if (string.Equals(slug, oldPath, StringComparison.InvariantCultureIgnoreCase)) { var updateResponse = await _secretsClient.UpdateSecretAsync(slug, new SecretUpsert(data : data)); return(updateResponse?.Path); } var response = await _secretsClient.CreateSecretAsync(slug, new SecretUpsert( data : data) ); try { await _secretsClient.DeleteSecretAsync(Normalize(oldPath)); } catch (ApiException ex) { //ignore if we fail to delete the secret } return(response?.Path); }
public async Task TestUpdateValue() { var secretPath = Guid.NewGuid().ToString(); var oldSecretPath = $"{_devOpsContext.BasePathPrefix}:{secretPath}"; var value = Guid.NewGuid().ToString(); var tokenReturn = new AccessTokenResponse("access-token", 3600, tokenType: "bearer"); _tokensApi.Token("client_credentials", clientId: _devOpsContext.ClientId, clientSecret: _devOpsContext.ClientSecret) .Returns(tokenReturn); var secretReturn = Task.FromResult(new SecretResponse(path: oldSecretPath)); _secretsApi.UpdateSecretAsync(oldSecretPath, Arg.Is <SecretUpsert>(x => x.Data["password"].Equals(value))) .Returns(secretReturn); var result = await _secureStore.UpdateValueAsync(_ctxString, secretPath, oldSecretPath, value); Assert.AreEqual(oldSecretPath, result); }