Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
/ corefx Public archive

Commit

Permalink
Improve code coverage for System.IO.FileSystem.AccessControl from 2.3…
Browse files Browse the repository at this point in the history
…% 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
  • Loading branch information
the-dwyer authored and Ian Hays committed Feb 23, 2017
1 parent a1ea975 commit ca5e2ec
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,84 @@ public void GetAccessControl_DirectoryInfo_InvalidArguments()
Assert.Throws<NullReferenceException>(() => 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<NullReferenceException>(() => 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<NullReferenceException>(() => 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<NullReferenceException>(() => 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()
{
Expand All @@ -42,15 +102,47 @@ public void GetAccessControl_Filestream_InvalidArguments()
[Fact]
public void SetAccessControl_DirectoryInfo_DirectorySecurity_InvalidArguments()
{
DirectoryInfo directoryInfo = new DirectoryInfo("\\");
Assert.Throws<ArgumentNullException>("directorySecurity", () => FileSystemAclExtensions.SetAccessControl(directoryInfo, (DirectorySecurity)null));
using (var directory = new TempDirectory())
{
DirectoryInfo directoryInfo = new DirectoryInfo(directory.Path);
Assert.Throws<ArgumentNullException>("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<ArgumentNullException>("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<ArgumentNullException>("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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Windows_NT-Release|AnyCPU'" />
<ItemGroup>
<Compile Include="FileSystemAclExtensionsTests.cs" />
<Compile Include="$(CommonTestPath)\System\IO\TempFile.cs">
<Link>Common\System\IO\TempFile.cs</Link>
</Compile>
<Compile Include="$(CommonTestPath)\System\IO\TempDirectory.cs">
<Link>Common\System\IO\TempDirectory.cs</Link>
</Compile>
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>

0 comments on commit ca5e2ec

Please sign in to comment.