В большинстве экземпляров я сказал бы, если существует логика там, протестируйте ее. Это включает конструкторов и свойства, особенно когда больше чем одна вещь установлена в свойстве.
Относительно слишком большого тестирования, это спорно. Некоторые сказали бы, что все должно быть протестировано на устойчивость, другие говорят, что для эффективного тестирования, только вещи, которые могли бы повредиться (т.е. логика) должны быть протестированы.
я склонился бы больше к второму лагерю, только от личного опыта, но если бы кто-то действительно решал протестировать все, я не сказал бы, что это было слишком много... немного излишества, возможно, для меня, но не слишком много для них.
Так, Нет - я сказал бы, что нет такой вещи как "слишком много" тестирования в общем смысле, только для людей.
Безопасность - это сложно. Я мог бы перефразировать документацию и предоставить фрагменты кода, но, вероятно, ошибаюсь. Хуже того, даже если бы мои высокоуровневые описания были правильными, в фрагментах кода, скорее всего, была бы крошечная ошибка, которая убила бы безопасность.
Если вы собираетесь возиться с повышением привилегий, лучший подход - прочитать документацию и используйте предоставленные образцы.
Вы захотите использовать функцию AuthorizationExecuteWithPrivileges, например:
- (IBAction)touch: (id) sender {
NSString * filepath = [_filepathfield stringValue];
FILE *commpipe = NULL;
OSStatus execstatus;
NSLog(@"file path is %@", filepath);
char *args[] = {[filepath cString], NULL};
SFAuthorization * authorization = [SFAuthorization authorization];
execstatus = AuthorizationExecuteWithPrivileges([authorization authorizationRef],
"/usr/bin/touch",
kAuthorizationFlagDefaults,
args,
&commpipe);
if (execstatus == errAuthorizationSuccess)
NSlog(@"Toot! It worked");
else
NSLog(@"No dice");
}
Учитывая, что BSD - тонкий и сварливый цветок, я бы рекомендовал не позволять пользователю выполнять произвольные команды из приложения, поскольку корень.
/ lecture
Код из вашего примера - это начало пути, если вы хотите ограничить функции своей собственной программы ее собственными пользователями. Например, у вас может быть приложение, которое позволяет только определенным пользователям изменять данные из сохраненного файла. Таким образом, вы должны создать запись в базе данных безопасности com.mycompany.LibraryApp.AlterData и проверить, есть ли у пользователя такая привилегия, когда он пытается изменить данные. Но это совсем другая тема ...
Надеюсь, это поможет, -p.