Imported Upstream version 5.16.0.100

Former-commit-id: 38faa55fb9669e35e7d8448b15c25dc447f25767
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-08-07 15:19:03 +00:00
parent 0a9828183b
commit 7d7f676260
4419 changed files with 170950 additions and 90273 deletions

View File

@ -11,6 +11,12 @@
<SupportedFramework>netcore50</SupportedFramework>
</HarvestIncludePaths>
<HarvestIncludePaths Include="runtimes/win/lib/netstandard1.3;lib/netstandard1.3" />
<!--
Suppress NETStandard.Library collpasing as it add more dependencies then needed in some
scenarios like .NET Framework which adds an unecessary amount of package dependencies to download
-->
<SuppressMetaPackage Include="NETStandard.Library" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>

View File

@ -3,8 +3,8 @@
<PropertyGroup>
<PackageConfigurations>
netstandard;
netstandard-Windows_NT;
netfx-Windows_NT;
netcoreapp2.0-Windows_NT;
</PackageConfigurations>
<BuildConfigurations>
$(PackageConfigurations);

View File

@ -7,19 +7,19 @@
<PropertyGroup>
<AssemblyName>System.IO.FileSystem.AccessControl</AssemblyName>
<ProjectGuid>{D77FBA6C-1AA6-45A4-93E2-97A370672C53}</ProjectGuid>
<AllowUnsafeBlocks Condition="$(TargetGroup.StartsWith('netcoreapp'))">true</AllowUnsafeBlocks>
<AllowUnsafeBlocks Condition="'$(TargetsWindows)' == 'true'">true</AllowUnsafeBlocks>
<IsPartialFacadeAssembly Condition="'$(TargetGroup)'=='netfx'">true</IsPartialFacadeAssembly>
<GeneratePlatformNotSupportedAssemblyMessage Condition="'$(TargetGroup)' == 'netstandard'">SR.PlatformNotSupported_AccessControl</GeneratePlatformNotSupportedAssemblyMessage>
<GeneratePlatformNotSupportedAssemblyMessage Condition="'$(TargetsWindows)' != 'true'">SR.PlatformNotSupported_AccessControl</GeneratePlatformNotSupportedAssemblyMessage>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp2.0-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp2.0-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netfx-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netfx-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netstandard-Release|AnyCPU'" />
<ItemGroup Condition="$(TargetGroup.StartsWith('netcoreapp'))">
<ItemGroup Condition="'$(TargetsWindows)' == 'true' AND '$(TargetGroup)'!='netfx'">
<Compile Include="$(CommonPath)\Interop\Windows\Interop.Errors.cs">
<Link>Common\Interop\Windows\Interop.Errors.cs</Link>
</Compile>

View File

