Skip to content

Latest commit

 

History

History
175 lines (134 loc) · 7.16 KB

README.md

File metadata and controls

175 lines (134 loc) · 7.16 KB

Валидатор openApi контрактов для 1С

Chat on Telegram DevOps_onec GitHub release Статус порога качества Рейтинг сопровождаемости Статья на инфостарт

В современном мире OpenAPI (Swagger) является стандартом для описания RESTful API. Данная подсистема позволит вам проверять входящие и исходящие пакеты данных на соответствие контракту OpenAPI.

Установка

Для установки необходимо:

  1. Скачать последнюю версию подсистемы из раздела releases
  2. Сравнить/объединить полученные файлы с вашим проектом.

Использование

Тут все максимально просто.

Вызываем метод ВалидаторПакетов.Валидировать с параметрами:

  • МодельДанных - Строка, Число, Массив, Структура, Соответствие - Это ваш пакет, который вы хотите валидировать.
  • ИмяСхемы - Строка - Имя схемы данных по которой вы хотите валидировать модель.
  • Спецификация - Строка - Спецификация OpenAPI 3.0 в формате JSON.

Метод вернет массив с ошибками валидации. Если ошибок нет, то метод вернет пустой массив.

Пример использования

Как это выглядит в коде:

    СхемаOpenApi = "{
    |""openapi"": ""3.0.0"",
    |""info"": {
    |    ""title"": ""Example"",
    |    ""version"": ""1.0.0""
    |},
    |""paths"": {}
    |""components"": {
    |    ""schemas"": {
    |        ""complex_object"": {
    |            ""type"": ""object"",
    |            ""properties"": {
    |                ""name"": {
    |                    ""type"": ""string"",
    |                    ""minLength"": 3,
    |                    ""maxLength"": 10
    |                },
    |                ""age"": {
    |                    ""type"": ""integer"",
    |                    ""minimum"": 18,
    |                    ""maximum"": 100
    |                }
    |            },
    |            ""additionalProperties"": false,
    |            ""required"": [""name"", ""age""]
    |        }
    |    }
    |}";
    МодельДанных = Новый Структура("name, age", "John", 30);
    МассивОшибок = ВалидаторПакетов.Валидировать(МодельДанных, "complex_object", СхемаOpenApi);

	Если МассивОшибок.количество() = 0 Тогда
		Сообщить("Валидация прошла успешно!");
		Возврат;
	КонецЕсли;

	Для каждого Ошибка Из МассивОшибок Цикл
		Сообщить(Ошибка,СтатусСообщения.Внимание);
	КонецЦикла;

Обработка-пример

В конфигурации есть пример использования подсистемы. Посмотрите обработку ПримерРаботыВалидатора.

Возможности

Валидация строк

Реализована валидация строк по следующим правилам:

  • minLength
  • maxLength
  • pattern
  • format
    • date
      • Валидацию пройдет как строка в нужном формате, так и дата.
    • date-time
      • Валидацию пройдет как строка в нужном формате, так и дата.
    • email
    • hostname
    • ipv4
    • ipv6
    • uri
    • uuid
      • Валидацию пройдет как строка в нужном формате, так и УникальныйИдентификатор.
    • binary
    • byte
    • enum

Валидация чисел

Реализована валидация чисел по следующим правилам:

  • minimum
  • maximum
  • exclusiveMinimum
  • exclusiveMaximum
  • multipleOf
  • format
    • int32
    • int64
    • float
    • double

Валидация массивов

Реализована валидация массивов по следующим правилам:

  • items
  • minItems
  • maxItems
  • uniqueItems

Валидация объектов

Реализована валидация объектов по следующим правилам:

  • maxProperties
  • minProperties
  • required
  • additionalProperties

Общие свойства

  • nullable
  • $ref
  • deprecated
  • readOnly
  • writeOnly
  • oneOf
  • anyOf
  • allOf
  • not

Ближайшие планы

  • Добавить возможность валидации по URL спецификации.
  • Добавить обработку конструкций allOf, anyOf, oneOf, not.
  • Добавить поддержку свойства format для числовых типов.
  • Добавить валидацию формата binary для строк.
  • Добавить поддержку свойств readOnly, writeOnly.
  • Добавить поддержку свойства deprecated.
  • Добавить поддержку OpenAPI 3.1.

Как помочь проекту

Лицензия

MIT

Благодарности

  • Основная идея и большая часть решений была позаимствована из проекта swaggerDataValidation1C
  • Создателям YaXunit - за лучший фреймворк для юнит-тестирования в 1С.
  • Создателям jenkins-lib - за удобство и простоту в создании CI.