public void Dispose()
        {
            if (!PermissionsHelper.IsRunAsAdministrator())
            {
                return;
            }

            var sut = new NetShHelper();

            sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToCreateFirewallRule)));
            sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)));
            sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToUpdateFirewallRule)));
            sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)));
        }
        public void ShouldBeAbleToDeleteFirewallRule()
        {
            Skip.If(!PermissionsHelper.IsRunAsAdministrator(), "require administrator permissions");
            var sut = new NetShHelper();

            PrepareTestRule(sut, TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)), TestPorts + 3);

            var result = sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)));

            result.Should().BeTrue();
            var getResult = sut.GetFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)));

            getResult.Should().NotBeNull();
            getResult.Rules.Should().BeEmpty();
        }
        private void PrepareTestRule(NetShHelper sut, string name, int port)
        {
            var createResult = sut.CreateFirewallRule(name, port);

            if (createResult == false)
            {
                sut.DeleteFirewallRule(name).Should().BeTrue();
                createResult = sut.CreateFirewallRule(name, port);
            }

            createResult.Should().BeTrue();

            var getResult = sut.GetFirewallRule(name);

            getResult.Should().NotBeNull();
            getResult.Rules.First().LocalPort.Should().Be(port);
        }