@ -1,5 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
using System.Security.AccessControl;
using System.Security.Principal;
@ -12,10 +13,9 @@ namespace System.IO
[Fact]
public void FileSystemAccessRule_Returns_Valid_Object()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var accessRule = new FileSystemAccessRule(identity, FileSystemRights.AppendData, AccessControlType.Allow);
var accessRule = new FileSystemAccessRule(Helpers.s_WorldSidNTAccount, FileSystemRights.AppendData, AccessControlType.Allow);
var expectedFileSystemRights = FileSystemRights.AppendData | FileSystemRights.Synchronize;
Assert.Equal(identity, accessRule.IdentityReference);
Assert.Equal(Helpers.s_WorldSidNTAccount, accessRule.IdentityReference);
Assert.Equal(expectedFileSystemRights, accessRule.FileSystemRights);
Assert.Equal(AccessControlType.Allow, accessRule.AccessControlType);
Assert.Equal(PropagationFlags.None, accessRule.PropagationFlags);
@ -25,16 +25,14 @@ namespace System.IO
[Fact]
public void FileSystemAccessRule_InvalidFileSystemRights()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
AssertExtensions.Throws<ArgumentOutOfRangeException>("fileSystemRights", () =>
new FileSystemAccessRule(identity, (FileSystemRights)(-1), AccessControlType.Allow));
new FileSystemAccessRule(Helpers.s_WorldSidNTAccount, (FileSystemRights)(-1), AccessControlType.Allow));
}
[Fact]
public void FileSystemAccessRule_AcessControlTypeDeny_Returns_Valid_Object()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var accessRule = new FileSystemAccessRule(identity, FileSystemRights.AppendData, AccessControlType.Deny);
var accessRule = new FileSystemAccessRule(Helpers.s_WorldSidNTAccount, FileSystemRights.AppendData, AccessControlType.Deny);
var expectedFileSystemRights = FileSystemRights.AppendData & ~FileSystemRights.Synchronize;
Assert.Equal(expectedFileSystemRights, accessRule.FileSystemRights);
Assert.Equal(AccessControlType.Deny, accessRule.AccessControlType);
@ -43,8 +41,7 @@ namespace System.IO
[Fact]
public void FileSystemAccessRule_FileSystemRightsFullControl_Returns_Valid_Object()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Deny);
var accessRule = new FileSystemAccessRule(Helpers.s_WorldSidNTAccount, FileSystemRights.FullControl, AccessControlType.Deny);
Assert.Equal(FileSystemRights.FullControl, accessRule.FileSystemRights);
Assert.Equal(AccessControlType.Deny, accessRule.AccessControlType);
}
@ -65,8 +62,7 @@ namespace System.IO
[Fact]
public void FileSystemAccessRule_InhertianceFlag_PropagationFlag_Returns_Valid_Object()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var accessRule = new FileSystemAccessRule(identity, FileSystemRights.AppendData,
var accessRule = new FileSystemAccessRule(Helpers.s_WorldSidNTAccount, FileSystemRights.AppendData,
InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit,
AccessControlType.Allow);

View File

@ -1,5 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
using System.Security.AccessControl;
using Xunit;

View File

@ -1,6 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
using System.Security.Principal;
using Xunit;
@ -12,9 +12,8 @@ namespace System.Security.AccessControl
[Fact]
public void ObjectInitialization_IdentityReference_FileSystemRights_AuditFlags_Success()
{
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
var auditRule = new FileSystemAuditRule(identity, FileSystemRights.ReadData, AuditFlags.Failure);
Assert.Equal(auditRule.IdentityReference, identity);
var auditRule = new FileSystemAuditRule(Helpers.s_WorldSidNTAccount, FileSystemRights.ReadData, AuditFlags.Failure);
Assert.Equal(auditRule.IdentityReference, Helpers.s_WorldSidNTAccount);
Assert.Equal(auditRule.FileSystemRights, FileSystemRights.ReadData);
Assert.Equal(auditRule.AuditFlags, AuditFlags.Failure);
}
@ -41,7 +40,6 @@ namespace System.Security.AccessControl
public void ObjectInitialization_InvalidFileSystemRights()
{
var fileSystemRights = (FileSystemRights)(-1);
var identity = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
AssertExtensions.Throws<ArgumentOutOfRangeException>("fileSystemRights", () => new FileSystemAuditRule(@"MYDOMAIN\MyAccount", fileSystemRights, AuditFlags.Failure));
}

View File

@ -1,5 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
using System;
using System.Collections.Generic;
@ -24,7 +25,7 @@ namespace System.IO
[Fact]
public void AddAccessRule_Succeeds()
{
var accessRule = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRule = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.AppendData, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRule);
@ -32,7 +33,7 @@ namespace System.IO
fileSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, rules.Count);
var actualAddedRule = (FileSystemAccessRule)rules[0];
Assert.Equal(accessRule.IdentityReference, actualAddedRule.IdentityReference);
Assert.Equal(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)), actualAddedRule.IdentityReference);
Assert.Equal(accessRule.FileSystemRights, actualAddedRule.FileSystemRights);
Assert.Equal(accessRule.AccessControlType, actualAddedRule.AccessControlType);
}
@ -47,11 +48,11 @@ namespace System.IO
[Fact]
public void SetAccessRule_Succeeds()
{
var accessRuleRead = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleRead = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRuleRead);
var accessRuleWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AccessControlType.Allow);
//Changing the value of file system rights from "read" to "write".
fileSecurity.SetAccessRule(accessRuleWrite);
@ -67,11 +68,12 @@ namespace System.IO
[Fact]
public void SetAccessRule_IgnoreExistingRule_Succeeds()
{
var accessRuleRead = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleRead = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRuleRead);
var newAccessRule = new FileSystemAccessRule(@"NT AUTHORITY\Network Service",
var newAccessRule = new FileSystemAccessRule(Helpers.s_NetworkServiceNTAccount,
FileSystemRights.Write, AccessControlType.Allow);
fileSecurity.SetAccessRule(newAccessRule);
@ -80,9 +82,9 @@ namespace System.IO
Assert.Equal(2, rules.Count);
var existingAccessRule = (FileSystemAccessRule)rules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), existingAccessRule.IdentityReference);
Assert.Equal(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)), existingAccessRule.IdentityReference);
existingAccessRule = (FileSystemAccessRule)rules[1];
Assert.Equal(new NTAccount(@"NT AUTHORITY\Network Service"), existingAccessRule.IdentityReference);
Assert.Equal(Helpers.s_NetworkServiceNTAccount, existingAccessRule.IdentityReference);
}
[Fact]
@ -95,11 +97,11 @@ namespace System.IO
[Fact]
public void ResetSetAccessRule_Succeeds()
{
var accessRuleRead = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleRead = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read, AccessControlType.Allow);
var accessRuleAppendData = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleAppendData = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.AppendData, AccessControlType.Deny);
var accessRuleWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
@ -127,7 +129,7 @@ namespace System.IO
[Fact]
public void RemoveAccessRule_Succeeds()
{
var accessRule = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRule = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read | FileSystemRights.Write,
AccessControlType.Allow);
var fileSecurity = new FileSecurity();
@ -136,7 +138,7 @@ namespace System.IO
fileSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, rules.Count);
//Removing the "write" access right.
Assert.True(fileSecurity.RemoveAccessRule(new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
Assert.True(fileSecurity.RemoveAccessRule(new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write,
AccessControlType.Allow)));
rules = fileSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
@ -148,12 +150,12 @@ namespace System.IO
[Fact]
public void RemoveAccessRule_IdenticalRule_Succeeds()
{
var accessRule = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRule = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read | FileSystemRights.Write,
AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRule);
Assert.True(fileSecurity.RemoveAccessRule(new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
Assert.True(fileSecurity.RemoveAccessRule(new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read | FileSystemRights.Write,
AccessControlType.Allow)));
var rules = fileSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
@ -163,9 +165,9 @@ namespace System.IO
[Fact]
public void RemoveAccessRule_NoMatchableRules_Succeeds()
{
var accessRuleAppendData = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM", FileSystemRights.AppendData,
var accessRuleAppendData = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData,
AccessControlType.Allow);
var accessRuleWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AccessControlType.Deny);
var fileSecurity = new FileSecurity();
@ -175,7 +177,7 @@ namespace System.IO
fileSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, rules.Count);
var remainingRule = (FileSystemAccessRule)rules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), accessRuleAppendData.IdentityReference);
Assert.Equal(Helpers.s_LocalSystemNTAccount, accessRuleAppendData.IdentityReference);
Assert.Equal(accessRuleAppendData.FileSystemRights, remainingRule.FileSystemRights);
Assert.Equal(AccessControlType.Allow, remainingRule.AccessControlType);
}
@ -190,10 +192,10 @@ namespace System.IO
[Fact]
public void RemoveAccessRuleSpecific_NoMatchingRules_Succeeds()
{
var accessRuleReadWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleReadWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read | FileSystemRights.Write,
AccessControlType.Allow);
var accessRuleWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
@ -210,7 +212,7 @@ namespace System.IO
[Fact]
public void RemoveAccessRuleSpecific_Succeeds()
{
var accessRule = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM", FileSystemRights.AppendData
var accessRule = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData
| FileSystemRights.Write, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRule);
@ -232,15 +234,15 @@ namespace System.IO
[Fact]
public void RemoveAccessRuleAll_Succeeds()
{
var accessRuleAppendData = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM", FileSystemRights.AppendData,
var accessRuleAppendData = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData,
AccessControlType.Allow);
var accessRuleRead = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleRead = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read, AccessControlType.Allow);
var accessRuleWrite = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleWrite = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AccessControlType.Allow);
var accessRuleReadPermissionDeny = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM",
var accessRuleReadPermissionDeny = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.ReadPermissions, AccessControlType.Deny);
var accessRuleReadNetworkService = new FileSystemAccessRule(@"NT AUTHORITY\Network Service",
var accessRuleReadNetworkService = new FileSystemAccessRule(Helpers.s_NetworkServiceNTAccount,
FileSystemRights.Read, AccessControlType.Allow);
var fileSecurity = new FileSecurity();
@ -255,18 +257,18 @@ namespace System.IO
Assert.Equal(2, rules.Count);
var existingAccessRule = (FileSystemAccessRule)rules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), existingAccessRule.IdentityReference);
Assert.Equal(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)), existingAccessRule.IdentityReference);
Assert.Equal(AccessControlType.Deny, existingAccessRule.AccessControlType);
Assert.Equal(FileSystemRights.ReadPermissions, existingAccessRule.FileSystemRights);
existingAccessRule = (FileSystemAccessRule)rules[1];
Assert.Equal(new NTAccount(@"NT AUTHORITY\Network Service"), existingAccessRule.IdentityReference);
Assert.Equal(Helpers.s_NetworkServiceNTAccount, existingAccessRule.IdentityReference);
Assert.Equal(AccessControlType.Allow, existingAccessRule.AccessControlType);
}
[Fact]
public void AccessRuleType_Returns_Valid_Object()
{
var accessRule = new FileSystemAccessRule(@"NT AUTHORITY\SYSTEM", FileSystemRights.AppendData,
var accessRule = new FileSystemAccessRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData,
AccessControlType.Allow);
var fileSecurity = new FileSecurity();
fileSecurity.AddAccessRule(accessRule);
@ -277,7 +279,7 @@ namespace System.IO
[Fact]
public void AddAuditRule_Succeeds()
{
var auditRule = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRule = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.AppendData, AuditFlags.Success);
var fileSecurity = new FileSecurity();
fileSecurity.AddAuditRule(auditRule);
@ -285,7 +287,7 @@ namespace System.IO
fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, auditRules.Count);
var actualAddedRule = (FileSystemAuditRule)auditRules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), actualAddedRule.IdentityReference);
Assert.Equal(Helpers.s_LocalSystemNTAccount, actualAddedRule.IdentityReference);
Assert.Equal(AuditFlags.Success, actualAddedRule.AuditFlags);
Assert.Equal(FileSystemRights.AppendData, actualAddedRule.FileSystemRights);
}
@ -293,11 +295,11 @@ namespace System.IO
[Fact]
public void SetAuditRule_Succeeds()
{
var auditRuleAppendData = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRuleAppendData = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.AppendData, AuditFlags.Success);
var auditRuleNetworkService = new FileSystemAuditRule(@"NT AUTHORITY\Network Service",
var auditRuleNetworkService = new FileSystemAuditRule(Helpers.s_NetworkServiceNTAccount,
FileSystemRights.CreateFiles, AuditFlags.Failure);
var auditRuleDelete = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRuleDelete = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Delete, AuditFlags.Success);
var fileSecurity = new FileSecurity();
@ -308,11 +310,11 @@ namespace System.IO
Assert.Equal(2, auditRules.Count);
var firstAuditRule = (FileSystemAuditRule)auditRules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), firstAuditRule.IdentityReference);
Assert.Equal(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)), firstAuditRule.IdentityReference);
Assert.Equal(AuditFlags.Success, firstAuditRule.AuditFlags);
Assert.Equal(FileSystemRights.Delete, firstAuditRule.FileSystemRights);
var secondAuditRule = (FileSystemAuditRule)auditRules[1];
Assert.Equal(new NTAccount(@"NT AUTHORITY\Network Service"), secondAuditRule.IdentityReference);
Assert.Equal(Helpers.s_NetworkServiceNTAccount, secondAuditRule.IdentityReference);
Assert.Equal(AuditFlags.Failure, secondAuditRule.AuditFlags);
Assert.Equal(FileSystemRights.CreateFiles, secondAuditRule.FileSystemRights);
}
@ -320,7 +322,7 @@ namespace System.IO
[Fact]
public void RemoveAuditRule_Succeeds()
{
var auditRule = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRule = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Read | FileSystemRights.Write,
AuditFlags.Failure);
var fileSecurity = new FileSecurity();
@ -328,7 +330,7 @@ namespace System.IO
AuthorizationRuleCollection rules =
fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, rules.Count);
Assert.True(fileSecurity.RemoveAuditRule(new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
Assert.True(fileSecurity.RemoveAuditRule(new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AuditFlags.Failure)));
rules = fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount));
@ -336,15 +338,15 @@ namespace System.IO
var existingRule = (FileSystemAuditRule)rules[0];
Assert.Equal(FileSystemRights.Read, existingRule.FileSystemRights);
Assert.Equal(AuditFlags.Failure, existingRule.AuditFlags);
Assert.Equal(new NTAccount(@"NT AUTHORITY\SYSTEM"), existingRule.IdentityReference);
Assert.Equal(new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)), existingRule.IdentityReference);
}
[Fact]
public void RemoveAuditRuleSpecific_Succeeds()
{
var auditRuleReadWrite = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRuleReadWrite = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write | FileSystemRights.Read, AuditFlags.Success);
var auditRuleNetworkService = new FileSystemAuditRule(@"NT AUTHORITY\Network Service",
var auditRuleNetworkService = new FileSystemAuditRule(Helpers.s_NetworkServiceNTAccount,
FileSystemRights.Read, AuditFlags.Failure);
var fileSecurity = new FileSecurity();
@ -355,7 +357,7 @@ namespace System.IO
fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount));
Assert.Equal(1, rules.Count);
var existingAuditRule = (FileSystemAuditRule)rules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\Network Service"), existingAuditRule.IdentityReference);
Assert.Equal(Helpers.s_NetworkServiceNTAccount, existingAuditRule.IdentityReference);
Assert.Equal(FileSystemRights.Read, existingAuditRule.FileSystemRights);
Assert.Equal(AuditFlags.Failure, existingAuditRule.AuditFlags);
}
@ -363,11 +365,11 @@ namespace System.IO
[Fact]
public void RemoveAuditRuleSpecific_NoMatchingRules_Succeeds()
{
var auditRuleReadWrite = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRuleReadWrite = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write | FileSystemRights.Read, AuditFlags.Success);
var fileSecurity = new FileSecurity();
fileSecurity.AddAuditRule(auditRuleReadWrite);
fileSecurity.RemoveAuditRuleSpecific(new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
fileSecurity.RemoveAuditRuleSpecific(new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AuditFlags.Success));
AuthorizationRuleCollection rules =
fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount));
@ -379,11 +381,11 @@ namespace System.IO
[Fact]
public void RemoveAuditRuleAll_Succeeds()
{
var auditRuleAppend = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM", FileSystemRights.AppendData,
var auditRuleAppend = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData,
AuditFlags.Success);
var auditRuleWrite = new FileSystemAuditRule(@"NT AUTHORITY\SYSTEM",
var auditRuleWrite = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount,
FileSystemRights.Write, AuditFlags.Success);
var auditRuleNetworkService = new FileSystemAuditRule(@"NT AUTHORITY\Network Service",
var auditRuleNetworkService = new FileSystemAuditRule(Helpers.s_NetworkServiceNTAccount,
FileSystemRights.Read, AuditFlags.Failure);
var fileSecurity = new FileSecurity();
@ -395,7 +397,7 @@ namespace System.IO
Assert.Equal(1, rules.Count);
var existingAuditRule = (FileSystemAuditRule)rules[0];
Assert.Equal(new NTAccount(@"NT AUTHORITY\Network Service"), existingAuditRule.IdentityReference);
Assert.Equal(Helpers.s_NetworkServiceNTAccount, existingAuditRule.IdentityReference);
Assert.Equal(FileSystemRights.Read, existingAuditRule.FileSystemRights);
Assert.Equal(AuditFlags.Failure, existingAuditRule.AuditFlags);
}

View File

@ -0,0 +1,15 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
using System.Security.Principal;
namespace System.Security.AccessControl
{
public static class Helpers
{
public static IdentityReference s_LocalSystemNTAccount = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount));
public static IdentityReference s_NetworkServiceNTAccount = new SecurityIdentifier(WellKnownSidType.NetworkServiceSid, null).Translate(typeof(NTAccount));
public static IdentityReference s_WorldSidNTAccount = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
}
}

View File

@ -20,6 +20,7 @@
</Compile>
<Compile Include="FileSystemAuditRuleTests.cs" />
<Compile Include="FileSystemSecurityTests.cs" />
<Compile Include="Helpers.cs" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>