public static SiteInfo GetSiteInfo(string itemPath) { // init itemPath if (string.IsNullOrEmpty(itemPath)) { return(null); } itemPath = NormalizePath(itemPath); foreach (var site in SiteContextFactory.Sites) { // skip system sites if (SystemSites.Contains(site.Name)) { continue; } if (site.RootPath.Length <= 1) // skip trivial checks { continue; } var startpath = NormalizePath(site.RootPath); if (itemPath.StartsWith(startpath)) { return(site); } } return(null); }
public override void Process(IInstanceResourceContext data, ITestOutputContext output) { Assert.ArgumentNotNull(data, nameof(data)); var configuration = data.SitecoreInfo.Configuration; var handler = configuration.SelectElements(XPath).FirstOrDefault(); if (handler == null) { output.Warning(MessageNoHandlerElement); return; } if (handler.ChildNodes.Count == 0) { output.Warning(MessageNoSitesElement); return; } var sitesElement = handler.ChildNodes[0]; if (sitesElement == null) { output.Warning(MessageNoSitesElement); return; } // siteNamesInHandler = ["website"] in default Sitecore configuration var siteNamesInHandler = sitesElement.ChildNodes.OfType <XmlNode>().Where(x => x != null).Select(x => x.InnerText).ToArray(); var actualSiteElements = configuration.SelectElements("/configuration/sitecore/sites/site"); var actualSiteNames = actualSiteElements.Select(x => x.GetAttribute("name")); // frontendSiteNames = ["website"] in default Sitecore configuration var frontendSiteNames = actualSiteNames.Where(x => !SystemSites.Contains(x)); foreach (var frontendSiteName in frontendSiteNames) { if (frontendSiteName != null && !siteNamesInHandler.Contains(frontendSiteName)) { output.Warning(GetErrorMessage(frontendSiteName)); } } }