示例#1
0
        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);
        }