From 73745fb3828de332feb8d0a670e35182b39f1a2c Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 24 Oct 2023 13:19:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=B0?= =?UTF-8?q?=20=D0=9E=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=D0=BC=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=B2=D0=B8=D0=BB=D0=B5=D0=B3=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BC=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit добавлена отдельная мини-конфигурация для тестов closes #1870 --- .../diagnostics/PrivilegedModuleMethodCall.md | 26 +++ .../diagnostics/PrivilegedModuleMethodCall.md | 16 ++ .../PrivilegedModuleMethodCallDiagnostic.java | 96 ++++++++ ...edModuleMethodCallDiagnostic_en.properties | 2 + ...edModuleMethodCallDiagnostic_ru.properties | 2 + ...vilegedModuleMethodCallDiagnosticTest.java | 56 +++++ .../PrivilegedModuleMethodCallDiagnostic.bsl | 17 ++ ...\276\320\264\321\203\320\273\321\2142.xml" | 18 ++ .../Ext/Module.bsl" | 90 ++++++++ ...\276\320\264\321\203\320\273\321\2143.xml" | 18 ++ .../Ext/Module.bsl" | 90 ++++++++ ...\276\320\264\321\203\320\273\321\2141.xml" | 18 ++ .../Ext/Module.bsl" | 23 ++ .../privilegedModules/Configuration.xml | 209 ++++++++++++++++++ ...1\201\321\201\320\272\320\270\320\271.xml" | 16 ++ 15 files changed, 697 insertions(+) create mode 100644 docs/diagnostics/PrivilegedModuleMethodCall.md create mode 100644 docs/en/diagnostics/PrivilegedModuleMethodCall.md create mode 100644 src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic.java create mode 100644 src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_en.properties create mode 100644 src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_ru.properties create mode 100644 src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnosticTest.java create mode 100644 src/test/resources/diagnostics/PrivilegedModuleMethodCallDiagnostic.bsl create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142.xml" create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142/Ext/Module.bsl" create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143.xml" create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143/Ext/Module.bsl" create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" create mode 100644 "src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" create mode 100644 src/test/resources/metadata/privilegedModules/Configuration.xml create mode 100644 "src/test/resources/metadata/privilegedModules/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" diff --git a/docs/diagnostics/PrivilegedModuleMethodCall.md b/docs/diagnostics/PrivilegedModuleMethodCall.md new file mode 100644 index 00000000000..860a0b95ada --- /dev/null +++ b/docs/diagnostics/PrivilegedModuleMethodCall.md @@ -0,0 +1,26 @@ +# (PrivilegedModuleMethodCall) + + +## Описание диагностики + +При обращении к публичным процедурам и функциям привилегированных общих модулей могут нарушаться ограничения конфигурации по правам и ролям конфигурации, решения 1С. +Необходимо провалидировать подобные обращения для исключения обхода ограничений. + +## Примеры + +Например, в конфигурации существует привилегированный модуль выполнения заданий с именем `Задания`. +В этом модуле есть публичная функция `Функция ДобавитьЗадание(Знач ИмяМетода, Знач Параметры) Экспорт`. +Какой-то код конфигурации или расширения обращается к этому методу `Задания.ДобавитьЗадание("МетодДляВыполнения", Параметры);` + +Необходимо проанализировать код и убедиться в том, что: +- указан правильный метод для выполнения задания - `МетодДляВыполнения` +- метод `МетодДляВыполнения` для выполнения задания не выполняет деструктивных действий +- и не выдает пользователям данные, запрещенные ограничениями конфигурации + +## Источники + + diff --git a/docs/en/diagnostics/PrivilegedModuleMethodCall.md b/docs/en/diagnostics/PrivilegedModuleMethodCall.md new file mode 100644 index 00000000000..469c9d80d59 --- /dev/null +++ b/docs/en/diagnostics/PrivilegedModuleMethodCall.md @@ -0,0 +1,16 @@ +# (PrivilegedModuleMethodCall) + + +## Description + + +## Examples + + +## Sources + + diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic.java new file mode 100644 index 00000000000..bbc18df210e --- /dev/null +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic.java @@ -0,0 +1,96 @@ +/* + * This file is a part of BSL Language Server. + * + * Copyright (c) 2018-2023 + * Alexey Sosnoviy , Nikita Fedkin and contributors + * + * SPDX-License-Identifier: LGPL-3.0-or-later + * + * BSL Language Server is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * BSL Language Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with BSL Language Server. + */ +package com.github._1c_syntax.bsl.languageserver.diagnostics; + +import com.github._1c_syntax.bsl.languageserver.context.symbol.ModuleSymbol; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticScope; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; +import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; +import com.github._1c_syntax.bsl.languageserver.references.ReferenceIndex; +import com.github._1c_syntax.bsl.languageserver.references.model.Reference; +import com.github._1c_syntax.bsl.types.ModuleType; +import com.github._1c_syntax.mdclasses.mdo.MDCommonModule; +import lombok.RequiredArgsConstructor; +import org.eclipse.lsp4j.SymbolKind; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@DiagnosticMetadata( + type = DiagnosticType.VULNERABILITY, + severity = DiagnosticSeverity.MAJOR, + minutesToFix = 60, + tags = { + DiagnosticTag.SUSPICIOUS + }, + scope = DiagnosticScope.BSL +) +@RequiredArgsConstructor +public class PrivilegedModuleMethodCallDiagnostic extends AbstractDiagnostic { + private final ReferenceIndex referenceIndex; + private List privilegedModuleSymbols = new ArrayList<>(); + + private static boolean isReferenceToModules(Reference reference, List privilegedModuleSymbols) { + return reference.getSourceDefinedSymbol() + .flatMap(sourceDefinedSymbol -> sourceDefinedSymbol.getRootParent(SymbolKind.Module)) + .filter(ModuleSymbol.class::isInstance) + .map(ModuleSymbol.class::cast) + .filter(privilegedModuleSymbols::contains) + .isPresent(); + } + + @Override + protected void check() { + if (privilegedModuleSymbols.isEmpty()){ + privilegedModuleSymbols = getPrivilegedModuleSymbols(); + } + if (privilegedModuleSymbols.isEmpty()){ + return; + } + + referenceIndex.getReferencesFrom(documentContext.getUri(), SymbolKind.Method).stream() + .filter(reference -> isReferenceToModules(reference, privilegedModuleSymbols)) + .forEach(this::fireIssue); + } + + private List getPrivilegedModuleSymbols() { + return documentContext.getServerContext().getConfiguration().getCommonModules() + .values().stream() + .filter(MDCommonModule::isPrivileged) + .flatMap(mdCommonModule -> getPrivilegedModuleSymbol(mdCommonModule).stream()) + .toList(); + } + + private Optional getPrivilegedModuleSymbol(MDCommonModule mdCommonModule) { + return documentContext.getServerContext().getDocument( + mdCommonModule.getMdoReference().getMdoRef(), ModuleType.CommonModule) + .map(documentContext1 -> documentContext1.getSymbolTree().getModule()); + } + + private void fireIssue(Reference reference) { + diagnosticStorage.addDiagnostic(reference.getSelectionRange(), + info.getMessage(reference.getSymbol().getName())); + } +} diff --git a/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_en.properties b/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_en.properties new file mode 100644 index 00000000000..60269b66c95 --- /dev/null +++ b/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_en.properties @@ -0,0 +1,2 @@ +diagnosticMessage=Check the %s method access of the privileged module +diagnosticName=Accessing privileged module methods \ No newline at end of file diff --git a/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_ru.properties b/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_ru.properties new file mode 100644 index 00000000000..92318fdcdf9 --- /dev/null +++ b/src/main/resources/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnostic_ru.properties @@ -0,0 +1,2 @@ +diagnosticMessage=Проверьте обращение к методу %s привилегированного модуля +diagnosticName=Обращение к методам привилегированных модулей diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnosticTest.java new file mode 100644 index 00000000000..d639627a96a --- /dev/null +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/PrivilegedModuleMethodCallDiagnosticTest.java @@ -0,0 +1,56 @@ +/* + * This file is a part of BSL Language Server. + * + * Copyright (c) 2018-2023 + * Alexey Sosnoviy , Nikita Fedkin and contributors + * + * SPDX-License-Identifier: LGPL-3.0-or-later + * + * BSL Language Server is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * BSL Language Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with BSL Language Server. + */ +package com.github._1c_syntax.bsl.languageserver.diagnostics; + +import org.eclipse.lsp4j.Diagnostic; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static com.github._1c_syntax.bsl.languageserver.util.Assertions.assertThat; + +class PrivilegedModuleMethodCallDiagnosticTest extends AbstractDiagnosticTest { + private static final String PATH_TO_METADATA = "src/test/resources/metadata/privilegedModules"; + + PrivilegedModuleMethodCallDiagnosticTest() { + super(PrivilegedModuleMethodCallDiagnostic.class); + } + + @Test + void test() { + initServerContext(PATH_TO_METADATA); + + List diagnostics = getDiagnostics(); + + assertThat(diagnostics).hasSize(2); + assertThat(diagnostics, true) + .hasMessageOnRange("Проверьте обращение к методу ПубличнаяФункция привилегированного модуля", 3, 40, 56) + .hasMessageOnRange("Проверьте обращение к методу ПубличнаяПроцедура привилегированного модуля", 4, 29, 47); + } + + @Test + void testWithoutMetadata() { + + List diagnostics = getDiagnostics(); + assertThat(diagnostics).isEmpty(); + } +} diff --git a/src/test/resources/diagnostics/PrivilegedModuleMethodCallDiagnostic.bsl b/src/test/resources/diagnostics/PrivilegedModuleMethodCallDiagnostic.bsl new file mode 100644 index 00000000000..7058aac790b --- /dev/null +++ b/src/test/resources/diagnostics/PrivilegedModuleMethodCallDiagnostic.bsl @@ -0,0 +1,17 @@ +#Область ПрограммныйИнтерфейс + +Функция Тест1() + Значение = ПривилегированныйМодуль1.ПубличнаяФункция(); // ошибка + ПривилегированныйМодуль1.ПубличнаяПроцедура(); // ошибка +КонецФункции + +Процедура Тест2() + Значение = ПривилегированныйМодуль1.ПриватнаяФункция(); // не ошибка в данном правиле + ПривилегированныйМодуль1.ПриватнаяПроцедура(); // не ошибка в данном правиле +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142.xml" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142.xml" new file mode 100644 index 00000000000..fab8cc555db --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142.xml" @@ -0,0 +1,18 @@ + + + + + ОбщийМодуль2 + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142/Ext/Module.bsl" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142/Ext/Module.bsl" new file mode 100644 index 00000000000..291d5ad6c4b --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2142/Ext/Module.bsl" @@ -0,0 +1,90 @@ + +/////Описание +///// +///// + +#Область ОписаниеПеременных + + + + +#КонецОбласти + +#Область ПрограммныйИнтерфейс +// Код процедур и функций +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс +// Код процедур и функций +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции +// Код процедур и функций +#КонецОбласти + + +#Region EventHandlers +// Enter code here. +#EndRegion + +#Region Internal +// Enter code here. +#EndRegion + +#Область ОбработчикиСобытийФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыИмяТаблицыФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиКомандФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытий +// Код процедур и функций +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции +Функция Тест() + РегистрыСведений.РегистрСведений1.УстаревшаяПроцедура(); +КонецФункции + +#КонецОбласти + +Процедура НеУстаревшаяПроцедура() Экспорт + +КонецПроцедуры + +// Устарела. См. НеУстаревшаяПроцедура. +// Процедура - Устаревшая процедура +Процедура УстаревшаяПроцедура() Экспорт + +КонецПроцедуры + +Функция НеУстаревшаяФункция() Экспорт + +КонецФункции + +// Устарела. См. НеУстаревшаяФункция. +// Функция - Устаревшая функция +Функция УстаревшаяФункция() Экспорт + + ПервыйОбщийМодуль.НеУстаревшаяФункция(); + НеУстаревшаяФункция(); + +КонецФункции + +Процедура ВерсионированиеПриЗаписи(Источник, Отказ) Экспорт + +КонецПроцедуры + +Процедура РегистрацияИзмененийПередУдалением(Источник, Отказ) + +КонецПроцедуры diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143.xml" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143.xml" new file mode 100644 index 00000000000..c3d3f9e69b1 --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143.xml" @@ -0,0 +1,18 @@ + + + + + ОбщийМодуль3 + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143/Ext/Module.bsl" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143/Ext/Module.bsl" new file mode 100644 index 00000000000..291d5ad6c4b --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2143/Ext/Module.bsl" @@ -0,0 +1,90 @@ + +/////Описание +///// +///// + +#Область ОписаниеПеременных + + + + +#КонецОбласти + +#Область ПрограммныйИнтерфейс +// Код процедур и функций +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс +// Код процедур и функций +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции +// Код процедур и функций +#КонецОбласти + + +#Region EventHandlers +// Enter code here. +#EndRegion + +#Region Internal +// Enter code here. +#EndRegion + +#Область ОбработчикиСобытийФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыИмяТаблицыФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиКомандФормы +// Код процедур и функций +#КонецОбласти + +#Область ОбработчикиСобытий +// Код процедур и функций +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции +Функция Тест() + РегистрыСведений.РегистрСведений1.УстаревшаяПроцедура(); +КонецФункции + +#КонецОбласти + +Процедура НеУстаревшаяПроцедура() Экспорт + +КонецПроцедуры + +// Устарела. См. НеУстаревшаяПроцедура. +// Процедура - Устаревшая процедура +Процедура УстаревшаяПроцедура() Экспорт + +КонецПроцедуры + +Функция НеУстаревшаяФункция() Экспорт + +КонецФункции + +// Устарела. См. НеУстаревшаяФункция. +// Функция - Устаревшая функция +Функция УстаревшаяФункция() Экспорт + + ПервыйОбщийМодуль.НеУстаревшаяФункция(); + НеУстаревшаяФункция(); + +КонецФункции + +Процедура ВерсионированиеПриЗаписи(Источник, Отказ) Экспорт + +КонецПроцедуры + +Процедура РегистрацияИзмененийПередУдалением(Источник, Отказ) + +КонецПроцедуры diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" new file mode 100644 index 00000000000..24a9c1248c1 --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" @@ -0,0 +1,18 @@ + + + + + ПривилегированныйМодуль1 + + + false + false + true + false + false + false + true + DontUse + + + \ No newline at end of file diff --git "a/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" new file mode 100644 index 00000000000..626fd1e6394 --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/CommonModules/\320\237\321\200\320\270\320\262\320\270\320\273\320\265\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" @@ -0,0 +1,23 @@ +#Область ПрограммныйИнтерфейс + +Функция ПубличнаяФункция() Экспорт + +КонецФункции + +Процедура ПубличнаяПроцедура() Экспорт + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПриватнаяФункция() + +КонецФункции + +Процедура ПриватнаяПроцедура() + +КонецПроцедуры + +#КонецОбласти diff --git a/src/test/resources/metadata/privilegedModules/Configuration.xml b/src/test/resources/metadata/privilegedModules/Configuration.xml new file mode 100644 index 00000000000..35e55b12302 --- /dev/null +++ b/src/test/resources/metadata/privilegedModules/Configuration.xml @@ -0,0 +1,209 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + f47a8858-7778-47e9-9a9f-4eb4daedec56 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 38996962-4abe-4c75-b3fe-8d2fa95cf83c + + + e3687481-0a87-462c-a166-9f34594f9bba + 5af4c67d-90e8-46b7-bff3-009df1043aee + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + c519e804-03e1-428c-b447-9d7682802dcf + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 842dca23-a50c-4a90-99dc-d0b8fa46d6bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 1ef3f7d7-1891-4c7e-80b2-497689df7a80 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + d625341b-aef8-4049-888c-681733b130fb + + + + privilegedModules + + + + Version8_3_18 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + Taxi + Version8_3_18 + + + + Русский + ПривилегированныйМодуль1 + ОбщийМодуль2 + ОбщийМодуль3 + + + \ No newline at end of file diff --git "a/src/test/resources/metadata/privilegedModules/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/src/test/resources/metadata/privilegedModules/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 00000000000..a46e619fe47 --- /dev/null +++ "b/src/test/resources/metadata/privilegedModules/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file