From 75b0a16be6975a94d3b6b83980629915d5425c37 Mon Sep 17 00:00:00 2001 From: Travis Frisinger Date: Wed, 28 May 2025 17:20:24 +0000 Subject: [PATCH 1/3] fix: handle null file data in Write_File_To_Path method Co-authored-by: Genie --- source/StoneAge.Data.FileSystem/FileSystem.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/StoneAge.Data.FileSystem/FileSystem.cs b/source/StoneAge.Data.FileSystem/FileSystem.cs index 008c2ef..ba56d22 100644 --- a/source/StoneAge.Data.FileSystem/FileSystem.cs +++ b/source/StoneAge.Data.FileSystem/FileSystem.cs @@ -196,6 +196,13 @@ public async Task> ReadAllLines(string path) private WriteFileResult Write_File_To_Path(IDocument file, string filePath, FileMode fileMode) { var result = new WriteFileResult(); + + if (file.Data == null) + { + result.ErrorMessages.Add("No file data provided; cannot write file."); + return result; + } + try { using (var stream = new FileStream(filePath, fileMode)) From 13a7ac45503b83271204d1ab85e520bc2467c77f Mon Sep 17 00:00:00 2001 From: Travis Frisinger Date: Wed, 28 May 2025 17:21:46 +0000 Subject: [PATCH 2/3] test: add unit test for null file data error handling Co-authored-by: Genie --- .../FileSystemTests.cs | 19 +++++++++++++++++++ source/StoneAge.Data.FileSystem/FileSystem.cs | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs index 08f5d4c..edb78bd 100644 --- a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs +++ b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs @@ -112,6 +112,25 @@ public async Task WhenFileExist_ExpectItOverWritten() contents.Should().BeEquivalentTo(new byte[5]); } + [Test] + public async Task WhenFileDataIsNull_ExpectErrorMessage() + { + //---------------Arrange------------------- + var path = Path.GetTempPath(); + var fileName = Guid.NewGuid() + ".txt"; + var document = new DocumentBuilder() + .With_Name(fileName) + // intentionally not setting bytes or file + .Create_Document(); + + var sut = new FileSystem(); + //---------------Act---------------------- + var result = await sut.Write(path, document); + //---------------Assert----------------------- + result.HadError.Should().BeTrue(); + result.ErrorMessages.Should().Contain("No file data provided; cannot write file."); + } + private static void Write_File_Contents_For_Testing(string path, string fileName) { File.WriteAllText(Path.Combine(path, fileName), "test line"); diff --git a/source/StoneAge.Data.FileSystem/FileSystem.cs b/source/StoneAge.Data.FileSystem/FileSystem.cs index ba56d22..ae57b95 100644 --- a/source/StoneAge.Data.FileSystem/FileSystem.cs +++ b/source/StoneAge.Data.FileSystem/FileSystem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; From 339d6c3598c9ca1a71f564321e7a7108c539a97d Mon Sep 17 00:00:00 2001 From: Travis Frisinger Date: Wed, 28 May 2025 17:27:35 +0000 Subject: [PATCH 3/3] chore: update comment for clarity in FileSystemTests --- source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs index edb78bd..77d96a4 100644 --- a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs +++ b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -120,7 +120,7 @@ public async Task WhenFileDataIsNull_ExpectErrorMessage() var fileName = Guid.NewGuid() + ".txt"; var document = new DocumentBuilder() .With_Name(fileName) - // intentionally not setting bytes or file + .With_Bytes(null) // explicitly set null data .Create_Document(); var sut = new FileSystem();