diff --git a/src/v8runner.os b/src/v8runner.os index 17158c5..1343ee5 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -144,6 +144,63 @@ ВыполнитьКоманду(Параметры); КонецПроцедуры + +// Добавление пользователя хранилища конфигурации. +// Пользователь, от имени которого выполняется подключение к хранилищу, должен обладать административными правами. +// Если пользователь с указанным именем существует, то пользователь добавлен не будет. +// Параметры: +// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации +// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации +// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации +// НовыйПользователь - Строка - Имя создаваемого пользователя. +// ПарольПользователя - Строка - Пароль создаваемого пользователя. +// Право - ПраваПользователяХранилища - Права пользователя. Возможные значения: +// ТолькоЧтение — право на просмотр, (по умолчанию) +// ПравоЗахватаОбъектов — право на захват объектов, +// ПравоИзмененияВерсий — право на изменение состава версий, +// Администрирование — право на административные функции. +// ВосстановитьУдаленного - Булево - флаг небходимости востановления удаленного пользователя +// Если обнаружен удаленный пользователь с таким же именем, он будет восстановлен. +// +Процедура ДобавитьПользователяВХранилище(Знач СтрокаСоединения, + Знач ПользовательХранилища, + Знач ПарольХранилища, + Знач НовыйПользователь, + Знач ПарольПользователя = "", + Знач Право = Неопределено, + Знач ВосстановитьУдаленного = Ложь) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + Параметры.Добавить("/ConfigurationRepositoryAddUser "); + Параметры.Добавить(СтрШаблон("-User ""%1""",НовыйПользователь)); + Если Не ПустаяСтрока(ПарольПользователя) Тогда + Параметры.Добавить(СтрШаблон("-Pwd ""%1""",ПарольПользователя)); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Право) ТОгда + Право = ПраваПользователяХранилища.ТолькоЧтение; + КонецЕсли; + + Параметры.Добавить(СтрШаблон("-Rights %1",Право)); + + + Если ВосстановитьУдаленного Тогда + Параметры.Добавить("-RestoreDeletedUser"); + КонецЕсли; + + ВыполнитьКоманду(Параметры); + +КонецПроцедуры + + Процедура ВыгрузитьКонфигурациюВФайлы(Знач КаталогВыгрузки, Знач ФорматВыгрузки = "") Экспорт Если НЕ ЗначениеЗаполнено(ФорматВыгрузки) Тогда @@ -858,14 +915,6 @@ Возврат ФайлБазы.Существует(); КонецФункции -Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); - - Возврат ФайлБазы.Существует(); -КонецФункции - - - Функция РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока, Разделитель) МассивПодстрок = Новый Массив; diff --git "a/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" "b/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" new file mode 100644 index 0000000..ba4ae6d --- /dev/null +++ "b/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" @@ -0,0 +1,12 @@ + +Перем ТолькоЧтение Экспорт; +Перем ПравоЗахватаОбъектов Экспорт; +Перем ПравоИзмененияВерсий Экспорт; +Перем Администрирование Экспорт; + +/////////////////////////////////////////////////////////////// + +ТолькоЧтение = "ReadOnly"; +ПравоЗахватаОбъектов = "LockObjects"; +ПравоИзмененияВерсий = "ManageConfigurationVersions"; +Администрирование = "Administration"; diff --git a/tests/v8runner-test.os b/tests/v8runner-test.os index 8e8ea76..5eb96da 100644 --- a/tests/v8runner-test.os +++ b/tests/v8runner-test.os @@ -72,7 +72,7 @@ УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( КаталогВременногоХранилища, "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + Утверждения.ПроверитьИстину(ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); ВременныеФайлы.Удалить() КонецПроцедуры @@ -142,6 +142,45 @@ КонецПроцедуры +Процедура ТестДолжен_ДобавитьПользователяВХранилище() Экспорт + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); + + ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); + УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( + КаталогВременногоХранилища, + "Администратор"); + Утверждения.ПроверитьИстину(ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + + НовыйПользователь = "ТестовыйПользователь"; + ПарольПользователя = "ТестПароль"; + УправлениеКонфигуратором.ДобавитьПользователяВХранилище(КаталогВременногоХранилища, + "Администратор", + , + НовыйПользователь, + ПарольПользователя, + ПраваПользователяХранилища.ТолькоЧтение, + Истина); + + ПутьКФайлуВерсии = УправлениеКонфигуратором.ПолучитьВерсиюИзХранилища(КаталогВременногоХранилища, НовыйПользователь, ПарольПользователя); + + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьКФайлуВерсии), "Файл конфигурации из хранилища должен существовать"); + + ВременныеФайлы.Удалить() +КонецПроцедуры + +Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) + ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); + + Возврат ФайлБазы.Существует(); +КонецФункции + // Проверяет существование каталога // // Параметры: