Fixed unit test, by injecting IHttpContextAccessor instead of using HttpContext directly. Not the test class is mockable again
Signed-off-by: Bjarke Berg <mail@bergmania.dk>
This commit is contained in:
@@ -5,6 +5,7 @@ using AutoFixture;
|
||||
using AutoFixture.AutoMoq;
|
||||
using AutoFixture.Kernel;
|
||||
using AutoFixture.NUnit3;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Moq;
|
||||
@@ -21,7 +22,7 @@ using Umbraco.Web.WebApi;
|
||||
|
||||
namespace Umbraco.Tests.UnitTests.AutoFixture
|
||||
{
|
||||
|
||||
|
||||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor, AllowMultiple = true)]
|
||||
public class InlineAutoMoqDataAttribute : InlineAutoDataAttribute
|
||||
{
|
||||
@@ -83,18 +84,20 @@ namespace Umbraco.Tests.UnitTests.AutoFixture
|
||||
Mock.Of<IHostingEnvironment>(x => x.ToAbsolute(It.IsAny<string>()) == "/umbraco" && x.ApplicationVirtualPath == string.Empty),
|
||||
Mock.Of<IRuntimeState>(x => x.Level == RuntimeLevel.Run),
|
||||
new UmbracoApiControllerTypeCollection(Array.Empty<Type>()))));
|
||||
|
||||
|
||||
fixture.Customize<PreviewRoutes>(u => u.FromFactory(
|
||||
() => new PreviewRoutes(
|
||||
Options.Create(new GlobalSettings()),
|
||||
Mock.Of<IHostingEnvironment>(x => x.ToAbsolute(It.IsAny<string>()) == "/umbraco" && x.ApplicationVirtualPath == string.Empty),
|
||||
Mock.Of<IRuntimeState>(x => x.Level == RuntimeLevel.Run))));
|
||||
|
||||
|
||||
var connectionStrings = new ConnectionStrings();
|
||||
fixture.Customize<ConnectionStrings>(x => x.FromFactory(() => connectionStrings ));
|
||||
|
||||
|
||||
|
||||
var httpContextAccessor = new HttpContextAccessor { HttpContext = new DefaultHttpContext() };
|
||||
fixture.Customize<HttpContext>(x => x.FromFactory(() => httpContextAccessor.HttpContext));
|
||||
fixture.Customize<IHttpContextAccessor>(x => x.FromFactory(() => httpContextAccessor));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ using Umbraco.Web.WebAssets;
|
||||
using Constants = Umbraco.Core.Constants;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using System.Security.Claims;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Web.BackOffice.Controllers
|
||||
@@ -52,6 +53,7 @@ namespace Umbraco.Web.BackOffice.Controllers
|
||||
private readonly ILogger<BackOfficeController> _logger;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IBackOfficeExternalLoginProviders _externalLogins;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
|
||||
public BackOfficeController(
|
||||
IBackOfficeUserManager userManager,
|
||||
@@ -66,7 +68,8 @@ namespace Umbraco.Web.BackOffice.Controllers
|
||||
IBackOfficeSecurityAccessor backofficeSecurityAccessor,
|
||||
ILogger<BackOfficeController> logger,
|
||||
IJsonSerializer jsonSerializer,
|
||||
IBackOfficeExternalLoginProviders externalLogins)
|
||||
IBackOfficeExternalLoginProviders externalLogins,
|
||||
IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_runtimeMinifier = runtimeMinifier;
|
||||
@@ -81,6 +84,7 @@ namespace Umbraco.Web.BackOffice.Controllers
|
||||
_logger = logger;
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_externalLogins = externalLogins;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
@@ -365,7 +369,7 @@ namespace Umbraco.Web.BackOffice.Controllers
|
||||
ViewData.SetUmbracoPath(_globalSettings.GetUmbracoMvcArea(_hostingEnvironment));
|
||||
|
||||
//check if there is the TempData or cookies with the any token name specified, if so, assign to view bag and render the view
|
||||
if (ViewData.FromBase64CookieData<BackOfficeExternalLoginProviderErrors>(HttpContext, ViewDataExtensions.TokenExternalSignInError, _jsonSerializer) ||
|
||||
if (ViewData.FromBase64CookieData<BackOfficeExternalLoginProviderErrors>(_httpContextAccessor.HttpContext, ViewDataExtensions.TokenExternalSignInError, _jsonSerializer) ||
|
||||
ViewData.FromTempData(TempData, ViewDataExtensions.TokenExternalSignInError) ||
|
||||
ViewData.FromTempData(TempData, ViewDataExtensions.TokenPasswordResetCode))
|
||||
return defaultResponse();
|
||||
|
||||
Reference in New Issue
Block a user