public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jObject = JObject.Load(reader); string actionType = (string)jObject["Action"] ?? string.Empty; ModInstallAction item = null; if (actionType.Equals("MoveFile", StringComparison.InvariantCultureIgnoreCase)) { item = new MoveFileAction(); } else if (actionType.Equals("MoveFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new MoveFilesAction(); } else if (actionType.Equals("DeleteFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new DeleteFilesAction(); } else if (actionType.Equals("ReplaceFile", StringComparison.InvariantCultureIgnoreCase)) { item = new ReplaceFileAction(); } else if (actionType.Equals("ReplaceFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new ReplaceFilesAction(); } else if (actionType.Equals("CopyFile", StringComparison.InvariantCultureIgnoreCase)) { item = new CopyFileAction(); } else if (actionType.Equals("CopyFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new CopyFilesAction(); } else if (actionType.Equals("WriteToFile", StringComparison.InvariantCultureIgnoreCase)) { item = new WriteToFileAction(); } else if (actionType.Equals("QuickBMSExtract", StringComparison.InvariantCultureIgnoreCase)) { item = new QuickBMSExtractAction(); } else if (actionType.Equals("UnluacDecompile", StringComparison.InvariantCultureIgnoreCase)) { item = new UnluacDecompileAction(); } else { item = new ModInstallAction(); } serializer.Populate(jObject.CreateReader(), item); return(item); }
static bool CheckFileDeleteAction(DeleteFilesAction action, List <string> loadErrors) { // Can only delete files in the game path if (!action.TargetFiles.All(f => ValidGameFilePath(f))) { loadErrors.Add($"FileDelete - {nameof(action.TargetFiles)}: Provided path must be in the [GAME] folder"); return(false); } return(action.TargetFiles.All(s => !string.IsNullOrWhiteSpace(s))); }
public void DeleteFileFailsWhenArgumentsNull() { var deleteFileAction = new DeleteFilesAction { Id = Guid.NewGuid().ToString("N") }; var result = deleteFileAction.Execute(null); Assert.IsNotNull(result); Assert.IsFalse(result.Result); }
public void DeleteFileFailsWhenMissingArgument() { var deleteFileAction = new DeleteFilesAction { Id = Guid.NewGuid().ToString("N") }; var args = new ArgumentCollection(); var result = deleteFileAction.Execute(args); Assert.IsNotNull(result); Assert.IsFalse(result.Result); }
public void DeleteFileFailsWhenFileDoesNotExist() { var deleteFileAction = new DeleteFilesAction { Id = Guid.NewGuid().ToString("N") }; var filePath = @"\\//?-#."; var args = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> { filePath })); var result = deleteFileAction.Execute(args); Assert.IsNotNull(result); Assert.IsFalse(result.Result); }
public void DeleteFileFailsWhenUsedByAnotherProcess() { var deleteFileAction = new DeleteFilesAction { Id = Guid.NewGuid().ToString("N") }; var filePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); var createdFileStream = File.Create(filePath); Assert.IsTrue(File.Exists(filePath)); var args = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> { filePath })); var result = deleteFileAction.Execute(args); Assert.IsNotNull(result); Assert.IsFalse(result.Result); Assert.IsTrue(File.Exists(filePath)); createdFileStream.Close(); File.Delete(filePath); Assert.IsFalse(File.Exists(filePath)); }
public void DeleteFileTestSuccess() { var deleteFileAction = new DeleteFilesAction { Id = Guid.NewGuid().ToString("N") }; var filePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); using (var file = File.Create(filePath)) { } Assert.IsTrue(File.Exists(filePath)); var args = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> { filePath })); var result = deleteFileAction.Execute(args); Assert.IsNotNull(result); Assert.IsTrue(result.Result); Assert.IsFalse(File.Exists(filePath)); }