// Copyright (c) Umbraco. // See LICENSE for more details. using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Options; using Moq; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.Routing; using Umbraco.Core.Security; using Umbraco.Tests.Common; using Umbraco.Web; using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.PublishedCache; using Umbraco.Web.Routing; namespace Umbraco.Tests.UnitTests.TestHelpers.Objects { /// /// Simplify creating test UmbracoContext's /// public class TestUmbracoContextFactory { public static IUmbracoContextFactory Create( GlobalSettings globalSettings = null, IUmbracoContextAccessor umbracoContextAccessor = null, IHttpContextAccessor httpContextAccessor = null, IPublishedUrlProvider publishedUrlProvider = null) { if (globalSettings == null) { globalSettings = new GlobalSettings(); } if (umbracoContextAccessor == null) { umbracoContextAccessor = new TestUmbracoContextAccessor(); } if (httpContextAccessor == null) { httpContextAccessor = Mock.Of(); } if (publishedUrlProvider == null) { publishedUrlProvider = Mock.Of(); } var contentCache = new Mock(); var mediaCache = new Mock(); var snapshot = new Mock(); snapshot.Setup(x => x.Content).Returns(contentCache.Object); snapshot.Setup(x => x.Media).Returns(mediaCache.Object); var snapshotService = new Mock(); snapshotService.Setup(x => x.CreatePublishedSnapshot(It.IsAny())).Returns(snapshot.Object); IHostingEnvironment hostingEnvironment = Mock.Of(); var backofficeSecurityAccessorMock = new Mock(); backofficeSecurityAccessorMock.Setup(x => x.BackOfficeSecurity).Returns(Mock.Of()); var umbracoContextFactory = new UmbracoContextFactory( umbracoContextAccessor, snapshotService.Object, new TestVariationContextAccessor(), new TestDefaultCultureAccessor(), new UmbracoRequestPaths(Options.Create(globalSettings), hostingEnvironment), hostingEnvironment, new UriUtility(hostingEnvironment), new AspNetCoreCookieManager(httpContextAccessor), Mock.Of(), backofficeSecurityAccessorMock.Object); return umbracoContextFactory; } } }