public void TestEditInherited()
        {
            SetUp();

            const string Expected = @"expected_add.site.config";
            var          document = XDocument.Load(Current);

            document.Root?.Add(
                new XElement("location",
                             new XAttribute("path", "WebSite1"),
                             new XElement("system.webServer",
                                          new XElement("security",
                                                       new XElement("isapiCgiRestriction",
                                                                    new XElement("remove",
                                                                                 new XAttribute("path", @"%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll")),
                                                                    new XElement("add",
                                                                                 new XAttribute("allowed", "true"),
                                                                                 new XAttribute("path", "c:\\test.dll"),
                                                                                 new XAttribute("description", "ASP.NET_v4.0")))))));
            document.Save(Expected);

            _feature.SelectedItem = _feature.Items[0];
            Assert.Equal("ASP.NET_v4.0", _feature.SelectedItem.Description);
            var item = _feature.SelectedItem;

            item.Path = "c:\\test.dll";
            _feature.EditItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("c:\\test.dll", _feature.SelectedItem.Path);

            XmlAssert.Equal(Expected, Current);
            XmlAssert.Equal(Path.Combine("Website1", "original.config"), Path.Combine("Website1", "web.config"));
        }
        public async void TestEditInherited()
        {
            await this.SetUp();

            _feature.SelectedItem = _feature.Items[0];
            Assert.Equal("ASP.NET_v4.0", _feature.SelectedItem.Description);
            var item = _feature.SelectedItem;

            item.Path = "c:\\test.dll";
            _feature.EditItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("c:\\test.dll", _feature.SelectedItem.Path);

            const string Expected     = @"expected_edit.site.config";
            const string ExpectedMono = @"expected_edit.site.mono.config";

            XmlAssert.Equal(Path.Combine("IsapiCgiRestriction", Helper.IsRunningOnMono() ? ExpectedMono : Expected), Current);
            XmlAssert.Equal(Path.Combine("Website1", "original.config"), Path.Combine("Website1", "web.config"));
        }
        public async void TestEdit()
        {
            await this.SetUp();

            const string Expected     = @"expected_edit.config";
            const string ExpectedMono = @"expected_edit.mono.config";

            _feature.SelectedItem = _feature.Items[0];
            var item = _feature.SelectedItem;

            item.Description = "test edit";
            _feature.EditItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("test edit", _feature.SelectedItem.Description);
            Assert.Equal(4, _feature.Items.Count);
            XmlAssert.Equal(
                Helper.IsRunningOnMono()
                    ? Path.Combine("IsapiCgiRestriction", ExpectedMono)
                    : Path.Combine("IsapiCgiRestriction", Expected),
                Current);
        }
        public void TestEdit()
        {
            SetUp();
            const string Expected = @"expected_remove.config";
            var          document = XDocument.Load(Current);
            var          node     = document.Root?.XPathSelectElement("/configuration/system.webServer/security/isapiCgiRestriction");
            var          element  = node?.FirstNode as XElement;

            element?.SetAttributeValue("description", "test edit");
            document.Save(Expected);

            _feature.SelectedItem = _feature.Items[0];
            var item = _feature.SelectedItem;

            item.Description = "test edit";
            _feature.EditItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("test edit", _feature.SelectedItem.Description);
            Assert.Equal(4, _feature.Items.Count);
            XmlAssert.Equal(Expected, Current);
        }