public async Task ArchiveLogFiles_LogsArchived_ReturnTrue(string file1, string file2, string file3) { // Arrange string currentDirectory = Environment.CurrentDirectory; string projectDirectory = Directory.GetParent(currentDirectory).FullName; string textDirectory = $"{projectDirectory}\\logs"; string logPath1 = Path.Combine(textDirectory, file1); string logPath2 = Path.Combine(textDirectory, file2); string logPath3 = Path.Combine(textDirectory, file3); string builtMessage = "Test Log"; if (!File.Exists(logPath1)) { using (StreamWriter writer = File.CreateText(logPath1)) { writer.WriteLine(builtMessage); } } else { using (StreamWriter writer = File.AppendText(logPath1)) { writer.WriteLine(builtMessage); } } if (!File.Exists(logPath2)) { using (StreamWriter writer = File.CreateText(logPath2)) { writer.WriteLine(builtMessage); } } else { using (StreamWriter writer = File.AppendText(logPath2)) { writer.WriteLine(builtMessage); } } if (!File.Exists(logPath3)) { using (StreamWriter writer = File.CreateText(logPath3)) { writer.WriteLine(builtMessage); } } else { using (StreamWriter writer = File.AppendText(logPath3)) { writer.WriteLine(builtMessage); } } List <string> files = new List <string>(); files.Add(logPath1); files.Add(logPath2); files.Add(logPath3); // Act var archiveResult = await archiveService.ArchiveLogFiles(files); // Assert Assert.IsTrue(archiveResult); }
public async Task <Result <bool> > ArchiveLogFiles(DateTimeOffset startTime, DateTimeOffset endTime) { try { if (startTime == null || endTime == null) { return(Result <bool> .Failure(ErrorMessage.Null)); } string currentDirectory = Environment.CurrentDirectory; string projectDirectory = Directory.GetParent(currentDirectory).FullName; string logDirectory = $"{projectDirectory}\\logs"; if (!Directory.Exists(logDirectory)) { DirectoryInfo di = Directory.CreateDirectory(logDirectory); } string[] allFiles = Directory.GetFiles(logDirectory, "*.*", SearchOption.AllDirectories); List <string> validFiles = new List <string>(); foreach (var file in allFiles) { DateTimeOffset creationTime = File.GetCreationTimeUtc(file); if (creationTime.Date >= startTime.ToUniversalTime().Date&& creationTime.Date <= endTime.ToUniversalTime().Date) { validFiles.Add(file); } } var isSuccessful = await _archiveService.ArchiveLogFiles(validFiles); if (isSuccessful) { return(Result <bool> .Success(isSuccessful)); } else { return(Result <bool> .Failure(ErrorMessage.NoSuchFilesExist)); } } catch (NotSupportedException) { return(Result <bool> .Failure(ErrorMessage.DataNotSupported)); } catch (PathTooLongException) { return(Result <bool> .Failure(ErrorMessage.FolderPathTooLong)); } catch (IOException) { return(Result <bool> .Failure(ErrorMessage.FileError)); } catch (UnauthorizedAccessException) { return(Result <bool> .Failure(ErrorMessage.Forbidden)); } catch (InvalidDataException) { return(Result <bool> .Failure(ErrorMessage.DataNotSupported)); } }