/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
tests/postdataparser.os
156 строк
6 KB
EvilBeaver
Исправлены строки запуска в тестах
22 авг 2021, 16:14
22 авг 2021, 16:14
c3e8fa1
Код
Авторство
О чём код?
#Использовать logos Перем юТест; Перем Лог; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ПроверитьРазборСодержимого"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПростойРазборСтрокиЗапроса"); Каталог = КаталогПрограммы(); ПодключитьВнешнююКомпоненту(ОбъединитьПути(Каталог, "oscript.dll")); Возврат ВсеТесты; КонецФункции Процедура ПередЗапускомТеста() Экспорт Лог = Логирование.ПолучитьЛог("oscript.tests.postdataparser"); Лог.УстановитьУровень(УровниЛога.Информация); КонецПроцедуры Процедура ПослеЗапускаТеста() Экспорт Лог = Неопределено; КонецПроцедуры // 1 параметр, 1 файл из двух частей. Функция ПолучитьПробноеСодержимое_1(Знач Ограничитель = "boundary") Возврат СтрЗаменить("--##boundary## |Content-Disposition: form-data; name=""text1"" | |xcxcxcxcxcxcxcxc |--##boundary## |Content-Disposition: form-data; name=""file[]""; filename=""some.txt"" |Content-Type: text/plain | |str1 |str2 |str3 |str4 |--##boundary## |Content-Disposition: form-data; name=""file[]""; filename=""some1.txt"" |Content-Type: text/plain | |str4 |уникода5 |--##boundary##--", "##boundary##", Ограничитель ); КонецФункции Функция ПолучитьДвоичныеДанные(Знач Содержимое) Перем ИмяФайла, Текст; ИмяФайла = ПолучитьИмяВременногоФайла(".txt"); Текст = Новый ТекстовыйДокумент; Текст.УстановитьТекст(Содержимое); Текст.Записать(ИмяФайла, КодировкаТекста.Utf8NoBom); Возврат Новый ДвоичныеДанные(ИмяФайла); КонецФункции Функция ДвоичныеДанныеВСтроку(Знач Данные) Перем ИмяФайла, Текст; ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Данные.Записать(ИмяФайла); Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ИмяФайла, КодировкаТекста.Utf8NoBom); Возврат Текст.ПолучитьТекст(); КонецФункции Процедура ТестДолжен_ПроверитьРазборСодержимого() Экспорт Перем Ограничитель; Ограничитель = "boundary"; ДвоичныеДанные = ПолучитьДвоичныеДанные( ПолучитьПробноеСодержимое_1(Ограничитель) ); Данные = Новый ДанныеPOSTЗапроса(ДвоичныеДанные, Ограничитель); юТест.ПроверитьРавенство(Данные.Параметры.Количество(), 1); юТест.ПроверитьРавенство(Данные.Params.Количество(), 1); юТест.ПроверитьРавенство(Данные.Файлы.Количество(), 1); юТест.ПроверитьРавенство(Данные.Files.Количество(), 1); юТест.ПроверитьРавенство( Данные.Параметры.Получить("text1"), "xcxcxcxcxcxcxcxc", "Получение нефайловых данных запроса" ); юТест.ПроверитьРавенство( Данные.Файлы.Получить("file[]").ИмяФайла, "some.txt", "Определение имени файла, состоящего из нескольких частей" ); юТест.ПроверитьРавенство( Данные.Файлы.Получить("file[]").Имя, "file[]", "Определение имени параметра файла" ); ТекстФайла = ДвоичныеДанныеВСтроку(Данные.Файлы.Получить("file[]").Данные); Текст = Новый ТекстовыйДокумент; Текст.УстановитьТекст(ТекстФайла); юТест.ПроверитьРавенство(Текст.КоличествоСтрок(), 5); юТест.ПроверитьРавенство(Текст.ПолучитьСтроку(1), "str1"); юТест.ПроверитьРавенство(Текст.ПолучитьСтроку(2), "str2"); юТест.ПроверитьРавенство(Текст.ПолучитьСтроку(3), "str3"); юТест.ПроверитьРавенство(Текст.ПолучитьСтроку(4), "str4str4"); юТест.ПроверитьРавенство(Текст.ПолучитьСтроку(5), "уникода5"); КонецПроцедуры Процедура ТестДолжен_ПроверитьПростойРазборСтрокиЗапроса() Экспорт // Прописываю ожидаемое поведение явно, не завязываясь на UrlEncode СтрокаШаблон = "абвгдеё " + "жзийклмнопрстуфхцчшщъыьэюя" ; СтрокаКодированная = "%D0%B0%D0%B1%D0%B2%D0%B3%D0%B4%D0%B5%D1%91++" + "%D0%B6%D0%B7%D0%B8%D0%B9%D0%BA%D0%BB%D0%BC" + "%D0%BD%D0%BE%D0%BF%D1%80%D1%81%D1%82%D1%83" + "%D1%84%D1%85%D1%86%D1%87%D1%88%D1%89%D1%8A" + "%D1%8B%D1%8C%D1%8D%D1%8E%D1%8F" ; Данные = Новый ДанныеPOSTЗапроса("some=123&word=" + СтрокаКодированная); юТест.ПроверитьРавенство(Данные.Параметры.Количество(), 2); юТест.ПроверитьРавенство(Данные.Параметры["some"], "123"); юТест.ПроверитьРавенство(Данные.Параметры["word"], СтрокаШаблон); КонецПроцедуры