Модульное тестирование защищенного модуля с помощью форм Auth - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь выполнить модульное тестирование кода внутри защищенного модуля, который требует аутентификации.

Я пробовал много вещей, таких как насмешка над пользователем, для настройки моих тестов и создания поддельной аутентификации, чтобы мои защищенные модулиможно протестировать.

Все, что я пробовал, это сбой и перенаправление на запасной 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.

Если кто-нибудь мог бы привести пример того, как вы это сделали, или указать, что я делаю неправильно, это было бы очень признательно.

Спасибо

...