diff options
author | Bevan Weiss <bevan.weiss@gmail.com> | 2024-08-04 21:13:44 +1000 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2025-02-11 23:14:49 -0800 |
commit | 5b4a6538ee06988c75b717bd905197fb670e6142 (patch) | |
tree | eb078854f258ebdabaf206282d56cbdcf87759ef /src/test | |
parent | 2c5bb89424b12de812498d568bc1aae2d4098e60 (diff) | |
download | wix-5b4a6538ee06988c75b717bd905197fb670e6142.tar.gz wix-5b4a6538ee06988c75b717bd905197fb670e6142.tar.bz2 wix-5b4a6538ee06988c75b717bd905197fb670e6142.zip |
Add/Remove Group Membership rollback handled.
Fixups to a few test cases.
Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
Diffstat (limited to 'src/test')
14 files changed, 135 insertions, 56 deletions
diff --git a/src/test/burn/WixTestTools/RuntimeFactAttribute.cs b/src/test/burn/WixTestTools/RuntimeFactAttribute.cs index 573a9de2..76004f26 100644 --- a/src/test/burn/WixTestTools/RuntimeFactAttribute.cs +++ b/src/test/burn/WixTestTools/RuntimeFactAttribute.cs | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace WixTestTools | 3 | namespace WixTestTools |
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.DirectoryServices.ActiveDirectory; | ||
6 | using System.Security.Principal; | 7 | using System.Security.Principal; |
7 | using WixInternal.TestSupport.XunitExtensions; | 8 | using WixInternal.TestSupport.XunitExtensions; |
8 | using System.Runtime.InteropServices; | 9 | using System.Runtime.InteropServices; |
@@ -10,10 +11,13 @@ namespace WixTestTools | |||
10 | public class RuntimeFactAttribute : SkippableFactAttribute | 11 | public class RuntimeFactAttribute : SkippableFactAttribute |
11 | { | 12 | { |
12 | const string RequiredEnvironmentVariableName = "RuntimeTestsEnabled"; | 13 | const string RequiredEnvironmentVariableName = "RuntimeTestsEnabled"; |
14 | const string RequiredDomainEnvironmentVariableName = "RuntimeDomainTestsEnabled"; | ||
13 | 15 | ||
14 | public static bool RuntimeTestsEnabled { get; } | 16 | public static bool RuntimeTestsEnabled { get; } |
17 | public static bool RuntimeDomainTestsEnabled { get; } | ||
15 | public static bool RunningAsAdministrator { get; } | 18 | public static bool RunningAsAdministrator { get; } |
16 | public static bool RunningOnWindowsServer { get; } | 19 | public static bool RunningOnWindowsServer { get; } |
20 | public static bool RunningInDomain { get; } | ||
17 | 21 | ||
18 | [DllImport("shlwapi.dll", SetLastError = true, EntryPoint = "#437")] | 22 | [DllImport("shlwapi.dll", SetLastError = true, EntryPoint = "#437")] |
19 | private static extern bool IsOS(int os); | 23 | private static extern bool IsOS(int os); |
@@ -23,7 +27,6 @@ namespace WixTestTools | |||
23 | return IsOS(OS_ANYSERVER); | 27 | return IsOS(OS_ANYSERVER); |
24 | } | 28 | } |
25 | 29 | ||
26 | |||
27 | static RuntimeFactAttribute() | 30 | static RuntimeFactAttribute() |
28 | { | 31 | { |
29 | using var identity = WindowsIdentity.GetCurrent(); | 32 | using var identity = WindowsIdentity.GetCurrent(); |
@@ -33,6 +36,33 @@ namespace WixTestTools | |||
33 | var testsEnabledString = Environment.GetEnvironmentVariable(RequiredEnvironmentVariableName); | 36 | var testsEnabledString = Environment.GetEnvironmentVariable(RequiredEnvironmentVariableName); |
34 | RuntimeTestsEnabled = Boolean.TryParse(testsEnabledString, out var testsEnabled) && testsEnabled; | 37 | RuntimeTestsEnabled = Boolean.TryParse(testsEnabledString, out var testsEnabled) && testsEnabled; |
35 | 38 | ||
39 | RunningInDomain = false; | ||
40 | try | ||
41 | { | ||
42 | RunningInDomain = !String.IsNullOrEmpty(System.DirectoryServices.ActiveDirectory.Domain.GetComputerDomain().Name); | ||
43 | } | ||
44 | catch (ActiveDirectoryObjectNotFoundException) { } | ||
45 | |||
46 | var domainTestsEnabledString = Environment.GetEnvironmentVariable(RequiredDomainEnvironmentVariableName); | ||
47 | RuntimeDomainTestsEnabled = Boolean.TryParse(domainTestsEnabledString, out var domainTestsEnabled) && domainTestsEnabled; | ||
48 | } | ||
49 | |||
50 | private bool _domainRequired; | ||
51 | public bool DomainRequired | ||
52 | { | ||
53 | get | ||
54 | { | ||
55 | return _domainRequired; | ||
56 | } | ||
57 | set | ||
58 | { | ||
59 | _domainRequired = value; | ||
60 | if (_domainRequired && String.IsNullOrEmpty(this.Skip) && (!RunningInDomain || !RuntimeDomainTestsEnabled)) | ||
61 | { | ||
62 | this.Skip = $"These tests require the test host to be running as a domain member ({(RunningInDomain ? "passed" : "failed")}). These tests affect both MACHINE AND DOMAIN state. To accept the consequences, set the {RequiredDomainEnvironmentVariableName} environment variable to true ({(RuntimeDomainTestsEnabled ? "passed" : "failed")})."; | ||
63 | } | ||
64 | } | ||
65 | |||
36 | RunningOnWindowsServer = IsWindowsServer(); | 66 | RunningOnWindowsServer = IsWindowsServer(); |
37 | } | 67 | } |
38 | 68 | ||
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductA/product.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductA/product.wxs index e3c143e6..f7f60fdb 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductA/product.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductA/product.wxs | |||
@@ -7,19 +7,18 @@ | |||
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | 9 | ||
10 | <Property Id="TEMPDOMAIN" Secure="yes" /> | 10 | <Property Id="TESTDOMAIN" Secure="yes" /> |
11 | <Property Id="TEMPGROUPNAME" Secure="yes" /> | ||
12 | </Fragment> | 11 | </Fragment> |
13 | 12 | ||
14 | <Fragment> | 13 | <Fragment> |
15 | <Component Id="Component1" Guid="09624A9A-4BBC-4126-BBF9-0713C5217DB1" Directory="INSTALLFOLDER"> | 14 | <Component Id="Component1" Guid="09624A9A-4BBC-4126-BBF9-0713C5217DB1" Directory="INSTALLFOLDER"> |
16 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
17 | 16 | ||
18 | <util:Group Id="TEST_GROUP1" Name="testName1" Comment="Group1" CreateGroup="yes" RemoveOnUninstall="yes" /> | 17 | <util:Group Id="TEST_GROUP1" Name="testName1" Domain="[TESTDOMAIN]" Comment="Group1" CreateGroup="yes" RemoveOnUninstall="yes" /> |
19 | 18 | ||
20 | <util:Group Id="TEST_GROUP2" Name="testName2" Comment="Group2" RemoveOnUninstall="no" UpdateIfExists="yes" /> | 19 | <util:Group Id="TEST_GROUP2" Name="testName2" Domain="[TESTDOMAIN]" Comment="Group2" RemoveOnUninstall="no" UpdateIfExists="yes" /> |
21 | 20 | ||
22 | <util:Group Id="TEST_GROUP3" Name="testName3" Comment="Group3" CreateGroup="no" /> | 21 | <util:Group Id="TEST_GROUP3" Name="testName3" Domain="[TESTDOMAIN]" Comment="Group3" CreateGroup="no" /> |
23 | </Component> | 22 | </Component> |
24 | </Fragment> | 23 | </Fragment> |
25 | </Wix> | 24 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductAddCommentToExistingGroup/product.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductAddCommentToExistingGroup/product.wxs index e0170746..6c9d3be3 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductAddCommentToExistingGroup/product.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductAddCommentToExistingGroup/product.wxs | |||
@@ -6,18 +6,15 @@ | |||
6 | <ComponentGroup Id="ProductComponents"> | 6 | <ComponentGroup Id="ProductComponents"> |
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | |||
10 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
9 | </Fragment> | 11 | </Fragment> |
10 | 12 | ||
11 | <Fragment> | 13 | <Fragment> |
12 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> | 14 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> |
13 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
14 | 16 | ||
15 | <util:Group Id="TEST_GROUP1" | 17 | <util:Group Id="TEST_GROUP1" Name="testName1" Domain="[TESTDOMAIN]" CreateGroup="yes" UpdateIfExists="yes" RemoveOnUninstall="yes" Comment="testComment1"/> |
16 | Name="testName1" | ||
17 | CreateGroup="yes" | ||
18 | UpdateIfExists="yes" | ||
19 | RemoveOnUninstall="yes" | ||
20 | Comment="testComment1"/> | ||
21 | </Component> | 18 | </Component> |
22 | </Fragment> | 19 | </Fragment> |
23 | </Wix> | 20 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentDelete/product.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentDelete/product.wxs index d1824890..a34a276b 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentDelete/product.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentDelete/product.wxs | |||
@@ -6,13 +6,15 @@ | |||
6 | <ComponentGroup Id="ProductComponents"> | 6 | <ComponentGroup Id="ProductComponents"> |
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | |||
10 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
9 | </Fragment> | 11 | </Fragment> |
10 | 12 | ||
11 | <Fragment> | 13 | <Fragment> |
12 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> | 14 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> |
13 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
14 | 16 | ||
15 | <util:Group Id="TEST_GROUP1" Name="testName1" UpdateIfExists="yes" RemoveOnUninstall="yes" RemoveComment="yes"/> | 17 | <util:Group Id="TEST_GROUP1" Name="testName1" Domain="[TESTDOMAIN]" UpdateIfExists="yes" RemoveOnUninstall="yes" RemoveComment="yes"/> |
16 | </Component> | 18 | </Component> |
17 | </Fragment> | 19 | </Fragment> |
18 | </Wix> | 20 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentFail/product_fail.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentFail/product_fail.wxs index 4e70717f..79396882 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentFail/product_fail.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductCommentFail/product_fail.wxs | |||
@@ -10,13 +10,15 @@ | |||
10 | <InstallExecuteSequence> | 10 | <InstallExecuteSequence> |
11 | <Custom Action="CaFail" After="Wix6ConfigureGroups_X86" /> | 11 | <Custom Action="CaFail" After="Wix6ConfigureGroups_X86" /> |
12 | </InstallExecuteSequence> | 12 | </InstallExecuteSequence> |
13 | |||
14 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
13 | </Fragment> | 15 | </Fragment> |
14 | 16 | ||
15 | <Fragment> | 17 | <Fragment> |
16 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> | 18 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> |
17 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 19 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
18 | 20 | ||
19 | <util:Group Id="TEST_GROUP1" Name="testName1" CreateGroup="yes" RemoveOnUninstall="yes" Comment="testComment1"/> | 21 | <util:Group Id="TEST_GROUP1" Name="testName1" Domain="[TESTDOMAIN]" CreateGroup="yes" RemoveOnUninstall="yes" Comment="testComment1"/> |
20 | </Component> | 22 | </Component> |
21 | </Fragment> | 23 | </Fragment> |
22 | </Wix> | 24 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductFail/product_fail.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductFail/product_fail.wxs index 3013e5a0..148f26ca 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductFail/product_fail.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductFail/product_fail.wxs | |||
@@ -13,6 +13,8 @@ | |||
13 | <InstallExecuteSequence> | 13 | <InstallExecuteSequence> |
14 | <Custom Action="CaFail" After="Wix6ConfigureGroups_X86" /> | 14 | <Custom Action="CaFail" After="Wix6ConfigureGroups_X86" /> |
15 | </InstallExecuteSequence> | 15 | </InstallExecuteSequence> |
16 | |||
17 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
16 | </Fragment> | 18 | </Fragment> |
17 | 19 | ||
18 | <Fragment> | 20 | <Fragment> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductFailIfExists/FailIfExists.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductFailIfExists/FailIfExists.wxs index 00f8e12d..e7acb5e0 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductFailIfExists/FailIfExists.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductFailIfExists/FailIfExists.wxs | |||
@@ -6,6 +6,8 @@ | |||
6 | <ComponentGroup Id="ProductComponents"> | 6 | <ComponentGroup Id="ProductComponents"> |
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | |||
10 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
9 | </Fragment> | 11 | </Fragment> |
10 | 12 | ||
11 | <Fragment> | 13 | <Fragment> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNestedGroups/product.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNestedGroups/product.wxs index c27eb27a..f513e7c6 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNestedGroups/product.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNestedGroups/product.wxs | |||
@@ -7,13 +7,14 @@ | |||
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | 9 | ||
10 | <Property Id="TEMPDOMAIN" Secure="yes" Value="TESTDOMAIN" /> | 10 | <Property Id="TESTDOMAIN" Secure="yes" /> |
11 | </Fragment> | 11 | </Fragment> |
12 | 12 | ||
13 | <Fragment> | 13 | <Fragment> |
14 | <util:Group Id="AUTH_USERS" Name="Authenticated Users" Domain="[TEMPDOMAIN]" > | 14 | <util:Group Id="DOMAIN_USERS" Name="Domain Users" Domain="[TESTDOMAIN]" > |
15 | <util:GroupRef Id="TEST_GROUP1" /> | 15 | <util:GroupRef Id="TEST_GROUP1" /> |
16 | <util:GroupRef Id="TEST_GROUP2" /> | 16 | <util:GroupRef Id="TEST_GROUP2" /> |
17 | <util:GroupRef Id="TEST_GROUP3" /> | ||
17 | </util:Group> | 18 | </util:Group> |
18 | <util:Group Id="EVERYONE" Name="Everyone" > | 19 | <util:Group Id="EVERYONE" Name="Everyone" > |
19 | <util:GroupRef Id="TEST_GROUP1" /> | 20 | <util:GroupRef Id="TEST_GROUP1" /> |
@@ -25,6 +26,8 @@ | |||
25 | <util:Group Id="TEST_GROUP1" Name="testName1" Comment="Group1" CreateGroup="yes" RemoveOnUninstall="yes" /> | 26 | <util:Group Id="TEST_GROUP1" Name="testName1" Comment="Group1" CreateGroup="yes" RemoveOnUninstall="yes" /> |
26 | 27 | ||
27 | <util:Group Id="TEST_GROUP2" Name="testName2" Comment="Group2" RemoveOnUninstall="no" UpdateIfExists="yes" /> | 28 | <util:Group Id="TEST_GROUP2" Name="testName2" Comment="Group2" RemoveOnUninstall="no" UpdateIfExists="yes" /> |
29 | |||
30 | <util:Group Id="TEST_GROUP3" Name="testName3" Domain="[TESTDOMAIN]" Comment="Group3" RemoveOnUninstall="no" UpdateIfExists="yes" /> | ||
28 | </Component> | 31 | </Component> |
29 | </Fragment> | 32 | </Fragment> |
30 | </Wix> | 33 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNewGroupWithComment/product.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNewGroupWithComment/product.wxs index 2d012b23..2305a80b 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNewGroupWithComment/product.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNewGroupWithComment/product.wxs | |||
@@ -6,18 +6,15 @@ | |||
6 | <ComponentGroup Id="ProductComponents"> | 6 | <ComponentGroup Id="ProductComponents"> |
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | |||
10 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
9 | </Fragment> | 11 | </Fragment> |
10 | 12 | ||
11 | <Fragment> | 13 | <Fragment> |
12 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> | 14 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> |
13 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
14 | <util:Group | 16 | <util:Group |
15 | Id="TEST_GROUP1" | 17 | Id="TEST_GROUP1" Name="testName1" CreateGroup="yes" UpdateIfExists="yes" RemoveOnUninstall="yes" Comment="testComment1" /> |
16 | Name="testName1" | ||
17 | CreateGroup="yes" | ||
18 | UpdateIfExists="yes" | ||
19 | RemoveOnUninstall="yes" | ||
20 | Comment="testComment1" /> | ||
21 | </Component> | 18 | </Component> |
22 | </Fragment> | 19 | </Fragment> |
23 | </Wix> | 20 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNonVitalGroup/NonVitalUserGroup.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNonVitalGroup/NonVitalUserGroup.wxs index a834c76b..4922fcef 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductNonVitalGroup/NonVitalUserGroup.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductNonVitalGroup/NonVitalUserGroup.wxs | |||
@@ -6,6 +6,8 @@ | |||
6 | <ComponentGroup Id="ProductComponents"> | 6 | <ComponentGroup Id="ProductComponents"> |
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | |||
10 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
9 | </Fragment> | 11 | </Fragment> |
10 | 12 | ||
11 | <Fragment> | 13 | <Fragment> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductRestrictedDomain/RestrictedDomain.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductRestrictedDomain/RestrictedDomain.wxs index edb3387c..04a1ac4e 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductRestrictedDomain/RestrictedDomain.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductRestrictedDomain/RestrictedDomain.wxs | |||
@@ -7,14 +7,14 @@ | |||
7 | <ComponentRef Id="Component1" /> | 7 | <ComponentRef Id="Component1" /> |
8 | </ComponentGroup> | 8 | </ComponentGroup> |
9 | 9 | ||
10 | <Property Id="TEMPDOMAIN" Secure="yes" /> | 10 | <Property Id="TESTDOMAIN" Secure="yes" /> |
11 | </Fragment> | 11 | </Fragment> |
12 | 12 | ||
13 | <Fragment> | 13 | <Fragment> |
14 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> | 14 | <Component Id="Component1" Guid="00030829-0000-0000-C000-000000000046" Directory="INSTALLFOLDER"> |
15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> | 15 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" /> |
16 | 16 | ||
17 | <util:Group Id="TEST_GROUP_test" Name="testName1" Domain="[TEMPDOMAIN]" /> | 17 | <util:Group Id="TEST_GROUP_test" Name="testName1" Domain="[TESTDOMAIN]" /> |
18 | </Component> | 18 | </Component> |
19 | </Fragment> | 19 | </Fragment> |
20 | </Wix> | 20 | </Wix> |
diff --git a/src/test/msi/TestData/UtilExtensionGroupTests/ProductWithCommandLineParameters/ProductWithCommandLineParameters.wxs b/src/test/msi/TestData/UtilExtensionGroupTests/ProductWithCommandLineParameters/ProductWithCommandLineParameters.wxs index 059ecee8..36d10aa3 100644 --- a/src/test/msi/TestData/UtilExtensionGroupTests/ProductWithCommandLineParameters/ProductWithCommandLineParameters.wxs +++ b/src/test/msi/TestData/UtilExtensionGroupTests/ProductWithCommandLineParameters/ProductWithCommandLineParameters.wxs | |||
@@ -4,16 +4,13 @@ | |||
4 | <ComponentGroup Id="ProductComponents"> | 4 | <ComponentGroup Id="ProductComponents"> |
5 | <ComponentRef Id="Component1" /> | 5 | <ComponentRef Id="Component1" /> |
6 | </ComponentGroup> | 6 | </ComponentGroup> |
7 | |||
8 | <Property Id="TESTDOMAIN" Secure="yes" /> | ||
7 | </Fragment> | 9 | </Fragment> |
8 | 10 | ||
9 | <Fragment> | 11 | <Fragment> |
10 | <Component Id="Component1" | 12 | <Component Id="Component1" Guid="1FDC6C4D-7741-4BF1-A4F0-4231879CEC45" Directory="INSTALLFOLDER"> |
11 | Guid="1FDC6C4D-7741-4BF1-A4F0-4231879CEC45" | 13 | <util:Group Id="TEST_GROUP1" Name="[TESTPARAMETER1]" Domain="[TESTDOMAIN]" CreateGroup="yes" RemoveOnUninstall="yes" /> |
12 | Directory="INSTALLFOLDER"> | ||
13 | <util:Group Id="TEST_GROUP1" | ||
14 | Name="[TESTPARAMETER1]" | ||
15 | CreateGroup="yes" | ||
16 | RemoveOnUninstall="yes" /> | ||
17 | </Component> | 14 | </Component> |
18 | </Fragment> | 15 | </Fragment> |
19 | </Wix> | 16 | </Wix> |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs index d7cf3168..cee357a6 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs | |||
@@ -11,9 +11,10 @@ namespace WixToolsetTest.MsiE2E | |||
11 | { | 11 | { |
12 | public UtilExtensionGroupTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } | 12 | public UtilExtensionGroupTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } |
13 | 13 | ||
14 | #region Non Domain | ||
14 | // Verify that the users specified in the authoring are created as expected. | 15 | // Verify that the users specified in the authoring are created as expected. |
15 | [RuntimeFact] | 16 | [RuntimeFact] |
16 | public void CanInstallAndUninstallGroups() | 17 | public void CanInstallAndUninstallNonDomainGroups() |
17 | { | 18 | { |
18 | UserGroupVerifier.CreateLocalGroup("testName3"); | 19 | UserGroupVerifier.CreateLocalGroup("testName3"); |
19 | var productA = this.CreatePackageInstaller("ProductA"); | 20 | var productA = this.CreatePackageInstaller("ProductA"); |
@@ -39,7 +40,7 @@ namespace WixToolsetTest.MsiE2E | |||
39 | 40 | ||
40 | // Verify the rollback action reverts all Users changes. | 41 | // Verify the rollback action reverts all Users changes. |
41 | [RuntimeFact] | 42 | [RuntimeFact] |
42 | public void CanRollbackGroups() | 43 | public void CanRollbackNonDomainGroups() |
43 | { | 44 | { |
44 | UserGroupVerifier.CreateLocalGroup("testName3"); | 45 | UserGroupVerifier.CreateLocalGroup("testName3"); |
45 | var productFail = this.CreatePackageInstaller("ProductFail"); | 46 | var productFail = this.CreatePackageInstaller("ProductFail"); |
@@ -65,7 +66,7 @@ namespace WixToolsetTest.MsiE2E | |||
65 | // Original code signalled repair mode by using "-f ", which silently | 66 | // Original code signalled repair mode by using "-f ", which silently |
66 | // terminated the command-line parsing, ignoring any parameters that followed. | 67 | // terminated the command-line parsing, ignoring any parameters that followed. |
67 | [RuntimeFact()] | 68 | [RuntimeFact()] |
68 | public void CanRepairGroupsWithCommandLineParameters() | 69 | public void CanRepairNonDomainGroupsWithCommandLineParameters() |
69 | { | 70 | { |
70 | var arguments = new string[] | 71 | var arguments = new string[] |
71 | { | 72 | { |
@@ -82,6 +83,10 @@ namespace WixToolsetTest.MsiE2E | |||
82 | // Repair | 83 | // Repair |
83 | productWithCommandLineParameters.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); | 84 | productWithCommandLineParameters.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); |
84 | 85 | ||
86 | |||
87 | // Install | ||
88 | productWithCommandLineParameters.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); | ||
89 | |||
85 | // Clean up | 90 | // Clean up |
86 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 91 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
87 | } | 92 | } |
@@ -89,7 +94,7 @@ namespace WixToolsetTest.MsiE2E | |||
89 | 94 | ||
90 | // Verify that the groups specified in the authoring are created as expected on repair. | 95 | // Verify that the groups specified in the authoring are created as expected on repair. |
91 | [RuntimeFact()] | 96 | [RuntimeFact()] |
92 | public void CanRepairGroups() | 97 | public void CanRepairNonDomainGroups() |
93 | { | 98 | { |
94 | UserGroupVerifier.CreateLocalGroup("testName3"); | 99 | UserGroupVerifier.CreateLocalGroup("testName3"); |
95 | var productA = this.CreatePackageInstaller("ProductA"); | 100 | var productA = this.CreatePackageInstaller("ProductA"); |
@@ -119,7 +124,7 @@ namespace WixToolsetTest.MsiE2E | |||
119 | 124 | ||
120 | // Verify that Installation fails if FailIfExists is set. | 125 | // Verify that Installation fails if FailIfExists is set. |
121 | [RuntimeFact] | 126 | [RuntimeFact] |
122 | public void FailsIfGroupExists() | 127 | public void FailsIfNonDomainGroupExists() |
123 | { | 128 | { |
124 | var productFailIfExists = this.CreatePackageInstaller("ProductFailIfExists"); | 129 | var productFailIfExists = this.CreatePackageInstaller("ProductFailIfExists"); |
125 | 130 | ||
@@ -148,7 +153,7 @@ namespace WixToolsetTest.MsiE2E | |||
148 | { | 153 | { |
149 | var productRestrictedDomain = this.CreatePackageInstaller("ProductRestrictedDomain"); | 154 | var productRestrictedDomain = this.CreatePackageInstaller("ProductRestrictedDomain"); |
150 | 155 | ||
151 | string logFile = productRestrictedDomain.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "TEMPDOMAIN=DOESNOTEXIST"); | 156 | string logFile = productRestrictedDomain.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "TESTDOMAIN=DOESNOTEXIST"); |
152 | 157 | ||
153 | // Verify expected error message in the log file | 158 | // Verify expected error message in the log file |
154 | Assert.True(LogVerifier.MessageInLogFile(logFile, "CreateGroup: Error 0x8007054b: failed to find Domain DOESNOTEXIST.")); | 159 | Assert.True(LogVerifier.MessageInLogFile(logFile, "CreateGroup: Error 0x8007054b: failed to find Domain DOESNOTEXIST.")); |
@@ -156,12 +161,13 @@ namespace WixToolsetTest.MsiE2E | |||
156 | 161 | ||
157 | // Verify that a group can be created with a group comment | 162 | // Verify that a group can be created with a group comment |
158 | [RuntimeFact] | 163 | [RuntimeFact] |
159 | public void CanCreateNewGroupWithComment() | 164 | public void CanCreateNewNonDomainGroupWithComment() |
160 | { | 165 | { |
161 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 166 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
162 | 167 | ||
163 | productNewUserWithComment.InstallProduct(); | 168 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
164 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 169 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
170 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
165 | 171 | ||
166 | // clean up | 172 | // clean up |
167 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 173 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -169,30 +175,33 @@ namespace WixToolsetTest.MsiE2E | |||
169 | 175 | ||
170 | // Verify that a comment can be added to an existing group | 176 | // Verify that a comment can be added to an existing group |
171 | [RuntimeFact] | 177 | [RuntimeFact] |
172 | public void CanAddCommentToExistingGroup() | 178 | public void CanAddCommentToExistingNonDomainGroup() |
173 | { | 179 | { |
174 | UserGroupVerifier.CreateLocalGroup("testName1"); | 180 | UserGroupVerifier.CreateLocalGroup("testName1"); |
175 | var productAddCommentToExistingUser = this.CreatePackageInstaller("ProductAddCommentToExistingGroup"); | 181 | var productAddCommentToExistingUser = this.CreatePackageInstaller("ProductAddCommentToExistingGroup"); |
176 | 182 | ||
177 | productAddCommentToExistingUser.InstallProduct(); | 183 | productAddCommentToExistingUser.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
178 | 184 | ||
179 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 185 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
180 | 186 | ||
187 | productAddCommentToExistingUser.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
188 | |||
181 | // clean up | 189 | // clean up |
182 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 190 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
183 | } | 191 | } |
184 | 192 | ||
185 | // Verify that a comment can be repaired for a new group | 193 | // Verify that a comment can be repaired for a new group |
186 | [RuntimeFact] | 194 | [RuntimeFact] |
187 | public void CanRepairCommentOfNewGroup() | 195 | public void CanRepairCommentOfNewNonDomainGroup() |
188 | { | 196 | { |
189 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 197 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
190 | 198 | ||
191 | productNewUserWithComment.InstallProduct(); | 199 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
192 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", ""); | 200 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", ""); |
193 | 201 | ||
194 | productNewUserWithComment.RepairProduct(); | 202 | productNewUserWithComment.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
195 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 203 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
204 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
196 | 205 | ||
197 | // clean up | 206 | // clean up |
198 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 207 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -200,14 +209,15 @@ namespace WixToolsetTest.MsiE2E | |||
200 | 209 | ||
201 | // Verify that a comment can be changed for an existing group | 210 | // Verify that a comment can be changed for an existing group |
202 | [RuntimeFact] | 211 | [RuntimeFact] |
203 | public void CanChangeCommentOfExistingGroup() | 212 | public void CanChangeCommentOfExistingNonDomainGroup() |
204 | { | 213 | { |
205 | UserGroupVerifier.CreateLocalGroup("testName1"); | 214 | UserGroupVerifier.CreateLocalGroup("testName1"); |
206 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); | 215 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); |
207 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 216 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
208 | 217 | ||
209 | productNewUserWithComment.InstallProduct(); | 218 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
210 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 219 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
220 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
211 | 221 | ||
212 | // clean up | 222 | // clean up |
213 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 223 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -215,7 +225,7 @@ namespace WixToolsetTest.MsiE2E | |||
215 | 225 | ||
216 | // Verify that a comment can be rolled back for an existing group | 226 | // Verify that a comment can be rolled back for an existing group |
217 | [RuntimeFact] | 227 | [RuntimeFact] |
218 | public void CanRollbackCommentOfExistingGroup() | 228 | public void CanRollbackCommentOfExistingNonDomainGroup() |
219 | { | 229 | { |
220 | UserGroupVerifier.CreateLocalGroup("testName1"); | 230 | UserGroupVerifier.CreateLocalGroup("testName1"); |
221 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); | 231 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); |
@@ -232,7 +242,7 @@ namespace WixToolsetTest.MsiE2E | |||
232 | 242 | ||
233 | // Verify that a comment can be deleted for an existing group | 243 | // Verify that a comment can be deleted for an existing group |
234 | [RuntimeFact] | 244 | [RuntimeFact] |
235 | public void CanDeleteCommentOfExistingGroup() | 245 | public void CanDeleteCommentOfExistingNonDomainGroup() |
236 | { | 246 | { |
237 | UserGroupVerifier.CreateLocalGroup("testName1"); | 247 | UserGroupVerifier.CreateLocalGroup("testName1"); |
238 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "testComment1"); | 248 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "testComment1"); |
@@ -243,29 +253,64 @@ namespace WixToolsetTest.MsiE2E | |||
243 | // Verify that comment was removed. | 253 | // Verify that comment was removed. |
244 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", ""); | 254 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", ""); |
245 | 255 | ||
256 | |||
257 | productCommentDelete.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
258 | |||
246 | // clean up | 259 | // clean up |
247 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 260 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
248 | } | 261 | } |
249 | 262 | ||
250 | // Verify that a comment can be deleted for an existing group | 263 | #endregion |
251 | [RuntimeFact] | 264 | |
252 | public void CanNestGroups() | 265 | #region Domain |
266 | // Verify that a domain group can be nested within a local group | ||
267 | [RuntimeFact(DomainRequired = true)] | ||
268 | public void CanNestDomainGroups() | ||
253 | { | 269 | { |
270 | var testDomain = System.Environment.UserDomainName; | ||
254 | var productNestedGroups = this.CreatePackageInstaller("ProductNestedGroups"); | 271 | var productNestedGroups = this.CreatePackageInstaller("ProductNestedGroups"); |
255 | 272 | ||
256 | productNestedGroups.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | 273 | productNestedGroups.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, $"TESTDOMAIN={testDomain}"); |
257 | 274 | ||
258 | // Verify group nested membership | 275 | // Verify group nested membership |
259 | UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Authenticated Users", new string[] { "testName1", "testName2" }); | 276 | UserGroupVerifier.VerifyIsMemberOf(testDomain, "Domain Users", new string[] { "testName1", "testName2" }); |
260 | UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Everyone", new string[] { "testName1" }); | 277 | //UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Everyone", new string[] { "testName1" }); |
278 | |||
279 | UserGroupVerifier.VerifyIsNotMemberOf(testDomain, "Domain Users", new string[] { "testName3" }); | ||
280 | //UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Everyone", new string[] { "testName2", "testName3" }); | ||
261 | 281 | ||
262 | UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Authenticated Users", new string[] { "testName3" }); | 282 | productNestedGroups.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, $"TESTDOMAIN={testDomain}"); |
263 | UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Everyone", new string[] { "testName2", "testName3" }); | ||
264 | 283 | ||
265 | // clean up | 284 | // clean up |
266 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 285 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
267 | UserGroupVerifier.DeleteLocalGroup("testName2"); | 286 | UserGroupVerifier.DeleteLocalGroup("testName2"); |
268 | UserGroupVerifier.DeleteLocalGroup("testName3"); | 287 | UserGroupVerifier.DeleteLocalGroup("testName3"); |
269 | } | 288 | } |
289 | |||
290 | // Verify the rollback action reverts all Users changes. | ||
291 | [RuntimeFact(DomainRequired = true)] | ||
292 | public void CanRollbackDomainGroups() | ||
293 | { | ||
294 | var testDomain = System.Environment.UserDomainName; | ||
295 | UserGroupVerifier.CreateLocalGroup("testName3"); | ||
296 | var productFail = this.CreatePackageInstaller("ProductFail"); | ||
297 | |||
298 | // make sure the user accounts are deleted before we start | ||
299 | UserGroupVerifier.DeleteLocalGroup("testName1"); | ||
300 | UserGroupVerifier.DeleteLocalGroup("testName2"); | ||
301 | |||
302 | productFail.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, $"TESTDOMAIN={testDomain}"); | ||
303 | |||
304 | // Verify added Users were removed on rollback. | ||
305 | Assert.False(UserGroupVerifier.GroupExists(String.Empty, "testName1"), String.Format("Group '{0}' was not removed on Rollback", "testName1")); | ||
306 | Assert.False(UserGroupVerifier.GroupExists(String.Empty, "testName2"), String.Format("Group '{0}' was not removed on Rollback", "testName2")); | ||
307 | |||
308 | // clean up | ||
309 | UserGroupVerifier.DeleteLocalGroup("testName1"); | ||
310 | UserGroupVerifier.DeleteLocalGroup("testName2"); | ||
311 | UserGroupVerifier.DeleteLocalGroup("testName3"); | ||
312 | } | ||
313 | |||
314 | #endregion | ||
270 | } | 315 | } |
271 | } | 316 | } |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd b/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd index a2e67c89..ed1d50b6 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd +++ b/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd | |||
@@ -1,2 +1,3 @@ | |||
1 | SET RuntimeTestsEnabled=true | 1 | SET RuntimeTestsEnabled=true |
2 | SET RuntimeDomainTestsEnabled=true | ||
2 | dotnet test WixToolsetTest.MsiE2E.dll -v normal --logger trx | 3 | dotnet test WixToolsetTest.MsiE2E.dll -v normal --logger trx |