public async Task <Secret> SetSecretAsync(string secretName, SecretSetParameters secretSetParameters)
        {
            if (secretSetParameters is null)
            {
                throw new ArgumentNullException(nameof(secretSetParameters));
            }

            var id = Utilities.GenerateId();

            var secret = new Secret
            {
                Name          = secretName,
                ContentType   = secretSetParameters.ContentType,
                Created       = secretSetParameters.SecretAttributes?.Created,
                Enabled       = secretSetParameters.SecretAttributes?.Enabled,
                Expires       = secretSetParameters.SecretAttributes?.Expires,
                NotBefore     = secretSetParameters?.SecretAttributes?.NotBefore,
                RecoveryLevel = DeletionRecoveryLevel.Purgeable,
                Tags          = secretSetParameters.Tags?.Select(t => new Tag
                {
                    Key   = t.Key,
                    Value = t.Value
                }).ToList(),
                Updated   = secretSetParameters.SecretAttributes?.Updated,
                Value     = secretSetParameters.Value,
                VersionId = id
            };

            var entity = _dbContext.Add(secret);

            _ = await _dbContext.SaveChangesAsync().ConfigureAwait(false);

            return(secret);
        }
        public async Task <IActionResult> SetSecret([FromRoute] string secretName, [FromBody] SecretSetParameters secretSetParameters)
        {
            var secret = await _secretsService.SetSecretAsync(secretName, secretSetParameters);

            if (secret is null)
            {
            }

            return(Ok(secret));
        }
        public async Task <SecretBundle> SetSecretAsync(string secretName, SecretSetParameters secretSetParameters)
        {
            var secret = await _secretsRepository.SetSecretAsync(secretName, secretSetParameters);

            return(new SecretBundle()
            {
                Attributes = new SecretAttributes(secret.Enabled, secret.NotBefore, secret.Expires, secret.Created, secret.Updated, secret.RecoveryLevel),
                ContentType = secret.ContentType,
                Id = $"http://localhost:{_portOptions.Port}/secrets/{secretName}/{secret.Id.ToString()}",
                Tags = secret.Tags?.ToDictionary(t => t.Key, t => t.Value),
                Value = secret.Value
            });
        }
 public async Task SetSecret_EndpointCreatesSecret()
 {
     var client           = _factory.CreateClient();
     var secretName       = "someSecret";
     var secretParameters = new SecretSetParameters
     {
         ContentType = MediaTypeNames.Text.Plain,
         Value       = "someSecret"
     };
     var           serializedParameters = JsonSerializer.Serialize(secretParameters);
     StringContent request  = new StringContent(serializedParameters, Encoding.UTF8, MediaTypeNames.Application.Json);
     var           response = await client.PutAsync($"secrets/{secretName}", request);
 }