2010-11-23 6 views
1

Gibt es eine einfache Möglichkeit, aktuelle Benutzerobjekt (das in Controller) durch IPrincipal mit Eigenschaften eines anderen Benutzers ersetzen? Ich denke über Umgebung, die Benutzer Windows-Authentifizierung und AD-Gruppen, so ist es wünschenswert, alle AD-Eigenschaften zu replizieren.Imitieren eines Benutzers in ASP.NET MVC zum Testen

Der "harte" Weg ist LDAP-Abfrage durchzuführen und IPrincipal-Schnittstelle zu implementieren, aber das möchte ich vermeiden.

+1

Ich vermute, Sie sind es über comlicating. Können Sie die Controller-Aktion anzeigen, die Sie testen möchten? –

+0

Ich versuche nicht, eine einzelne Controller-Aktion zu testen. Die Idee ist, einen bestimmten Benutzer beim Ausführen der App auf meinem lokalen Rechner imitieren zu können und zu sehen, wie alles funktioniert. –

Antwort

1

Ich löste dies durch eine Eigenschaft wie diese auf meine Basis-Controller hinzufügen:

new public IPrincipal User 
    { //we override User for impersonation 
     get { 
      if (/*check for impersonation*/) 
      { 
       return /*impersonated*/; 
      } 
      else 
      { 
       return base.User; 
      } 
     } 
    } 
0

Erstellen Sie eine Schnittstelle/Klasse, um den Zugriff auf das aktuelle Benutzerobjekt zu umbrechen. Ihr benutzerdefinierter Dienst kann das Benutzerobjekt oder was auch immer Sie möchten zurückgeben, und es wird leicht in Tests mock-up sein.

+0

Benutzereigenschaft in Controllern ist schreibgeschützt, und ich möchte die MVC-Authentifizierung nicht erneut implementieren. –

Verwandte Themen