public async Task <IActionResult> CreateSecretAsync(SecretParameters secretDto) { try { var validator = new SecretValidator(); validator.Validate(secretDto); var secretSpec = new Docker.DotNet.Models.SecretSpec(); var bytes = Encoding.UTF8.GetBytes(secretDto.Content).ToList(); secretSpec.Data = bytes; secretSpec.Name = secretDto.Name; secretSpec.Labels = secretDto.Labels; var secretCreateResponse = await _swarmClient.CreateSecret(secretSpec); return(Created($"/api/secret/{secretDto.Name}", secretCreateResponse)); } catch (ArgumentException ex) { var errorMessage = "Cannot create secret."; _logger.LogError(ex, errorMessage); return(BadRequest(ex.Message)); } catch (Exception ex) { return(CreateErrorResponse(ex, "Cannot create secret.")); } }
public async Task ShouldCreateNewSecretWhenCreateSecretCalled() { //Given const string secretName = "test-secret"; _swarmClient.CreateSecret(Arg.Any <SecretSpec>()).Returns(x => _any.Create <SecretCreateResponse>()); var secretService = new SecretService(_swarmClient, _loggerFactory); var secretController = new SecretController(secretService); //When var response = await secretController.CreateSecret(new SwarmApi.Dtos.SecretParameters { Content = _any.Create <string>(), Name = secretName }); var result = response as CreatedResult; //Then Assert.NotNull(result); Assert.Equal($"/api/secret/{secretName}", result.Location); }