Я пытаюсь выполнить модульное тестирование кода внутри защищенного модуля, который требует аутентификации.
Я пробовал много вещей, таких как насмешка над пользователем, для настройки моих тестов и создания поддельной аутентификации, чтобы мои защищенные модулиможно протестировать.
Все, что я пробовал, это сбой и перенаправление на запасной URL, однако,
Вот текущая настройка, в которой я использую
var mockIdentity = new Mock<IIdentity>();
mockIdentity
.SetupGet(x => x.Name)
.Returns(ValidUserEmail);
mockIdentity
.SetupGet(x => x.IsAuthenticated)
.Returns(true);
var _mockUserMapper = new Mock<IUserMapper>();
_mockUserMapper.Setup(m => m.GetUserFromIdentifier(It.IsAny<Guid>(), It.IsAny<NancyContext>()))
.Returns(new ClaimsPrincipal(identity: mockIdentity.Object));
var bootstrapper = new ConfigurableBootstrapper(with =>
{
with.Module<SecuredModule>();
with.Dependency<IUserMapper>(_mockUserMapper.Object);
with.RequestStartup((requestContainer, pipelines, context) =>
{
var formsAuthConfiguration =
new FormsAuthenticationConfiguration()
{
RedirectUrl = "~/login",
UserMapper = requestContainer.Resolve<IUserMapper>(),
};
FormsAuthentication.Enable(pipelines, formsAuthConfiguration);
});
});
Browser = new Browser(bootstrapper);
var config = new FormsAuthenticationConfiguration()
{
UserMapper = _mockUserMapper.Object
};
// When
var result = Browser.Get(PagePaths.ManageSubscriptionPath, with => {
with.HttpsRequest();
with.FormsAuth(ValidGuid, config);
});
Как только яоднако сделайте запрос к модулю, он перенаправит на резервный URL.
Если кто-нибудь мог бы привести пример того, как вы это сделали, или указать, что я делаю неправильно, это было бы очень признательно.
Спасибо