2011-01-03 12 views
4

Ich fummle herum und versuche, eine Anwendung über ClickOnce zu installieren - mit bestimmten minimalen Berechtigungen. Ich möchte Unit-Test durchführen, um zu bestätigen, dass meine Anwendung keine zusätzlichen Funktionen verwendet, die von der gewünschten Sicherheitsrichtlinie nicht zugelassen werden.Unit-Test Sicherheitsmodell ClickOnce

Kann ich in meinem Komponententest angeben, dass ich das angegebene Manifest verwenden möchte, um Berechtigungen zu regulieren, Aufrufe an meine Bibliothek vorzunehmen und dann zu bestätigen, dass keine Sicherheitsausnahmen ausgelöst werden?

Wenn ja, wie?

Danke!

Antwort

0

Wenn Sie Unit-Test wollen (Test in Isolation) haben Sie

  • Test permissionLogic und Sie müssen
  • Test, der Ihre Contrologic (d MVVM) die Genehmigungslogik verwendet.

Test-Securitymanager für permissionLogic

Sie die permissionLogic mit Methoden zu einer Klasse für sich extrahieren kann

public class SecurityManager 
{ 
bool IsAllowedToPrint(User user); 
bool IsAllowedToAdminister(User user); 
} 

dann schreiben Sie Einheit

User user = CreateAdimistrator(); 
Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user)); 

testet Kontrollmittel (d.h. MVVM) verwendet die Berechtigungslogik

Erstellen Sie einen Mock-SecurityManager, der die Funktionalität immer zulässt/verbietet. und Unit-Tests für den Controller schreiben, wenn es wie erwartet reagiert.

var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything(); 
var mvvm = CreateMvvm(allowEverythingMock); 
Assert.IsNotNull(mvvm.GetAdminGui()); 

ich shure bin nicht, ob es eine einfache Möglichkeit, bekommt einen Integrationstest zu schaffen, in dem Click-Once-App nutzt tatsächlich die realen Securitymanager und das Ergebnis überprüft.

Update nach mehr Infos bekommen, was das Ziel ist

Schreib Unit-Tests für die Steuerung, wenn es wie erwartet reagiert.

var controller = CreateCreate(Permission.Low); 

try 
{ 
    // File io is not allowed with low permissions 
    controller.SaveTextAsFile("HellowWorld", @"c:\temp\UnittestResult.txt"); 
    Assert.Fail("The Controller should have forbidden this"); 
} catch(PermissionException pex) { 
    // everything is ok. This specific exception was expected. 
} 
+0

Ich bin mir nicht sicher, ob ich dir folge ... Meine App hat nicht das Konzept von Benutzern, die Tatsache ist einfach, dass es in einem permissiven Kontext ausgeführt wird und somit keine Dateien schreiben/lesen kann Zufällig usw. Ich möchte über Unit-Tests sicherstellen, dass ich mein Programm mit den niedrigen Berechtigungen ausführen kann, die im Manifest der Anwendung beschrieben sind ... – Max

+0

Ich habe mein Beispiel aktualisiert. "Ich möchte über Unit-Tests sicherstellen, dass ich mein Programm mit den im Anwendungsmanifest beschriebenen geringen Berechtigungen ausführen kann". Da Sie Dateisystem/Manifest referenzieren, suchen Sie nach einem Integrationstest, nicht nach einem Komponententest. Entschuldigung, ich habe keine Erfahrung im Schreiben von Manifest-basierten-Click-Once-Integrationstests – k3b

+0

hast du [testing-clickonce-applications?] Gesehen (http://stackoverflow.com/questions/730090/testing-clickonce-applications?) – k3b