Próbuję przeprowadzić test jednostkowy kodu, który potrzebuje aktualnie zalogowanego użytkownika w teście. Korzystając z dostawcy członkostwa .Net 2.0, w jaki sposób mogę programowo zalogować się jako użytkownik tego testu?programistyczne logowanie z dostawcą członkostwa .net
Odpowiedz
Czy Twój kod rzeczywiście potrzebuje użytkownika zalogowanego w ASP.NET, czy po prostu potrzebuje CurrentPrincipal? Nie sądzę, żebyś musiał programowo zalogować się do swojej witryny. Możesz utworzyć GenericPrincipal, ustawić wymagane właściwości i dołączyć je, na przykład Thread.CurrentPrincipal lub wyszydzony HttpContext. Jeśli twój kod rzeczywiście potrzebuje RolePrincipal lub coś takiego, to chciałbym zmienić kod, aby był mniej sprzężony z członkostwem ASP.NET.
Korzystając z usługodawcy członkowskiego, można sprawdzić użytkownika przy użyciu narzędzia Membership.ValidateUser. Następnie możesz ustawić plik cookie uwierzytelniania za pomocą FormsAuthentication.SetAuthCookie. Tak długo, jak masz pojemnik z ciasteczkami, powinno ci to umożliwić zalogowanie się do użytkownika.
Najwygodniej było utworzyć klasę jednorazową, która obsługuje ustawianie i resetowanie Thread.CurrentPrincipal.
public class TemporaryPrincipal : IDisposable {
private readonly IPrincipal _cache;
public TemporaryPrincipal(IPrincipal tempPrincipal) {
_cache = Thread.CurrentPrincipal;
Thread.CurrentPrincipal = tempPrincipal;
}
public void Dispose() {
Thread.CurrentPrincipal = _cache;
}
}
W metodzie testowej po prostu zawinąć rozmowy z wykorzystaniem rachunku tak:
using (new TemporaryPrincipal(new AnonymousUserPrincipal())) {
ClassUnderTest.MethodUnderTest();
}
if(Membership.ValidateUser("user1",[email protected]))
{
FormsAuthentication.SetAuthCookie("user1",true);
}
- 1. Jak wyłączyć konto z dostawcą członkostwa ASP.NET?
- 2. Pojedyncze logowanie Dotnetopenauth z niestandardowym dostawcą tożsamości
- 3. ASP.NET MVC 4 Web API Authentication z dostawcą członkostwa
- 4. ochrona stron bez aspx z dostawcą członkostwa Asp.net
- 5. Alternatywy dla członkostwa .Net
- 6. Asp .Net Niestandardowe parametry członkostwa z web.config
- 7. Composite C1 - dostawca członkostwa - Prosta rejestracja i logowanie
- 8. .NET 4.5 Nazwy tabeli uniwersalnego dostawcy członkostwa
- 9. Jakie jest najlepsze środowisko programistyczne gier .NET?
- 10. Logowanie z konta gmail przez C# .NET
- 11. stan dostawcą i droga dostawcą w angularjs
- 12. Logowanie do FOSUserBundle za pomocą poczty e-mail z dostawcą usług, najlepsza praktyka
- 13. Używanie programu Ninject z niestandardowym dostawcą ról w aplikacji MVC3
- 14. Wyłącz debugowanie Logowanie w kwarcu .Net
- 15. Usługa OData WCF z dostawcą Reflection
- 16. Ustaw dynamicznie ciąg połączenia członkostwa z kodem
- 17. Logowanie kończy się niepowodzeniem po uaktualnieniu do wersji ASP.net 4.0 z 3.5
- 18. Dostawca członkostwa ASP.NET z EF
- 19. Czytanie sekcji członkostwa z web.config
- 20. Logowanie z Vala
- 21. Jednokrotne logowanie do aplikacji .NET zintegrowanej z Active Directory
- 22. Problem z ręcznie utworzonym dostawcą SessionState
- 23. Prowadzenie prostego członkostwa Sesja OAuth Alive
- 24. Jaka jest różnica między dostawcą tożsamości a dostawcą federacji?
- 25. Geofence na Androida z pozornym dostawcą lokalizacji
- 26. Vagrant z dostawcą Docker wymaga hasła RSync
- 27. Wstrzyknięcia zależne i dostawcy członkostwa ASP.Net
- 28. Narzędzia programistyczne Haskell GUI
- 29. Tabele członkostwa ASP.NET SQL
- 30. Sterowane głosem Narzędzia programistyczne
muszę wywołanie Membership.GetUser(), aby powrócić aktualnie zalogowanego użytkownika. – ddc0660
Nie wywołuj Membership.GetUser() bezpośrednio w testowanej klasie. Zaopatrz klasę w IGetUser w tworzenie, użyj jej w miejsce Membership.GetUser(), a następnie zrób sztuczną implementację IGetUser do testowania. –