Пример #1
0
        public void TestRevert()
        {
            SetUp();

            const string expected = @"expected_add.site.config";
            var          site     = Path.Combine("Website1", "web.config");
            var          document = XDocument.Load(site);
            var          server   = document.Root?.XPathSelectElement("/configuration/system.webServer");

            server?.Add(new XElement("tracing"));
            document.Save(expected);

            var item = new TraceFailedRequestsItem(null);

            item.Path  = "*.php";
            item.Codes = "200-999";
            _feature.AddItem(item);
            Assert.Equal(3, _feature.Items.Count);

            _feature.Revert();
            Assert.Null(_feature.SelectedItem);
            Assert.Equal(2, _feature.Items.Count);

            const string Original     = @"original.config";
            const string OriginalMono = @"original.mono.config";

            XmlAssert.Equal(Helper.IsRunningOnMono() ? OriginalMono : Original, Current);
            XmlAssert.Equal(expected, site);
        }
Пример #2
0
 internal void Apply(TraceFailedRequestsItem item)
 {
     item.Codes     = Codes;
     item.Path      = FileName;
     item.TimeTaken = TimeSpan.FromSeconds(Time);
     item.Verbosity = Verbosity;
     item.SetProviders(Providers);
 }
Пример #3
0
 public AddTraceWizard(IServiceProvider serviceProvider, TraceFailedRequestsItem existing, ConfigurationElement config, TraceFailedRequestsFeature feature)
     : base(serviceProvider)
 {
     _existing   = existing;
     _config     = config;
     _feature    = feature;
     _wizardData = new AddTraceWizardData(config, existing);
     InitializeComponent();
     TaskGlyph = Resources.trace_failed_requests_48;
 }
Пример #4
0
        public void TestEdit()
        {
            SetUp();

            const string expected = @"expected_add.site.config";
            var          site     = Path.Combine("Website1", "web.config");
            var          document = XDocument.Load(site);
            var          server   = document.Root?.XPathSelectElement("/configuration/system.webServer");

            server?.Add(
                new XElement("tracing",
                             new XElement("traceFailedRequests",
                                          new XElement("add",
                                                       new XAttribute("path", "*.php"),
                                                       new XElement("failureDefinitions",
                                                                    new XAttribute("statusCodes", "100-999")),
                                                       new XElement("traceAreas",
                                                                    new XElement("add",
                                                                                 new XAttribute("provider", "ASP"),
                                                                                 new XAttribute("verbosity", "Verbose")),
                                                                    new XElement("add",
                                                                                 new XAttribute("provider", "ASPNET"),
                                                                                 new XAttribute("areas", "Infrastructure,Module,Page,AppServices"),
                                                                                 new XAttribute("verbosity", "Verbose")),
                                                                    new XElement("add",
                                                                                 new XAttribute("provider", "ISAPI Extension"),
                                                                                 new XAttribute("verbosity", "Verbose")),
                                                                    new XElement("add",
                                                                                 new XAttribute("provider", "WWW Server"),
                                                                                 new XAttribute("areas", "Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket"),
                                                                                 new XAttribute("verbosity", "Verbose")))
                                                       ))));
            document.Save(expected);

            var item = new TraceFailedRequestsItem(null);

            item.Path  = "*.php";
            item.Codes = "200-999";
            _feature.AddItem(item);

            Assert.Equal("*.php", _feature.SelectedItem.Path);
            Assert.Equal(3, _feature.Items.Count);
            item.Codes = "100-999";
            _feature.EditItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("100-999", _feature.SelectedItem.Codes);
            Assert.Equal(3, _feature.Items.Count);

            const string Original     = @"original.config";
            const string OriginalMono = @"original.mono.config";

            XmlAssert.Equal(Helper.IsRunningOnMono() ? OriginalMono : Original, Current);
            XmlAssert.Equal(expected, site);
        }
Пример #5
0
        public AddTraceWizardData(ConfigurationElement config, TraceFailedRequestsItem existing)
        {
            Editing = existing != null;
            if (existing == null)
            {
                FileName = "*";
            }
            else
            {
                FileName  = existing.Path;
                Codes     = existing.Codes;
                Time      = existing.TimeTaken.GetTotalSeconds();
                Verbosity = existing.Verbosity;
            }

            var collection = config.GetCollection();

            foreach (ConfigurationElement item in collection)
            {
                var name     = item.GetAttribute("name").Value.ToString();
                var areas    = item.ChildElements["areas"].GetCollection();
                var provider = new Provider {
                    Name = name, Areas = new List <string>(areas.Count)
                };
                foreach (ConfigurationElement area in areas)
                {
                    provider.Areas.Add(area["name"].ToString());
                }

                Providers.Add(provider);
            }

            if (existing != null)
            {
                var selection = existing.Element.GetCollection("traceAreas");
                foreach (ConfigurationElement item in selection)
                {
                    var name  = item["provider"].ToString();
                    var areas = item["areas"].ToString();
                    foreach (var provider in Providers)
                    {
                        if (provider.Name == name)
                        {
                            provider.Selected = true;
                            foreach (var area in areas.Split(','))
                            {
                                provider.SelectedAreas.Add(area);
                            }
                        }
                    }
                }
            }
        }
Пример #6
0
        protected override void CompleteWizard()
        {
            Item = _existing == null ? new TraceFailedRequestsItem(null) : _existing;
            _wizardData.Apply(Item);
            if (_feature.Items.Any(item => item.Match(Item)))
            {
                ShowMessage(
                    "A failed request trace for this content already exists.",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error,
                    MessageBoxDefaultButton.Button1);
                DialogResult = DialogResult.None;
                return;
            }

            DialogResult = DialogResult.OK;
            Close();
        }
Пример #7
0
        public void TestAdd()
        {
            SetUp();
            const string Expected = @"expected_add.config";
            var          document = XDocument.Load(Current);
            var          node     = document.Root?.XPathSelectElement("/configuration/system.webServer/tracing/traceFailedRequests");

            node?.Add(
                new XElement("add",
                             new XAttribute("path", "*.php"),
                             new XElement("traceAreas",
                                          new XElement("add",
                                                       new XAttribute("provider", "ASP"),
                                                       new XAttribute("verbosity", "Verbose")),
                                          new XElement("add",
                                                       new XAttribute("provider", "ASPNET"),
                                                       new XAttribute("areas", "Infrastructure,Module,Page,AppServices"),
                                                       new XAttribute("verbosity", "Verbose")),
                                          new XElement("add",
                                                       new XAttribute("provider", "ISAPI Extension"),
                                                       new XAttribute("verbosity", "Verbose")),
                                          new XElement("add",
                                                       new XAttribute("provider", "WWW Server"),
                                                       new XAttribute("areas", "Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket"),
                                                       new XAttribute("verbosity", "Verbose"))),
                             new XElement("failureDefinitions",
                                          new XAttribute("statusCodes", "200-999"))
                             ));
            document.Save(Expected);

            var item = new TraceFailedRequestsItem(null);

            item.Path  = "*.php";
            item.Codes = "200-999";
            _feature.AddItem(item);
            Assert.NotNull(_feature.SelectedItem);
            Assert.Equal("*.php", _feature.SelectedItem.Path);
            Assert.Equal(3, _feature.Items.Count);
            XmlAssert.Equal(Expected, Current);
        }