Ich versuche, Wattin-Tests für eine Intranet-Anwendung zu schreiben, die integrierte Authentifizierung verwendet. Die Webseite, die ich versuche zu testen, druckt Page.User.Identity.Name.Watin Windows-Authentifizierung
Hier ist ein Teil des Codes aus meinem Test:
if (Win32.LogonUser(u.UserName, u.Domain, u.Password, 2 /*LOGON32_LOGON_INTERACTIVE*/, 0 /*LOGON32_PROVIDER_DEFAULT*/, out hToken))
{
if (Win32.DuplicateToken(hToken, 2, out hTokenDuplicate))
{
WindowsIdentity windowsIdentity = new WindowsIdentity(hTokenDuplicate);
WindowsImpersonationContext impersonationContext = windowsIdentity.Impersonate();
Console.WriteLine(WindowsIdentity.GetCurrent().Name);
using (IE ie = new IE(url))
{
Console.WriteLine(ie.ContainsText(u.UserName));
ie.AutoClose = false;
}
impersonationContext.Undo();
}
}
Als ich dies ausführen, druckt es die Benutzername, die ich an die Konsole zu imitieren versuchen, aber die Web-Seite zeigt den Benutzer, dass ich Ich bin gerade eingeloggt als, nicht der Benutzer, den ich imitieren sollte.
ähnliches Problem gefunden bei:
Automated testing of authorization scenarios implemented with AzMan
Danke Bruce. Dies gab uns eine Lösung, die es uns ermöglichte, voranzukommen. Ich würde es gerne sehen, dass WatiN in Zukunft eine Art Identitätswechsel-Unterstützung hinzufügen würde. –
Fehlt hier ein Code? Wo ist 't' definiert und wo nennst du DoWorkAs()? –
@Derek Ich sagte der Code benötigt einen Re-Faktor .. Die Quelle ist in meinem Open-Source-Framework hier enthalten http://testingstax.codeplex.com/SourceControl/changeset/view/6390#73028 –