2011-01-03 2 views
4

Я возился с попыткой установить приложение через ClickOnce - с определенными минимальными разрешениями. Я хотел бы выполнить единичный тест, чтобы утверждать, что мое приложение не использует никаких дополнительных функций, запрещенных требуемой политикой безопасности.Модель безопасности тестирования модулей ClickOnce

Могу ли я в своем модульном тесте указать, что я хочу использовать указанный манифест, чтобы регулировать разрешения, совершать вызовы в мою библиотеку и затем утверждать, что не исключены исключения безопасности?

Если да, то как?

Спасибо!

ответ

0

Если вы хотите модульное тестирование (тест в изоляции) вы должны

  • тест permissionLogic и вы должны
  • теста, что ваш contrologic (т.е. MVVM) использует логику разрешения.

Тест SecurityManager для permissionLogic

вы можете извлечь permissionLogic в своем классе с методами

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

тогда вы пишете модульные тесты

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

Контролирующее средство (т.е. MVVM) использует логику разрешения

Создайте mock-SecurityManager, который всегда разрешает/запрещает функциональность. и напишите единичные тесты для контроллера, если он реагирует так, как ожидалось.

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

Я не уверен, если есть простой способ создать интеграционный тест, где Click-Once-App фактически использует реальный SecurityManager и результат получает проверяется.

Update после получения более подробной информации о том, что цель

тестов блока записи для контроллера, если он реагирует, как ожидался.

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

Я не уверен, что следую за вами ... Мое приложение не имеет концепции пользователей, факт заключается в том, что он будет работать в контексте с низким разрешением и, следовательно, не может писать/читать файлы наугад и т. д. Я хочу убедиться, что с помощью модульных тестов я могу запустить свою программу с низкими разрешениями, описанными в манифесте приложения ... – Max

+0

Я обновил свой пример. «Я хочу убедиться, что с помощью модульных тестов я могу запустить свою программу с низкими разрешениями, описанными в манифесте приложения». Поскольку вы отказываетесь от файловой системы/манифестации, вы ищете интеграционный тест не для unittest. Извините, у меня нет опыта написания тестов на основе манифеста-Click-Once-Integration – k3b

+0

вы видели [testing-clickonce-applications?] (Http://stackoverflow.com/questions/730090/testing-clickonce-applications?) – k3b

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