From 4efbef97d5b4357d9aa011f4c966cd4c613e0c9f Mon Sep 17 00:00:00 2001 From: Ivanov Egor <80944823+Segate-ekb@users.noreply.github.com> Date: Tue, 3 Dec 2024 00:13:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20de?= =?UTF-8?q?pricated=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- .../Ext/Module.bsl" | 7 +- .../Ext/Module.bsl" | 6 +- src/cf/Configuration.xml | 2 +- ...0\272\320\265\321\202\320\276\320\262.xml" | 32 +++++ .../Ext/ObjectModule.bsl" | 49 +++++-- .../Ext/Module.bsl" | 128 ++++++++++-------- tests/fixtures/schema.json | 4 + 8 files changed, 157 insertions(+), 73 deletions(-) diff --git a/packagedef b/packagedef index 7645ecd..ee9fca9 100644 --- a/packagedef +++ b/packagedef @@ -5,7 +5,7 @@ Описание.Имя("1c_openApi_validation") - .Версия("0.0.2.0") + .Версия("0.0.3.0") .Автор("Иванов Егор") .АдресАвтора("https://github.com/Segate-ekb") .Описание("Валидатор OpenApi") diff --git "a/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" "b/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" index 5f6b8db..6947e10 100644 --- "a/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" @@ -10,12 +10,13 @@ // Спецификация - Строка - Спецификация OpenAPI 3.0 в формате JSON. // // Возвращаемое значение: -// Массив - Список ошибок. +// Структура - Структура результата валидации. см. Обработки.ВалидаторПакетов.КонструкторРезультатВалидации + // Функция Валидировать(Знач МодельДанных, Знач ИмяСхемы, Знач Спецификация) Экспорт // BSLLS:Typo-off Обработка = Обработки.ВалидаторПакетов.Создать(); - Возврат Обработка.Валидировать(МодельДанных, ИмяСхемы, Спецификация); - + РезультатВалидации = Обработка.Валидировать(МодельДанных, ИмяСхемы, Спецификация); + Возврат РезультатВалидации; КонецФункции #КонецОбласти diff --git "a/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" index 6bc6757..64d2977 100644 --- "a/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -19,13 +19,13 @@ КомпонентыСпецификации = СпецификацияВФорматеOpenAPI.Получить("components"); Если Не ЗначениеЗаполнено(КомпонентыСпецификации) Тогда - ВызватьИсключение НСтр("ru='В спецификации отсутствует блок '"); + ВызватьИсключение "В спецификации отсутствует блок "; КонецЕсли; СхемыДанныхСпецификации = КомпонентыСпецификации.Получить("schemas"); Если Не ЗначениеЗаполнено(СхемыДанныхСпецификации) Тогда - ВызватьИсключение НСтр("ru='В спецификации отсутствует блок '"); + ВызватьИсключение "В спецификации отсутствует блок "; КонецЕсли; Возврат СхемыДанныхСпецификации; @@ -53,7 +53,7 @@ Если СхемаПоСтроковомуПути = Неопределено Тогда ТекстОшибки = СтрШаблон("Ошибка при разборе схемы! Не удается получить схему по пути <%1>", СтроковыйПуть); - ЗаписьЖурналаРегистрации("ВалидаторПакетов", + ЗаписьЖурналаРегистрации("ВалидаторПакетов", // BSLLS:Typo-off УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки); diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index b272cdc..f81b89d 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -49,7 +49,7 @@ Russian - 0.0.2.0 + 0.0.3.0 false false diff --git "a/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.xml" "b/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.xml" index 676e4d9..dfbdb45 100644 --- "a/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.xml" +++ "b/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262.xml" @@ -98,6 +98,38 @@ Auto + + + Предупреждения + + + ru + Предупреждения + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + \ No newline at end of file diff --git "a/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" "b/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" index 0515e01..a5f4338 100644 --- "a/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" +++ "b/src/cf/DataProcessors/\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/ObjectModule.bsl" @@ -2,11 +2,12 @@ //////////////////////////////////////////////////////////////////////////////// // ВалидаторПакетов //////////////////////////////////////////////////////////////////////////////// +#Если ВнешнееСоединение Или Сервер Тогда #Область ОписаниеПеременных Перем ШаблонБазовойОшибки; // Базовый текст ошибки +Перем ШаблонПредупреждения; // Базовый текст предупреждения #КонецОбласти -#Если ВнешнееСоединение Или Сервер Тогда #Область ПрограммныйИнтерфейс // Возвращает список ошибок модели данных. @@ -18,19 +19,22 @@ // СпецификацияСтрокой - Строка - Спецификация OpenAPI 3.0 в формате JSON. // // Возвращаемое значение: -// Массив - Список ошибок. +// Структура - Структура результата валидации. см.КонструкторРезультатВалидации // Функция Валидировать(Знач МодельДанных, Знач ИмяСхемы, Знач СпецификацияСтрокой) Экспорт // BSLLS:Typo-off - Ошибки = Новый Массив; Спецификация = СпецификацияСтрокой; - + РезультатВалидации = КонструкторРезультатВалидации(); СхемыДанныхСпецификации = ВалидаторПакетовПовтИсп.СхемыДанныхСпецификации(Спецификация); КлючИЗначение = Новый Структура("Ключ, Значение", ИмяСхемы, МодельДанных); ПроверитьСвойствоПоСхеме(КлючИЗначение, СхемыДанныхСпецификации, Ложь); - - Возврат Ошибки; + + РезультатВалидации.Результат = Ошибки.Количество() = 0; + РезультатВалидации.Ошибки = Ошибки; + РезультатВалидации.Предупреждения = Предупреждения; + + Возврат РезультатВалидации; КонецФункции @@ -50,7 +54,7 @@ Возврат; КонецЕсли; КонецЕсли; - + ВыполнитьВалидациюДанных(Данные, ПроверяемаяСхема); КонецПроцедуры @@ -81,7 +85,7 @@ КонецПроцедуры Процедура ВалидироватьДанныеПоСхеме(Данные, ПроверяемаяСхема) // BSLLS:Typo-off - УстановитьШаблонБазовойОшибки(Данные.Ключ, + УстановитьШаблоныСообщений(Данные.Ключ, ПроверяемаяСхема.Получить("description")); Если Данные.Значение = Неопределено Или Данные.Значение = Null Тогда Nullable = ПроверяемаяСхема.Получить("nullable"); @@ -176,6 +180,7 @@ Процедура ТипонезависимыеПроверки(Данные, ПроверяемаяСхема) // BSLLS:Typo-off ЗначениеСвойства = Данные.Значение; ПроверитьСоответствиеПеречислению(ЗначениеСвойства, ПроверяемаяСхема); + ОбработатьDepricated(ПроверяемаяСхема); КонецПроцедуры Процедура ПроверитьСоответствиеПеречислению(ЗначениеСвойства, ПроверяемаяСхема) @@ -194,6 +199,19 @@ Ошибки.Добавить(ТекстОшибки); КонецЕсли; КонецПроцедуры + +Процедура ОбработатьDepricated(ПроверяемаяСхема) +Если Не ПроверяемаяСхема.Получить("deprecated") = Истина Тогда + // Не depricated + Возврат; +КонецЕсли; + +ТекстПредупреждения = СтрШаблон( + "%1 Свойство признано устаревшим! Необходимо отказаться от использования в кратчайшее время.", + ШаблонПредупреждения); +Предупреждения.Добавить(ТекстПредупреждения); +КонецПроцедуры + #КонецОбласти #Область РаботаСоСложнымиСхемами @@ -711,7 +729,7 @@ ТипЗначенияСоответствуетОписанию(ЗначениеСвойства, ОписаниеТипа); КонецПроцедуры -Процедура УстановитьШаблонБазовойОшибки(Имя, Описание) +Процедура УстановитьШаблоныСообщений(Имя, Описание) Представление = СтрШаблон("<%1>", Имя); Если ЗначениеЗаполнено(Описание) Тогда @@ -719,6 +737,7 @@ КонецЕсли; ШаблонБазовойОшибки = СтрШаблон("Ошибка валидации %1.", Представление); + ШаблонПредупреждения = СтрШаблон("Проблема валидации %1.", Представление); КонецПроцедуры Функция ТипЗначенияСоответствуетОписанию(ЗначениеСвойства, ОписаниеТипа) @@ -876,5 +895,17 @@ Возврат Не ПроверяемаяСхема.Получить(ИмяСвойства) = Неопределено; КонецФункции +// Возвращает список ошибок модели данных. +// +// Возвращаемое значение: +// Структура - Структура результата валидации. +Функция КонструкторРезультатВалидации() + Ошибки = Новый Массив; + Предупреждения = Новый Массив; + + Возврат Новый Структура("Результат, Ошибки, Предупреждения", Истина, Ошибки, Предупреждения); + +КонецФункции + #КонецОбласти #КонецЕсли diff --git "a/src/cfe/YAXUNIT/CommonModules/\320\236\320\234_\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" "b/src/cfe/YAXUNIT/CommonModules/\320\236\320\234_\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" index d2744fe..ef2203f 100644 --- "a/src/cfe/YAXUNIT/CommonModules/\320\236\320\234_\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" +++ "b/src/cfe/YAXUNIT/CommonModules/\320\236\320\234_\320\222\320\260\320\273\320\270\320\264\320\260\321\202\320\276\321\200\320\237\320\260\320\272\320\265\321\202\320\276\320\262/Ext/Module.bsl" @@ -16,6 +16,7 @@ .ДобавитьТест("Ошбика_ОжиданиеМассива") .ДобавитьТест("Ошибка_НекорректныйТип") .ДобавитьТест("Ошибка_НеЗаполненоОбязательноеСвойство") + .ДобавитьТест("Предупреждение_depricated") .ДобавитьТестовыйНабор("ВалидацияСтрок") .ДобавитьТест("Ошибка_СтрокаКорочеМинимальной") .ДобавитьТест("Ошибка_СтрокаДлиннееМаксимальной") @@ -130,7 +131,7 @@ Процедура Ошибка_НетОбязательногоСвойства() Экспорт ОбъектПроверки = Новый Структура("test", "hello world!"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -142,7 +143,7 @@ Процедура Ошибка_НеЗаполненоОбязательноеСвойство() Экспорт ОбъектПроверки = Новый Структура("required"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -154,7 +155,7 @@ Процедура Ошбика_ОжиданиеОбъекта() Экспорт ОбъектПроверки = Новый Структура("nested_object", "Не объект"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -166,7 +167,7 @@ Процедура Ошбика_ОжиданиеМассива() Экспорт ОбъектПроверки = Новый Структура("nested_array", "Не Массив"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -178,7 +179,7 @@ Процедура Ошибка_НекорректныйТип() Экспорт ОбъектПроверки = "Привет"; ИмяСхемы = "simple_number"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -187,12 +188,27 @@ КонецПроцедуры +Процедура Предупреждение_depricated() Экспорт + ОбъектПроверки = "hello world!"; + ИмяСхемы = "deprecated"; + РезультатПроверки = Валидировать(ОбъектПроверки, ИмяСхемы); + Предупреждения = РезультатПроверки.Предупреждения; + Ошибки = РезультатПроверки.Ошибки; + + ЮТест.ОжидаетЧто(Ошибки) + .ИмеетДлину(0); + ЮТест.ОжидаетЧто(Предупреждения) + .ИмеетДлинуБольше(0) + .Содержит(ЮТест.Предикат() // Значение по условиям + .СодержитСтрокуПоШаблону("Свойство признано устаревшим! Необходимо отказаться от использования в кратчайшее время.")) +КонецПроцедуры + Процедура Ошибка_СтрокаКорочеМинимальной() Экспорт ОбъектПроверки = Новый Соответствие; ОбъектПроверки.Вставить("minmax", ""); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -206,7 +222,7 @@ ОбъектПроверки.Вставить("minmax", "1234567891011"); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -220,7 +236,7 @@ ОбъектПроверки.Вставить("enum", "Что-то не то"); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -234,7 +250,7 @@ ОбъектПроверки.Вставить("date", Дата("20241231010000")); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -248,7 +264,7 @@ ОбъектПроверки.Вставить("date", ЗаписатьДатуJSON(Дата("20241231010000"),ФорматДатыJSON.ISO)); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -262,7 +278,7 @@ ОбъектПроверки.Вставить("date-time", "не дата и время"); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -276,7 +292,7 @@ ОбъектПроверки.Вставить("base64", "не base64"); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -290,7 +306,7 @@ ОбъектПроверки.Вставить(ИдентификаторФормата, "не корректное значение"); ИмяСхемы = "strings"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -304,7 +320,7 @@ ОбъектПроверки.Вставить("exclusiveminmax", 0); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -317,7 +333,7 @@ ОбъектПроверки.Вставить("exclusiveminmax", 100); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -330,7 +346,7 @@ ОбъектПроверки.Вставить("minmax", 0); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -343,7 +359,7 @@ ОбъектПроверки.Вставить("minmax", 100); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -356,7 +372,7 @@ ОбъектПроверки.Вставить("multipleOf", 15); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -369,7 +385,7 @@ ОбъектПроверки.Вставить("integer", 15.5); ИмяСхемы = "numbers"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -383,7 +399,7 @@ ОбъектПроверки.Вставить("minmax", ЮТКоллекции.ЗначениеВМассиве("Раз")); ИмяСхемы = "arrays"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -397,7 +413,7 @@ ОбъектПроверки.Вставить("minmax", ЮТКоллекции.ЗначениеВМассиве("Раз", 2, 3, Ложь)); ИмяСхемы = "arrays"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -411,7 +427,7 @@ ОбъектПроверки.Вставить("unique", ЮТКоллекции.ЗначениеВМассиве("Раз", 2, 2, Ложь)); ИмяСхемы = "arrays"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -425,7 +441,7 @@ ОбъектПроверки.Вставить("minmax", Новый Структура("Раз")); ИмяСхемы = "objects"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -439,7 +455,7 @@ ОбъектПроверки.Вставить("minmax", Новый Структура("Раз, Два, Три, Четыре")); ИмяСхемы = "objects"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -453,7 +469,7 @@ ОбъектПроверки.Вставить("additional_false", Новый Структура("normal, additional", "Тут все ок", "Тут Ошибочка")); ИмяСхемы = "objects"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -467,7 +483,7 @@ ОбъектПроверки.Вставить(ИмяПроверяемойСхемы, Новый Структура("normal, additional", "Тут все ок", 42)); ИмяСхемы = "objects"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; Если ЖдемОшибку Тогда ЮТест.ОжидаетЧто(МассивОшибок) @@ -483,7 +499,7 @@ Процедура РазрешениеСсылочногоТипа() Экспорт ОбъектПроверки = Новый Структура("ref", 123); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -496,7 +512,7 @@ Процедура УспешнаяВалидацияОбъекта() Экспорт ОбъектПроверки = Новый Структура("required", "Требуемое"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -505,7 +521,7 @@ Процедура УспешнаяВалидацияМассива() Экспорт ОбъектПроверки = ЮТКоллекции.ЗначениеВМассиве("Раз","Два", "Три"); ИмяСхемы = "array"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -514,7 +530,7 @@ Процедура УспешнаяВалидацияСтроки() Экспорт ОбъектПроверки = "Привет, Мир!"; ИмяСхемы = "simple_string"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -523,7 +539,7 @@ Процедура УспешнаяВалидацияЧисла() Экспорт ОбъектПроверки = 42.5; ИмяСхемы = "simple_number"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -532,7 +548,7 @@ Процедура УспешнаяВалидацияЦелогоЧисла() Экспорт ОбъектПроверки = 42; ИмяСхемы = "simple_integer"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -541,7 +557,7 @@ Процедура УспешнаяВалидацияБулева() Экспорт ОбъектПроверки = true; ИмяСхемы = "simple_boolean"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -550,7 +566,7 @@ Процедура УспешнаяВложенногоСложногоОбъекта() Экспорт ОбъектПроверки = Новый Структура("required, nested_object", "Требуемое", Новый Структура("required", "Требуемое")); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -559,7 +575,7 @@ Процедура Ошибка_ВалидацияОбъекта() Экспорт ОбъектПроверки = ЮТКоллекции.ЗначениеВМассиве("Раз","Два", "Три"); ИмяСхемы = "object"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -570,7 +586,7 @@ Процедура Ошибка_ВалидацияМассива() Экспорт ОбъектПроверки = "Никак не массив"; ИмяСхемы = "array"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -581,7 +597,7 @@ Процедура Ошибка_ВалидацияСтроки() Экспорт ОбъектПроверки = ЮТКоллекции.ЗначениеВМассиве("Раз","Два", "Три"); ИмяСхемы = "simple_string"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -592,7 +608,7 @@ Процедура Ошибка_ВалидацияЧисла() Экспорт ОбъектПроверки = "Не число"; ИмяСхемы = "simple_number"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -604,7 +620,7 @@ Процедура Ошибка_ВалидацияЦелогоЧисла() Экспорт ОбъектПроверки = "Не число"; ИмяСхемы = "simple_integer"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -616,7 +632,7 @@ Процедура Ошибка_ВалидацияБулева() Экспорт ОбъектПроверки = "Не булево"; ИмяСхемы = "simple_boolean"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -627,7 +643,7 @@ Процедура Ошибка_oneOf() Экспорт ОбъектПроверки = Новый Структура("type, valueA, valueB", "A", "Example", 123); ИмяСхемы = "OneOf"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -640,13 +656,13 @@ ИмяСхемы = "OneOf"; ОбъектПроверки = Новый Структура("type, valueA", "A", "Example"); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); ОбъектПроверки = Новый Структура("type, valueB", "B", 123); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0) @@ -656,7 +672,7 @@ Процедура Ошибка_anyOf() Экспорт ОбъектПроверки = Новый Структура("fieldC", true); ИмяСхемы = "AnyOf"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -669,19 +685,19 @@ ИмяСхемы = "AnyOf"; ОбъектПроверки = Новый Структура("fieldA", "Some text"); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); ОбъектПроверки = Новый Структура("fieldB", 42); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); ОбъектПроверки = Новый Структура("fieldA, fieldB","Some text", 42); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); @@ -690,7 +706,7 @@ Процедура Ошибка_AllOf() Экспорт ОбъектПроверки = Новый Структура("commonField", "Some text"); ИмяСхемы = "AllOf"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -705,7 +721,7 @@ ИмяСхемы = "AllOf"; ОбъектПроверки = Новый Структура("commonField, additionalField", "Some text", 42); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); @@ -715,7 +731,7 @@ ИмяСхемы = "ComplexValidation"; ОбъектПроверки = Новый Структура("id, typeA, valueA, status", "101", "example", 42, "active"); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); @@ -724,7 +740,7 @@ Процедура Ошибка_ВалидацияСложногоОбъекта() Экспорт ИмяСхемы = "ComplexValidation"; ОбъектПроверки = Новый Структура("id, typeA, valueA", "101", "example", 42); - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -738,7 +754,7 @@ Процедура Ошибка_ВалидацияNot() Экспорт ИмяСхемы = "Not"; ОбъектПроверки = "test"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -750,7 +766,7 @@ ИмяСхемы = "Not"; ОбъектПроверки = "Не test"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); @@ -760,7 +776,7 @@ ИмяСхемы = "different_types_enum"; ОбъектПроверки = Значение; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); @@ -769,7 +785,7 @@ Процедура Ошибка_ВалидацияПоДискриминатору(ОбъектПроверки, Ошибка) Экспорт ИмяСхемы = "discriminator"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлинуБольше(0) @@ -780,7 +796,7 @@ Процедура УспешнаяВалидацияДискриминатор(ОбъектПроверки) Экспорт ИмяСхемы = "discriminator"; - МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы); + МассивОшибок = Валидировать(ОбъектПроверки, ИмяСхемы).Ошибки; ЮТест.ОжидаетЧто(МассивОшибок) .ИмеетДлину(0); diff --git a/tests/fixtures/schema.json b/tests/fixtures/schema.json index 6a45fae..ea64968 100644 --- a/tests/fixtures/schema.json +++ b/tests/fixtures/schema.json @@ -472,6 +472,10 @@ "required": [ "type" ] + }, + "deprecated": { + "type": "string", + "deprecated": true } } }