diff options
author | chris_bednarski <Chris.Bednarski@minfos.com.au> | 2023-09-21 16:03:28 +1000 |
---|---|---|
committer | Bob Arnson <github@bobs.org> | 2023-11-19 12:17:13 -0500 |
commit | dfb7512b85536b7726080648f2228cf8d0153724 (patch) | |
tree | d053018ee47afe7e349dda6739a6580c771a1a3d /src/test/msi/WixToolsetTest.MsiE2E | |
parent | 80e604761b4f43b9b79a4878fcae360b071a7c35 (diff) | |
download | wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.gz wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.bz2 wix-dfb7512b85536b7726080648f2228cf8d0153724.zip |
add firewall extension decompiler, make msi modifications work, add all attributes
Diffstat (limited to 'src/test/msi/WixToolsetTest.MsiE2E')
-rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs | 640 | ||||
-rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj | 1 |
2 files changed, 624 insertions, 17 deletions
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs index ce55aa14..380e6f4c 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs | |||
@@ -4,6 +4,8 @@ namespace WixToolsetTest.MsiE2E | |||
4 | { | 4 | { |
5 | using System; | 5 | using System; |
6 | using System.IO; | 6 | using System.IO; |
7 | using System.Linq; | ||
8 | using System.Net.NetworkInformation; | ||
7 | using NetFwTypeLib; | 9 | using NetFwTypeLib; |
8 | using WixTestTools; | 10 | using WixTestTools; |
9 | using WixTestTools.Firewall; | 11 | using WixTestTools.Firewall; |
@@ -37,8 +39,8 @@ namespace WixToolsetTest.MsiE2E | |||
37 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 39 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
38 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 40 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
39 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 41 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
40 | EdgeTraversal = true, | 42 | EdgeTraversal = false, |
41 | EdgeTraversalOptions = 1, | 43 | EdgeTraversalOptions = 0, |
42 | Enabled = true, | 44 | Enabled = true, |
43 | InterfaceTypes = "All", | 45 | InterfaceTypes = "All", |
44 | LocalAddresses = "*", | 46 | LocalAddresses = "*", |
@@ -124,8 +126,8 @@ namespace WixToolsetTest.MsiE2E | |||
124 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 126 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
125 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 127 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
126 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 128 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
127 | EdgeTraversal = true, | 129 | EdgeTraversal = false, |
128 | EdgeTraversalOptions = 1, | 130 | EdgeTraversalOptions = 0, |
129 | Enabled = true, | 131 | Enabled = true, |
130 | InterfaceTypes = "All", | 132 | InterfaceTypes = "All", |
131 | LocalAddresses = "*", | 133 | LocalAddresses = "*", |
@@ -187,8 +189,8 @@ namespace WixToolsetTest.MsiE2E | |||
187 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 189 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
188 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 190 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
189 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 191 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
190 | EdgeTraversal = true, | 192 | EdgeTraversal = false, |
191 | EdgeTraversalOptions = 1, | 193 | EdgeTraversalOptions = 0, |
192 | Enabled = true, | 194 | Enabled = true, |
193 | InterfaceTypes = "All", | 195 | InterfaceTypes = "All", |
194 | LocalAddresses = "*", | 196 | LocalAddresses = "*", |
@@ -213,8 +215,8 @@ namespace WixToolsetTest.MsiE2E | |||
213 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), | 215 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), |
214 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", | 216 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", |
215 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 217 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
216 | EdgeTraversal = true, | 218 | EdgeTraversal = false, |
217 | EdgeTraversalOptions = 1, | 219 | EdgeTraversalOptions = 0, |
218 | Enabled = true, | 220 | Enabled = true, |
219 | InterfaceTypes = "All", | 221 | InterfaceTypes = "All", |
220 | LocalAddresses = "*", | 222 | LocalAddresses = "*", |
@@ -255,8 +257,8 @@ namespace WixToolsetTest.MsiE2E | |||
255 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), | 257 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), |
256 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", | 258 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", |
257 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 259 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
258 | EdgeTraversal = true, | 260 | EdgeTraversal = false, |
259 | EdgeTraversalOptions = 1, | 261 | EdgeTraversalOptions = 0, |
260 | Enabled = true, | 262 | Enabled = true, |
261 | InterfaceTypes = "All", | 263 | InterfaceTypes = "All", |
262 | LocalAddresses = "*", | 264 | LocalAddresses = "*", |
@@ -285,10 +287,10 @@ namespace WixToolsetTest.MsiE2E | |||
285 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | 287 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
286 | 288 | ||
287 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); | 289 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); |
288 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized apps list")); | 290 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0006 pipe' to the list")); |
289 | 291 | ||
290 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); | 292 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); |
291 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized ports list")); | 293 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0007 pipe' to the list")); |
292 | 294 | ||
293 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") | 295 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") |
294 | { | 296 | { |
@@ -296,8 +298,8 @@ namespace WixToolsetTest.MsiE2E | |||
296 | ApplicationName = "test.exe", | 298 | ApplicationName = "test.exe", |
297 | Description = "WiX Toolset firewall exception rule integration test - removal test", | 299 | Description = "WiX Toolset firewall exception rule integration test - removal test", |
298 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 300 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
299 | EdgeTraversal = true, | 301 | EdgeTraversal = false, |
300 | EdgeTraversalOptions = 1, | 302 | EdgeTraversalOptions = 0, |
301 | Enabled = true, | 303 | Enabled = true, |
302 | InterfaceTypes = "All", | 304 | InterfaceTypes = "All", |
303 | LocalPorts = "52390", | 305 | LocalPorts = "52390", |
@@ -313,7 +315,7 @@ namespace WixToolsetTest.MsiE2E | |||
313 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); | 315 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); |
314 | 316 | ||
315 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); | 317 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); |
316 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall rule")); | 318 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall exception for name")); |
317 | } | 319 | } |
318 | 320 | ||
319 | [RuntimeFact] | 321 | [RuntimeFact] |
@@ -370,8 +372,8 @@ namespace WixToolsetTest.MsiE2E | |||
370 | ApplicationName = "test.exe", | 372 | ApplicationName = "test.exe", |
371 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", | 373 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", |
372 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 374 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
373 | EdgeTraversal = true, | 375 | EdgeTraversal = false, |
374 | EdgeTraversalOptions = 1, | 376 | EdgeTraversalOptions = 0, |
375 | Enabled = true, | 377 | Enabled = true, |
376 | InterfaceTypes = "All", | 378 | InterfaceTypes = "All", |
377 | LocalAddresses = "*", | 379 | LocalAddresses = "*", |
@@ -532,5 +534,609 @@ namespace WixToolsetTest.MsiE2E | |||
532 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); | 534 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); |
533 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); | 535 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); |
534 | } | 536 | } |
537 | |||
538 | [RuntimeFact] | ||
539 | public void CanInstallAndUninstallFirewallRulesWithInterfaces() | ||
540 | { | ||
541 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
542 | .Take(3) | ||
543 | .Select(ni => ni.Name); | ||
544 | |||
545 | var props = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
546 | .Concat(new[] { "INTERFACETYPE=Lan" }).ToArray(); | ||
547 | |||
548 | var product = this.CreatePackageInstaller("FirewallRulesInterfaces"); | ||
549 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
550 | |||
551 | var expected1 = new RuleDetails("WiXToolset500 Test - 0028") | ||
552 | { | ||
553 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
554 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
555 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
556 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
557 | EdgeTraversal = false, | ||
558 | EdgeTraversalOptions = 0, | ||
559 | Enabled = true, | ||
560 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
561 | Interfaces = names.ToArray<object>(), | ||
562 | LocalAddresses = "*", | ||
563 | Profiles = Int32.MaxValue, | ||
564 | Protocol = 256, | ||
565 | RemoteAddresses = "*", | ||
566 | SecureFlags = 0, | ||
567 | }; | ||
568 | |||
569 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected1); | ||
570 | |||
571 | var expected2 = new RuleDetails("WiXToolset500 Test - 0029") | ||
572 | { | ||
573 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
574 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
575 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
576 | EdgeTraversal = false, | ||
577 | EdgeTraversalOptions = 0, | ||
578 | Enabled = true, | ||
579 | InterfaceTypes = "Lan", | ||
580 | Interfaces = names.Take(1).ToArray<object>(), | ||
581 | LocalAddresses = "*", | ||
582 | LocalPorts = "29292", | ||
583 | Profiles = Int32.MaxValue, | ||
584 | Protocol = 6, | ||
585 | RemoteAddresses = "*", | ||
586 | RemotePorts = "*", | ||
587 | SecureFlags = 0, | ||
588 | }; | ||
589 | |||
590 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected2); | ||
591 | |||
592 | props = names.Take(1).Select((name, idx) => $"INTERFACE{idx + 2}=\"{name}\"").ToArray(); | ||
593 | |||
594 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
595 | |||
596 | var expected3 = new RuleDetails("WiXToolset500 Test - 0028") | ||
597 | { | ||
598 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
599 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
600 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
601 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
602 | EdgeTraversal = false, | ||
603 | EdgeTraversalOptions = 0, | ||
604 | Enabled = true, | ||
605 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
606 | Interfaces = names.Take(1).ToArray<object>(), | ||
607 | LocalAddresses = "*", | ||
608 | Profiles = Int32.MaxValue, | ||
609 | Protocol = 256, | ||
610 | RemoteAddresses = "*", | ||
611 | SecureFlags = 0, | ||
612 | }; | ||
613 | |||
614 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected3); | ||
615 | |||
616 | var expected4 = new RuleDetails("WiXToolset500 Test - 0029") | ||
617 | { | ||
618 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
619 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
620 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
621 | EdgeTraversal = false, | ||
622 | EdgeTraversalOptions = 0, | ||
623 | Enabled = true, | ||
624 | InterfaceTypes = "All", | ||
625 | LocalAddresses = "*", | ||
626 | LocalPorts = "29292", | ||
627 | Profiles = Int32.MaxValue, | ||
628 | Protocol = 6, | ||
629 | RemoteAddresses = "*", | ||
630 | RemotePorts = "*", | ||
631 | SecureFlags = 0, | ||
632 | }; | ||
633 | |||
634 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected4); | ||
635 | |||
636 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
637 | |||
638 | // verify the firewall exceptions have been removed. | ||
639 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0028")); | ||
640 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0029")); | ||
641 | } | ||
642 | |||
643 | [RuntimeFact] | ||
644 | public void CanInstallAndUninstallFirewallRulesPackagedByDifferentModules() | ||
645 | { | ||
646 | var product = this.CreatePackageInstaller("CrossVersionMerge"); | ||
647 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
648 | |||
649 | // Validate new firewall exception details. | ||
650 | var expected1 = new RuleDetails("WiXToolset401 Test - 0018") | ||
651 | { | ||
652 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
653 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
654 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - app", | ||
655 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
656 | EdgeTraversal = true, | ||
657 | EdgeTraversalOptions = 1, | ||
658 | Enabled = true, | ||
659 | InterfaceTypes = "All", | ||
660 | LocalAddresses = "*", | ||
661 | LocalPorts = "40101", | ||
662 | Profiles = Int32.MaxValue, | ||
663 | Protocol = 6, | ||
664 | RemoteAddresses = "*", | ||
665 | RemotePorts = "*", | ||
666 | SecureFlags = 0, | ||
667 | }; | ||
668 | |||
669 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0018", expected1); | ||
670 | |||
671 | var expected2 = new RuleDetails("WiXToolset401 Test - 0019") | ||
672 | { | ||
673 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
674 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - port", | ||
675 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
676 | EdgeTraversal = false, | ||
677 | EdgeTraversalOptions = 0, | ||
678 | Enabled = true, | ||
679 | InterfaceTypes = "All", | ||
680 | LocalAddresses = "*", | ||
681 | LocalPorts = "40102", | ||
682 | Profiles = Int32.MaxValue, | ||
683 | Protocol = 6, | ||
684 | RemoteAddresses = "*", | ||
685 | RemotePorts = "*", | ||
686 | SecureFlags = 0, | ||
687 | }; | ||
688 | |||
689 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0019", expected2); | ||
690 | |||
691 | var expected3 = new RuleDetails("WiXToolset401 Test - 0020") | ||
692 | { | ||
693 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
694 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
695 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - app", | ||
696 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
697 | EdgeTraversal = true, | ||
698 | EdgeTraversalOptions = 1, | ||
699 | Enabled = true, | ||
700 | InterfaceTypes = "All", | ||
701 | LocalAddresses = "*", | ||
702 | LocalPorts = "40103", | ||
703 | Profiles = Int32.MaxValue, | ||
704 | Protocol = 6, | ||
705 | RemoteAddresses = "*", | ||
706 | RemotePorts = "*", | ||
707 | SecureFlags = 0, | ||
708 | }; | ||
709 | |||
710 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0020", expected3); | ||
711 | |||
712 | var expected4 = new RuleDetails("WiXToolset401 Test - 0021") | ||
713 | { | ||
714 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
715 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - port", | ||
716 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
717 | EdgeTraversal = false, | ||
718 | EdgeTraversalOptions = 0, | ||
719 | Enabled = true, | ||
720 | InterfaceTypes = "All", | ||
721 | LocalAddresses = "*", | ||
722 | LocalPorts = "40104", | ||
723 | Profiles = Int32.MaxValue, | ||
724 | Protocol = 6, | ||
725 | RemoteAddresses = "*", | ||
726 | RemotePorts = "*", | ||
727 | SecureFlags = 0, | ||
728 | }; | ||
729 | |||
730 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0021", expected4); | ||
731 | |||
732 | var expected5 = new RuleDetails("WiXToolset Test - 0022") | ||
733 | { | ||
734 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
735 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
736 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - app", | ||
737 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
738 | EdgeTraversal = false, | ||
739 | EdgeTraversalOptions = 0, | ||
740 | Enabled = true, | ||
741 | InterfaceTypes = "All", | ||
742 | LocalAddresses = "*", | ||
743 | LocalPorts = "50001", | ||
744 | Profiles = Int32.MaxValue, | ||
745 | Protocol = 6, | ||
746 | RemoteAddresses = "*", | ||
747 | RemotePorts = "*", | ||
748 | SecureFlags = 0, | ||
749 | }; | ||
750 | |||
751 | Verifier.VerifyFirewallRule("WiXToolset Test - 0022", expected5); | ||
752 | |||
753 | var expected6 = new RuleDetails("WiXToolset Test - 0023") | ||
754 | { | ||
755 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
756 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - port", | ||
757 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
758 | EdgeTraversal = false, | ||
759 | EdgeTraversalOptions = 0, | ||
760 | Enabled = true, | ||
761 | InterfaceTypes = "All", | ||
762 | LocalAddresses = "*", | ||
763 | LocalPorts = "50002", | ||
764 | Profiles = Int32.MaxValue, | ||
765 | Protocol = 6, | ||
766 | RemoteAddresses = "*", | ||
767 | RemotePorts = "*", | ||
768 | SecureFlags = 0, | ||
769 | }; | ||
770 | |||
771 | Verifier.VerifyFirewallRule("WiXToolset Test - 0023", expected6); | ||
772 | |||
773 | var expected7 = new RuleDetails("WiXToolset Test - 0024") | ||
774 | { | ||
775 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
776 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
777 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - app", | ||
778 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
779 | EdgeTraversal = false, | ||
780 | EdgeTraversalOptions = 0, | ||
781 | Enabled = true, | ||
782 | InterfaceTypes = "All", | ||
783 | LocalAddresses = "*", | ||
784 | LocalPorts = "50003", | ||
785 | Profiles = Int32.MaxValue, | ||
786 | Protocol = 6, | ||
787 | RemoteAddresses = "*", | ||
788 | RemotePorts = "*", | ||
789 | SecureFlags = 0, | ||
790 | }; | ||
791 | |||
792 | Verifier.VerifyFirewallRule("WiXToolset Test - 0024", expected7); | ||
793 | |||
794 | var expected8 = new RuleDetails("WiXToolset Test - 0025") | ||
795 | { | ||
796 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
797 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - port", | ||
798 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
799 | EdgeTraversal = false, | ||
800 | EdgeTraversalOptions = 0, | ||
801 | Enabled = true, | ||
802 | InterfaceTypes = "All", | ||
803 | LocalAddresses = "*", | ||
804 | LocalPorts = "50004", | ||
805 | Profiles = Int32.MaxValue, | ||
806 | Protocol = 6, | ||
807 | RemoteAddresses = "*", | ||
808 | RemotePorts = "*", | ||
809 | SecureFlags = 0, | ||
810 | }; | ||
811 | |||
812 | Verifier.VerifyFirewallRule("WiXToolset Test - 0025", expected8); | ||
813 | |||
814 | var expected9 = new RuleDetails("WiXToolset Test - 0026") | ||
815 | { | ||
816 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
817 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "package.wxs"), | ||
818 | Description = "WiX Toolset firewall exception rule integration test - package app", | ||
819 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
820 | EdgeTraversal = false, | ||
821 | EdgeTraversalOptions = 0, | ||
822 | Enabled = true, | ||
823 | InterfaceTypes = "All", | ||
824 | LocalAddresses = "*", | ||
825 | LocalPorts = "20001", | ||
826 | Profiles = Int32.MaxValue, | ||
827 | Protocol = 6, | ||
828 | RemoteAddresses = "*", | ||
829 | RemotePorts = "*", | ||
830 | SecureFlags = 0, | ||
831 | }; | ||
832 | |||
833 | Verifier.VerifyFirewallRule("WiXToolset Test - 0026", expected9); | ||
834 | |||
835 | var expected10 = new RuleDetails("WiXToolset Test - 0027") | ||
836 | { | ||
837 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
838 | Description = "WiX Toolset firewall exception rule integration test - package port", | ||
839 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
840 | EdgeTraversal = false, | ||
841 | EdgeTraversalOptions = 0, | ||
842 | Enabled = true, | ||
843 | InterfaceTypes = "All", | ||
844 | LocalAddresses = "*", | ||
845 | LocalPorts = "20002", | ||
846 | Profiles = Int32.MaxValue, | ||
847 | Protocol = 6, | ||
848 | RemoteAddresses = "*", | ||
849 | RemotePorts = "*", | ||
850 | SecureFlags = 0, | ||
851 | }; | ||
852 | |||
853 | Verifier.VerifyFirewallRule("WiXToolset Test - 0027", expected10); | ||
854 | |||
855 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
856 | |||
857 | // verify the firewall exceptions have been removed. | ||
858 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0018")); | ||
859 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0019")); | ||
860 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0020")); | ||
861 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0021")); | ||
862 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0022")); | ||
863 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0023")); | ||
864 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0024")); | ||
865 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0025")); | ||
866 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0026")); | ||
867 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0027")); | ||
868 | } | ||
869 | |||
870 | [RuntimeFact] | ||
871 | public void ServiceNameIsPassedIntoNestedRules() | ||
872 | { | ||
873 | var product = this.CreatePackageInstaller("NestedService"); | ||
874 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
875 | |||
876 | var expected1 = new RuleDetails("WiXToolset Test - 0031") | ||
877 | { | ||
878 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
879 | Protocol = 256, | ||
880 | LocalAddresses = "*", | ||
881 | RemoteAddresses = "*", | ||
882 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
883 | Description = "WiX Toolset firewall exception rule integration test - service property", | ||
884 | EdgeTraversal = false, | ||
885 | EdgeTraversalOptions = 0, | ||
886 | Enabled = true, | ||
887 | InterfaceTypes = "All", | ||
888 | Profiles = Int32.MaxValue, | ||
889 | SecureFlags = 0, | ||
890 | ServiceName = "Spooler", | ||
891 | }; | ||
892 | |||
893 | Verifier.VerifyFirewallRule("WiXToolset Test - 0031", expected1); | ||
894 | |||
895 | var expected2 = new RuleDetails("WiXToolset Test - 0032") | ||
896 | { | ||
897 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
898 | Protocol = 256, | ||
899 | LocalAddresses = "*", | ||
900 | RemoteAddresses = "*", | ||
901 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
902 | Description = "WiX Toolset firewall exception rule integration test - ServiceConfig", | ||
903 | EdgeTraversal = false, | ||
904 | EdgeTraversalOptions = 0, | ||
905 | Enabled = true, | ||
906 | InterfaceTypes = "All", | ||
907 | Profiles = Int32.MaxValue, | ||
908 | SecureFlags = 0, | ||
909 | ServiceName = "Spooler", | ||
910 | }; | ||
911 | |||
912 | Verifier.VerifyFirewallRule("WiXToolset Test - 0032", expected2); | ||
913 | |||
914 | var expected3 = new RuleDetails("WiXToolset Test - 0033") | ||
915 | { | ||
916 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
917 | Protocol = 256, | ||
918 | LocalAddresses = "*", | ||
919 | RemoteAddresses = "*", | ||
920 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
921 | Description = "WiX Toolset firewall exception rule integration test - ServiceInstall", | ||
922 | EdgeTraversal = false, | ||
923 | EdgeTraversalOptions = 0, | ||
924 | Enabled = true, | ||
925 | InterfaceTypes = "All", | ||
926 | Profiles = Int32.MaxValue, | ||
927 | SecureFlags = 0, | ||
928 | ServiceName = "WixTestFirewallSrv", | ||
929 | }; | ||
930 | |||
931 | Verifier.VerifyFirewallRule("WiXToolset Test - 0033", expected3); | ||
932 | |||
933 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
934 | |||
935 | // verify the firewall exceptions have been removed. | ||
936 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0031")); | ||
937 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0032")); | ||
938 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0033")); | ||
939 | } | ||
940 | |||
941 | [RuntimeFact] | ||
942 | public void SucceedWhenEnableOnlyFlagIsSet() | ||
943 | { | ||
944 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
945 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
946 | |||
947 | var expected1 = new RuleDetails("WiXToolset Test - 0028") | ||
948 | { | ||
949 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
950 | Protocol = 256, | ||
951 | LocalAddresses = "*", | ||
952 | RemoteAddresses = "*", | ||
953 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
954 | EdgeTraversal = false, | ||
955 | EdgeTraversalOptions = 0, | ||
956 | Enabled = true, | ||
957 | InterfaceTypes = "All", | ||
958 | Profiles = Int32.MaxValue, | ||
959 | SecureFlags = 0, | ||
960 | }; | ||
961 | |||
962 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected1); | ||
963 | |||
964 | Verifier.DisableFirewallRule("WiXToolset Test - 0028"); | ||
965 | |||
966 | var args = new[] | ||
967 | { | ||
968 | "LOCALPORT=3456", | ||
969 | "PROTOCOL=6", | ||
970 | "PROGRAM=ShouldBeUnchanged", | ||
971 | "PROFILE=2", | ||
972 | "DESCRIPTION=ShouldBeUnchanged", | ||
973 | "REMOTESCOPE=ShouldBeUnchanged", | ||
974 | "EDGETRAVERSAL=3", | ||
975 | "ENABLED=1", | ||
976 | "GROUPING=ShouldBeUnchanged", | ||
977 | "ICMPTYPES=ShouldBeUnchanged", | ||
978 | "INTERFACE=ShouldBeUnchanged", | ||
979 | "INTERFACETYPE=ShouldBeUnchanged", | ||
980 | "LOCALSCOPE=ShouldBeUnchanged", | ||
981 | "REMOTEPORT=60000", | ||
982 | "SERVICE=ShouldBeUnchanged", | ||
983 | "PACKAGEID=ShouldBeUnchanged", | ||
984 | "LOCALUSERS=ShouldBeUnchanged", | ||
985 | "LOCALOWNER=ShouldBeUnchanged", | ||
986 | "REMOTEMACHINES=ShouldBeUnchanged", | ||
987 | "REMOTEUSERS=ShouldBeUnchanged", | ||
988 | "SECUREFLAGS=15", | ||
989 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
990 | "LOCALADDRESS=ShouldBeUnchanged", | ||
991 | }; | ||
992 | |||
993 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
994 | |||
995 | var expected2 = new RuleDetails("WiXToolset Test - 0028") | ||
996 | { | ||
997 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
998 | Protocol = 256, | ||
999 | LocalAddresses = "*", | ||
1000 | RemoteAddresses = "*", | ||
1001 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1002 | EdgeTraversal = false, | ||
1003 | EdgeTraversalOptions = 0, | ||
1004 | Enabled = true, | ||
1005 | InterfaceTypes = "All", | ||
1006 | Profiles = Int32.MaxValue, | ||
1007 | SecureFlags = 0, | ||
1008 | }; | ||
1009 | |||
1010 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected2); | ||
1011 | |||
1012 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1013 | |||
1014 | // verify the firewall exceptions have been removed. | ||
1015 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0028")); | ||
1016 | } | ||
1017 | |||
1018 | [RuntimeFact] | ||
1019 | public void SucceedWhenDoNothingFlagIsSet() | ||
1020 | { | ||
1021 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
1022 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1023 | |||
1024 | var expected1 = new RuleDetails("WiXToolset Test - 0029") | ||
1025 | { | ||
1026 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1027 | Protocol = 256, | ||
1028 | LocalAddresses = "*", | ||
1029 | RemoteAddresses = "*", | ||
1030 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1031 | EdgeTraversal = false, | ||
1032 | EdgeTraversalOptions = 0, | ||
1033 | Enabled = true, | ||
1034 | InterfaceTypes = "All", | ||
1035 | Profiles = Int32.MaxValue, | ||
1036 | SecureFlags = 0, | ||
1037 | }; | ||
1038 | |||
1039 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected1); | ||
1040 | Verifier.DisableFirewallRule("WiXToolset Test - 0029"); | ||
1041 | |||
1042 | var args = new[] | ||
1043 | { | ||
1044 | "INTERFACE=ShouldBeUnchanged", | ||
1045 | "INTERFACETYPE=ShouldBeUnchanged", | ||
1046 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
1047 | "LOCALADDRESS=ShouldBeUnchanged", | ||
1048 | }; | ||
1049 | |||
1050 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
1051 | |||
1052 | var expected2 = new RuleDetails("WiXToolset Test - 0029") | ||
1053 | { | ||
1054 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1055 | Protocol = 256, | ||
1056 | LocalAddresses = "*", | ||
1057 | RemoteAddresses = "*", | ||
1058 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1059 | EdgeTraversal = false, | ||
1060 | EdgeTraversalOptions = 0, | ||
1061 | Enabled = false, // remains as disabled after the repair | ||
1062 | InterfaceTypes = "All", | ||
1063 | Profiles = Int32.MaxValue, | ||
1064 | SecureFlags = 0, | ||
1065 | }; | ||
1066 | |||
1067 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected2); | ||
1068 | |||
1069 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1070 | |||
1071 | // verify the firewall exceptions have been removed. | ||
1072 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0029")); | ||
1073 | } | ||
1074 | |||
1075 | [RuntimeFact] | ||
1076 | public void SucceedWhenNoFlagIsSet() | ||
1077 | { | ||
1078 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
1079 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1080 | |||
1081 | var expected1 = new RuleDetails("WiXToolset Test - 0030") | ||
1082 | { | ||
1083 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1084 | Protocol = 256, | ||
1085 | LocalAddresses = "*", | ||
1086 | RemoteAddresses = "*", | ||
1087 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1088 | EdgeTraversal = false, | ||
1089 | EdgeTraversalOptions = 0, | ||
1090 | Enabled = true, | ||
1091 | InterfaceTypes = "All", | ||
1092 | Profiles = Int32.MaxValue, | ||
1093 | SecureFlags = 0, | ||
1094 | }; | ||
1095 | |||
1096 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected1); | ||
1097 | Verifier.DisableFirewallRule("WiXToolset Test - 0030"); | ||
1098 | |||
1099 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
1100 | .Take(2) | ||
1101 | .Select(ni => ni.Name); | ||
1102 | |||
1103 | var args = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
1104 | .Concat(new[] | ||
1105 | { | ||
1106 | "INTERFACETYPE1=Wireless", | ||
1107 | "INTERFACETYPE2=Lan", | ||
1108 | "REMOTEADDRESS1=DHCP", | ||
1109 | "REMOTEADDRESS2=LocalSubnet", | ||
1110 | "LOCALADDRESS1=127.0.0.1", | ||
1111 | "LOCALADDRESS2=192.168.1.1", | ||
1112 | }) | ||
1113 | .ToArray(); | ||
1114 | |||
1115 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
1116 | |||
1117 | var expected2 = new RuleDetails("WiXToolset Test - 0030") | ||
1118 | { | ||
1119 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
1120 | Protocol = 256, | ||
1121 | LocalAddresses = "127.0.0.1/255.255.255.255,192.168.1.1/255.255.255.255", | ||
1122 | RemoteAddresses = "LocalSubnet,DHCP", | ||
1123 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
1124 | Description = "", | ||
1125 | EdgeTraversal = false, | ||
1126 | EdgeTraversalOptions = 0, | ||
1127 | Enabled = true, | ||
1128 | Interfaces = names.ToArray(), | ||
1129 | InterfaceTypes = "Lan,Wireless", | ||
1130 | Profiles = Int32.MaxValue, | ||
1131 | SecureFlags = 0, | ||
1132 | }; | ||
1133 | |||
1134 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected2); | ||
1135 | |||
1136 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
1137 | |||
1138 | // verify the firewall exceptions have been removed. | ||
1139 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0030")); | ||
1140 | } | ||
535 | } | 1141 | } |
536 | } | 1142 | } |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj index a5536de4..7d4695d3 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj +++ b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | <ItemGroup> | 30 | <ItemGroup> |
31 | <PackageReference Include="Microsoft.Win32.Registry" /> | 31 | <PackageReference Include="Microsoft.Win32.Registry" /> |
32 | <PackageReference Include="System.Net.NetworkInformation" /> | ||
32 | <PackageReference Include="System.Security.Principal.Windows" /> | 33 | <PackageReference Include="System.Security.Principal.Windows" /> |
33 | <PackageReference Include="WixInternal.TestSupport" /> | 34 | <PackageReference Include="WixInternal.TestSupport" /> |
34 | <PackageReference Include="WixToolset.Data" /> | 35 | <PackageReference Include="WixToolset.Data" /> |