как подделать аутентификацию в защищенной конечной точке Нэнси - PullRequest
0 голосов
/ 29 мая 2018

В настоящее время создаем веб-API с Nancy в .NET.Наши конечные точки были защищены с помощью CustomBootStrapper:

public class CustomBootstrapper : AutofacNancyBootstrapper {
  ...
  pipelines.BeforeRequest.AddItemToEndOfPipeline(SecurityHooks.RequiresAuthentication());

Однако мы хотели добавить модуль, который не был защищен.Простой «привет мир» для проверки правильности запуска Web API.Таким образом, вместо этого мы удалили приведенную выше строку и вставили все, кроме одного, в наш Модуль:

public UsersModule(...) {
  this.RequiresAuthentication();

  Get("/...", async args => {

Но это дает проблему в том, что каждый из наших модульных тестов теперь терпит неудачу, потому что, очевидно, теперь только модульпринимает аутентифицированные звонки.И я не уверен, как «подделать» аутентифицированные звонки.

Настройка теста:

  _sut = new Browser(new ConfigurableBootstrapper(with => {
    var usersModule = new UsersModule(...dataservices);
    with.Module(usersModule);
    with.Dependency<JsonSerializer>(typeof(CamelCasedJsonSerializer));
  }));

Фактический тест:

  ... 
  var result = await _sut.Get($"http://localhost:80/api/users/...", with => {
    with.Accept("application/json");
    with.Header("Content-Type", "application/json");
  });
  Assert.Equal(HttpStatusCode.NotFound, result.StatusCode);

1 Ответ

0 голосов
/ 09 марта 2019

Вы можете установить текущего пользователя в контексте Нэнси в настройках теста.

 with.RequestStartup((container, pipelines, context) => { context.CurrentUser = myTestUser; });

Это приведет к пропуску this.RequiresAuthentication().

...