From ca5e2ecb33359a4c55ed7407ecc0b49bc78e3760 Mon Sep 17 00:00:00 2001 From: the-dwyer Date: Thu, 23 Feb 2017 11:38:13 -0800 Subject: [PATCH] Improve code coverage for System.IO.FileSystem.AccessControl from 2.3% to 8.7% (#15815) * Improve code coverage for System.IO.FileSystem.AccessControl * Added check on parameter names for ArgumentNullExceptions and only passing in one null parameter * add tests for gets and sets that do not throw exceptions * renamed tests with returns valid object and removed set tests * use temp directory and file * use temp directory and file * use TempDirectory and TempFile from Common code * remove reference that is not needed * call extension method from object --- .../tests/FileSystemAclExtensionsTests.cs | 100 +++++++++++++++++- ...m.IO.FileSystem.AccessControl.Tests.csproj | 6 ++ 2 files changed, 102 insertions(+), 4 deletions(-) diff --git a/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs b/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs index a3feeee4087f..2d98b2c6ab5e 100644 --- a/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs +++ b/src/System.IO.FileSystem.AccessControl/tests/FileSystemAclExtensionsTests.cs @@ -15,24 +15,84 @@ public void GetAccessControl_DirectoryInfo_InvalidArguments() Assert.Throws(() => FileSystemAclExtensions.GetAccessControl((DirectoryInfo)null)); } + [Fact] + public void GetAccessControl_DirectoryInfo_ReturnsValidObject() + { + using (var directory = new TempDirectory()) + { + DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path); + + DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(); + + Assert.NotNull(directorySecurity); + Assert.Equal(typeof(FileSystemRights), directorySecurity.AccessRightType); + } + } + [Fact] public void GetAccessControl_DirectoryInfo_AccessControlSections_InvalidArguments() { Assert.Throws(() => FileSystemAclExtensions.GetAccessControl((DirectoryInfo)null, new AccessControlSections())); } + [Fact] + public void GetAccessControl_DirectoryInfo_AccessControlSections_ReturnsValidObject() + { + using (var directory = new TempDirectory()) + { + DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path); + AccessControlSections accessControlSections = new AccessControlSections(); + + DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(accessControlSections); + + Assert.NotNull(directorySecurity); + Assert.Equal(typeof(FileSystemRights), directorySecurity.AccessRightType); + } + } + [Fact] public void GetAccessControl_FileInfo_InvalidArguments() { Assert.Throws(() => FileSystemAclExtensions.GetAccessControl((FileInfo)null)); } + [Fact] + public void GetAccessControl_FileInfo_ReturnsValidObject() + { + using (var directory = new TempDirectory()) + using (var file = new TempFile(Path.Combine(directory.Path, "file.txt"))) + { + FileInfo fileInfo = new FileInfo(file.Path); + + FileSecurity fileSecurity = fileInfo.GetAccessControl(); + + Assert.NotNull(fileSecurity); + Assert.Equal(typeof(FileSystemRights), fileSecurity.AccessRightType); + } + } + [Fact] public void GetAccessControl_FileInfo_AccessControlSections_InvalidArguments() { Assert.Throws(() => FileSystemAclExtensions.GetAccessControl((FileInfo)null, new AccessControlSections())); } + [Fact] + public void GetAccessControl_FileInfo_AccessControlSections_ReturnsValidObject() + { + using (var directory = new TempDirectory()) + using (var file = new TempFile(Path.Combine(directory.Path, "file.txt"))) + { + FileInfo fileInfo = new FileInfo(file.Path); + AccessControlSections accessControlSections = new AccessControlSections(); + + FileSecurity fileSecurity = fileInfo.GetAccessControl(accessControlSections); + + Assert.NotNull(fileSecurity); + Assert.Equal(typeof(FileSystemRights), fileSecurity.AccessRightType); + } + } + [Fact] public void GetAccessControl_Filestream_InvalidArguments() { @@ -42,15 +102,47 @@ public void GetAccessControl_Filestream_InvalidArguments() [Fact] public void SetAccessControl_DirectoryInfo_DirectorySecurity_InvalidArguments() { - DirectoryInfo directoryInfo = new DirectoryInfo("\\"); - Assert.Throws("directorySecurity", () => FileSystemAclExtensions.SetAccessControl(directoryInfo, (DirectorySecurity)null)); + using (var directory = new TempDirectory()) + { + DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path); + Assert.Throws("directorySecurity", () => directoryInfo.SetAccessControl((DirectorySecurity) null)); + } + } + + [Fact] + public void SetAccessControl_DirectoryInfo_DirectorySecurity_Success() + { + using (var directory = new TempDirectory()) + { + DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path); + DirectorySecurity directorySecurity = new DirectorySecurity(); + + directoryInfo.SetAccessControl(directorySecurity); + } } [Fact] public void SetAccessControl_FileInfo_FileSecurity_InvalidArguments() { - FileInfo fileInfo = new FileInfo("\\"); - Assert.Throws("fileSecurity", () => FileSystemAclExtensions.SetAccessControl(fileInfo, (FileSecurity)null)); + using (var directory = new TempDirectory()) + using (var file = new TempFile(Path.Combine(directory.Path, "file.txt"))) + { + FileInfo fileInfo = new FileInfo(file.Path); + Assert.Throws("fileSecurity", () => fileInfo.SetAccessControl((FileSecurity) null)); + } + } + + [Fact] + public void SetAccessControl_FileInfo_FileSecurity_Success() + { + using (var directory = new TempDirectory()) + using (var file = new TempFile(Path.Combine(directory.Path, "file.txt"))) + { + FileInfo fileInfo = new FileInfo(file.Path); + FileSecurity fileSecurity = new FileSecurity(); + + fileInfo.SetAccessControl(fileSecurity); + } } [Fact] diff --git a/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj b/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj index 95929e3ef0a5..325365fe0033 100644 --- a/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj +++ b/src/System.IO.FileSystem.AccessControl/tests/System.IO.FileSystem.AccessControl.Tests.csproj @@ -8,6 +8,12 @@ + + Common\System\IO\TempFile.cs + + + Common\System\IO\TempDirectory.cs + \ No newline at end of file