public async Task Put_WritesContentsToFile_ReturnsOkResult() { string folderName = "folderName"; string fileName = "configOne.json"; ConfigOne testConfigOne = new ConfigOne(); testConfigOne.Dsn = "Dsn1"; testConfigOne.User = "******"; testConfigOne.Password = "******"; testConfigOne.Colors = new List <string>(); testConfigOne.Colors.Add("White"); testConfigOne.Colors.Add("Green"); testConfigOne.Stat = new Statistic(); testConfigOne.Stat.Health = 100; testConfigOne.Stat.Vitality = 100; string output = JsonConvert.SerializeObject(testConfigOne); ActionResult <object> result = await controller.WriteConfig(folderName, fileName, output); Assert.IsInstanceOf <OkObjectResult>(result.Result); string folderPath = Path.Combine(baseFolderPath, folderName); string filePath = Path.Combine(baseFolderPath, folderName, fileName); string fileText; using (var reader = File.OpenText(filePath)) { fileText = await reader.ReadToEndAsync(); } File.Delete(filePath); Directory.Delete(folderPath); Assert.AreEqual(fileText, output); }
public async Task <ActionResult> WriteConfig([FromRoute()] string folderName, [FromRoute()] string fileName, [FromBody()] object fileContent) { _logger.LogInformation("API WriteConfig()"); #region INPUT CHECKS if (fileContent == null) { string message = "fileContent is empty"; _logger.LogError(message); return(BadRequest(message)); } if (folderName == null) { string message = "folderName is empty"; _logger.LogError(message); return(BadRequest(message)); } if (fileName == null) { string message = "fileName is empty"; _logger.LogError(message); return(BadRequest(message)); } folderName = folderName.Trim(); fileName = fileName.Trim(); #endregion //check file content type object configInstance = null; try { ConfigOne config = JsonConvert.DeserializeObject <ConfigOne>(fileContent.ToString()); configInstance = config; } catch (Exception e) { _logger.LogInformation("Input object is not of type ConfigOne"); } if (configInstance == null) { try { ConfigTwo config = JsonConvert.DeserializeObject <ConfigTwo>(fileContent.ToString()); configInstance = config; } catch (Exception e) { _logger.LogInformation("Input object is not of type ConfigTwo"); } } if (configInstance == null) { string message = "Input object is not of known type"; _logger.LogError(message); return(BadRequest(message)); } ConfigManager.FileWriter fileWriter = new FileWriter(); IMethodResult result = await fileWriter.WriteConfigFile(folderName, fileName, JsonConvert.SerializeObject(configInstance)); if (result.IsSuccessful) { return(Ok("Config file written successfully")); } else { return(BadRequest(result.Message)); } }