2016-11-21 2 views
2

Я пытаюсь издеваться сеансом пользователя в BasicAppHost для тестирования следующим образом:UserAuthId свойства не установлено, когда насмешливый сеанс пользователя в ServiceStack

TestMode = true; 
container.Register<IAuthSession>(c => new AuthUserSession 
     { 
       UserAuthId = "1", 
       Language = "en", 
       PhoneNumber = "*****", 
       FirstName = "Test", 
       LastName = "User", 
       PrimaryEmail = "[email protected]", 
       UserAuthName = "testuser", 
       TimeZone = "America/Guatemala" 

      } 
     ); 

Но когда сеанс извлекаются из Услуги UserAuthId свойство извлекается с пустым значением, а остальные значения извлекаются правильно.

Я извлекая сеанс пользователя следующим образом:

var session = SessionAs<IAuthSession>(); 

Здесь вы можете увидеть dé значения, извлекаемые значения:

enter image description here

Я использую стек службы V4.5

ответ

1

Я не могу воспроизвести это поведение, которое работает как ожидалось в приведенном ниже примере:

public class MockSessionTest {} 

public class MockSessionTestService : Service 
{ 
    public object Any(MockSessionTest request) => 
     SessionAs<AuthUserSession>(); 
} 

using (var appHost = new BasicAppHost 
{ 
    ConfigureAppHost = host => host.RegisterService(typeof(MockSessionTestService)), 
    ConfigureContainer = x => x.Register<IAuthSession>(c => new AuthUserSession { 
     UserAuthId = "1", 
     Language = "en", 
     PhoneNumber = "*****", 
     FirstName = "Test", 
     LastName = "User", 
     PrimaryEmail = "[email protected]", 
     UserAuthName = "testuser", 
    }) 
}.Init()) 
{ 
    var response = appHost.ExecuteService(new MockSessionTest()) as AuthUserSession; 

    response.UserAuthId //= 1 
    response.UserAuthName //= testuser" 
    response.PrimaryEmail //= [email protected] 
} 

С тех пор just returns the Session that's registered in the Container, когда в TestMode=true Я не вижу, где это может изменить UserAuthId.

Примечание SessionAs<T> для разрешения конкретного типа сеанса пользователя, так что вы обычно используете SessionAs<AuthUserSession>() или Выборочная UserSession зарегистрирован при регистрации AuthFeature, например:

Plugins.Add(new AuthFeature(() => new CustomUserSession(), 
    new IAuthProvider { ... })); 

Также проверка MockSessionTests.cs для различных способов Мок сессия.

 Смежные вопросы

  • Нет связанных вопросов^_^