From f7bbf0da78e4c5c215ddb6a58fa632c004f7fb8c Mon Sep 17 00:00:00 2001 From: Vladimir Bondarevskiy Date: Tue, 12 Nov 2019 15:51:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sonar-project.properties | 4 +- src/Configuration.xml | 12 +- src/Ext/HomePageWorkArea.xml | 11 +- {src/DataProcessors => tests}/Тесты.xml | 510 ++--- .../Тесты/Ext/ObjectModule.bsl | 1724 ++++++++--------- .../Тесты/Forms/Форма.xml | 42 +- .../Тесты/Forms/Форма/Ext/Form.xml | 293 +-- .../Тесты/Forms/Форма/Ext/Form/Module.bsl | 46 +- 8 files changed, 1323 insertions(+), 1319 deletions(-) rename {src/DataProcessors => tests}/Тесты.xml (83%) rename {src/DataProcessors => tests}/Тесты/Ext/ObjectModule.bsl (98%) rename {src/DataProcessors => tests}/Тесты/Forms/Форма.xml (95%) rename {src/DataProcessors => tests}/Тесты/Forms/Форма/Ext/Form.xml (97%) rename {src/DataProcessors => tests}/Тесты/Forms/Форма/Ext/Form/Module.bsl (96%) diff --git a/sonar-project.properties b/sonar-project.properties index f352154..4b5d0df 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -9,8 +9,8 @@ sonar.projectName=connector # If not set, SonarQube starts looking for source code from the directory containing # the sonar-project.properties file. -sonar.sources=./src/CommonModules -sonar.tests=./src/DataProcessors +sonar.sources=./src +sonar.tests=./tests # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 diff --git a/src/Configuration.xml b/src/Configuration.xml index 741300f..d7bc9d0 100644 --- a/src/Configuration.xml +++ b/src/Configuration.xml @@ -37,7 +37,7 @@ Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 - Version8_3_15 + Version8_3_16 ManagedApplication PlatformApplication @@ -156,7 +156,16 @@ AudioAndVibrationPlayback false + + InstallPackages + false + + + AllowOSBackup + true + + Normal @@ -192,7 +201,6 @@ Русский КоннекторHTTP - Тесты \ No newline at end of file diff --git a/src/Ext/HomePageWorkArea.xml b/src/Ext/HomePageWorkArea.xml index d85acbe..a7ccc23 100644 --- a/src/Ext/HomePageWorkArea.xml +++ b/src/Ext/HomePageWorkArea.xml @@ -1,14 +1,5 @@  TwoColumnsEqualWidth - - -
DataProcessor.Тесты.Form.Форма
- 10 - - true - -
-
- +
\ No newline at end of file diff --git a/src/DataProcessors/Тесты.xml b/tests/Тесты.xml similarity index 83% rename from src/DataProcessors/Тесты.xml rename to tests/Тесты.xml index f87ed63..136ffe4 100644 --- a/src/DataProcessors/Тесты.xml +++ b/tests/Тесты.xml @@ -1,255 +1,257 @@ - - - - - - 2038258f-6d05-4c63-9d53-64318f0dc7a9 - aec04a99-eca3-4d64-b941-415d281e5edc - - - 82a4f147-786e-47b1-b6be-1b56f22f1759 - 1f1b9f73-f8f1-4230-b3d1-69109166848b - - - - Тесты - - - ru - Тесты - - - - true - DataProcessor.Тесты.Form.Форма - - false - - - - - - - ТестироватьСоединениеЧерезПрокси - - - ru - Тестировать соединение через прокси - - - - - xs:boolean - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - Логин - - - ru - Логин - - - - - xs:string - - 0 - Variable - - - false - - - - false - - false - false - - - ShowError - Items - - - Auto - Auto - - - Auto - - - - - Пароль - - - ru - Пароль - - - - - xs:string - - 0 - Variable - - - false - - - - false - - false - false - - - ShowError - Items - - - Auto - Auto - - - Auto - - - - - ПроксиСервер - - - ru - Прокси сервер - - - - - xs:string - - 0 - Variable - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ПроксиПорт - - - ru - Прокси порт - - - - - xs:decimal - - 10 - 0 - Any - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - ТестироватьПолучениеСпискаРелизовВСайта1С - - - ru - Тестировать получение списка релизов в сайта 1С - - - - - xs:boolean - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - -
Форма
-
-
+ + + + + + e41aff26-25cf-4bb6-b6c1-3f478a75f374 + 006872cd-054b-11ea-4093-9801a79f9261 + + + 006872cb-054b-11ea-4093-9801a79f9261 + 006872cc-054b-11ea-4093-9801a79f9261 + + + + Тесты + + + ru + Тесты + + + + ExternalReport.Тесты.Form.Форма + + + + + + + + + + + + ТестироватьСоединениеЧерезПрокси + + + ru + Тестировать соединение через прокси + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + Логин + + + ru + Логин + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + Пароль + + + ru + Пароль + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ПроксиСервер + + + ru + Прокси сервер + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ПроксиПорт + + + ru + Прокси порт + + + + + xs:decimal + + 10 + 0 + Any + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + ТестироватьПолучениеСпискаРелизовВСайта1С + + + ru + Тестировать получение списка релизов в сайта 1С + + + + + xs:boolean + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+
+
\ No newline at end of file diff --git a/src/DataProcessors/Тесты/Ext/ObjectModule.bsl b/tests/Тесты/Ext/ObjectModule.bsl similarity index 98% rename from src/DataProcessors/Тесты/Ext/ObjectModule.bsl rename to tests/Тесты/Ext/ObjectModule.bsl index 3512269..64bedf6 100644 --- a/src/DataProcessors/Тесты/Ext/ObjectModule.bsl +++ b/tests/Тесты/Ext/ObjectModule.bsl @@ -1,862 +1,862 @@ -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда - -#Область ПрограммныйИнтерфейс - -// Запускает прогон тестов -// -Процедура ВыполнитьТестыНаСервере() Экспорт - - Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса(); - Тест_РазобратьURLСПараметромЗапросаБезЗначения(); - Тест_РазобратьURLСЯвноЗаданнымПортом(); - Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями(); - Тест_РазобратьURLСФрагментом(); - Тест_РазобратьURLСХостомВФорматеIPv6(); - Тест_РазобратьПростойURL(); - - Тест_HMAC(); - - Если ТестироватьСоединениеЧерезПрокси Тогда - Тест_СоединениеЧерезПрокси(); - КонецЕсли; - Если ТестироватьПолучениеСпискаРелизовВСайта1С Тогда - Тест_ПолучениеСпискаРелизовВСайта1С(); - КонецЕсли; - Тест_ПараметрыЗаписиJson(); - Тест_URLБезСхемы(); - Тест_ПередачаПараметровВСтрокуЗапроса(); - Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный(); - Тест_РезультатКакJsonGet(); - Тест_РезультатКакJsonPost(); - Тест_РезультатКакДвоичныеДанные(); - Тест_РезультатКакТекст(); - Тест_ПередачаПроизвольныхЗаголовков(); - Тест_ОтправкаДанныхФормы(); - Тест_ОтправкаJson(); - Тест_Таймаут(); - Тест_BasicAuth(); - Тест_DigestAuth(); -#Если Не МобильноеПриложениеСервер Тогда - Тест_ПолучитьGZip(); -#КонецЕсли - Тест_GetJson(); - Тест_PostJson(); - Тест_PostИРедирект(); - Тест_GetJsonСтруктура(); - Тест_PutJson(); - Тест_DeleteJson(); - Тест_GetУспешныйРедиректОтносительныйАдрес(); - Тест_GetУспешныйРедиректАбсолютныйАдрес(); - Тест_GetЗацикленныйРедирект(); - Тест_GetОтключенныйРедирект(); - Тест_Ошибка404(); - Тест_РаботаССессиями(); - Тест_Options(); - Тест_Head(); - Тест_Delete(); - Тест_Patch(); - Тест_УстановкаCookies(); - Тест_ОтправитьCookies(); - Тест_POST_MultipartFormData_ТолькоФайл(); - Тест_POST_MultipartFormData_ФайлыИПоляФормы(); - Тест_ПараметрыЗапросаТолькоКлюч(); - Тест_ОтправкаXml(); - Тест_СложныеПараметрыЗапроса(); - Тест_PostПустойJson(); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область Тесты - -Процедура Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса() - - СтруктураURL = КоннекторHTTP.РазобратьURL( - "https://httpbin.org/anything?jql=worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01&j&i=2"); - - УтверждениеВерно(СтруктураURL.Схема, "https"); - УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); - УтверждениеВерно(СтруктураURL.Путь, "/anything"); - УтверждениеВерно(СтруктураURL.Порт, 0); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["jql"], "worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01"); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["j"], Неопределено); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["i"], "2"); - - ТестПройден("Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса"); - -КонецПроцедуры - -Процедура Тест_РазобратьURLСПараметромЗапросаБезЗначения() - - СтруктураURL = КоннекторHTTP.РазобратьURL("https://httpbin.org/get?key"); - - УтверждениеВерно(СтруктураURL.Схема, "https"); - УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); - УтверждениеВерно(СтруктураURL.Путь, "/get"); - УтверждениеВерно(СтруктураURL.Порт, 0); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["key"], Неопределено); - - ТестПройден("Тест_РазобратьURLСПараметромЗапросаБезЗначения"); - -КонецПроцедуры - -Процедура Тест_РазобратьURLСЯвноЗаданнымПортом() - - СтруктураURL = КоннекторHTTP.РазобратьURL("https://httpbin.org:443/get?key"); - - УтверждениеВерно(СтруктураURL.Схема, "https"); - УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); - УтверждениеВерно(СтруктураURL.Путь, "/get"); - УтверждениеВерно(СтруктураURL.Порт, 443); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["key"], Неопределено); - - ТестПройден("Тест_РазобратьURLСЯвноЗаданнымПортом"); - -КонецПроцедуры - -Процедура Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями() - - СтруктураURL = КоннекторHTTP.РазобратьURL("http://httpbin.org/anything?i=v1&j=w1&j=w2&i=v2&i=v3"); - - УтверждениеВерно(СтруктураURL.Схема, "http"); - УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); - УтверждениеВерно(СтруктураURL.Путь, "/anything"); - УтверждениеВерно(СтруктураURL.Порт, 0); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтрСоединить(СтруктураURL.ПараметрыЗапроса["i"], ", "), "v1, v2, v3"); - УтверждениеВерно(СтрСоединить(СтруктураURL.ПараметрыЗапроса["j"], ", "), "w1, w2"); - - ТестПройден("Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями"); - -КонецПроцедуры - -Процедура Тест_РазобратьURLСФрагментом() - - СтруктураURL = КоннекторHTTP.РазобратьURL("https://en.wikipedia.org/wiki/1C_Company#Products"); - - УтверждениеВерно(СтруктураURL.Схема, "https"); - УтверждениеВерно(СтруктураURL.Сервер, "en.wikipedia.org"); - УтверждениеВерно(СтруктураURL.Путь, "/wiki/1C_Company"); - УтверждениеВерно(СтруктураURL.Порт, 0); - УтверждениеВерно(СтруктураURL.Фрагмент, "Products"); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); - - ТестПройден("Тест_РазобратьURLСФрагментом"); - -КонецПроцедуры - -Процедура Тест_РазобратьURLСХостомВФорматеIPv6() - - СтруктураURL = КоннекторHTTP.РазобратьURL("http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/test"); - - УтверждениеВерно(СтруктураURL.Схема, "http"); - УтверждениеВерно(СтруктураURL.Сервер, "[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]"); - УтверждениеВерно(СтруктураURL.Путь, "/test"); - УтверждениеВерно(СтруктураURL.Порт, 8080); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); - - ТестПройден("Тест_РазобратьURLСХостомВФорматеIPv6"); - -КонецПроцедуры - -Процедура Тест_РазобратьПростойURL() - - СтруктураURL = КоннекторHTTP.РазобратьURL("http://1c.ru"); - - УтверждениеВерно(СтруктураURL.Схема, "http"); - УтверждениеВерно(СтруктураURL.Сервер, "1c.ru"); - УтверждениеВерно(СтруктураURL.Путь, "/"); - УтверждениеВерно(СтруктураURL.Порт, 0); - УтверждениеВерно(СтруктураURL.Фрагмент, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); - УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); - УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); - - ТестПройден("Тест_РазобратьПростойURL"); - -КонецПроцедуры - - -Процедура Тест_HMAC() - - Ключ = ПолучитьДвоичныеДанныеИзСтроки("Секретный ключ", КодировкаТекста.UTF8, Ложь); - КлючБольше64 = ПолучитьДвоичныеДанныеИзСтроки( - "1234567890123456789012345678901234567890123456789012345678901234567890", КодировкаТекста.UTF8, Ложь); - - ПустыеДанные = ПолучитьДвоичныеДанныеИзСтроки("", КодировкаТекста.UTF8, Ложь); - Данные = ПолучитьДвоичныеДанныеИзСтроки("Какие-то данные", КодировкаТекста.UTF8, Ложь); - - УтверждениеВерно( - КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.MD5), - ПолучитьДвоичныеДанныеИзHexСтроки("1b1ec4166a11c03b3afefaea442e7709")); - УтверждениеВерно( - КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.MD5), - ПолучитьДвоичныеДанныеИзHexСтроки("ed5b2d6b9f573cd46e8f8d1d1e8b70e3")); - - УтверждениеВерно( - КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.SHA1), - ПолучитьДвоичныеДанныеИзHexСтроки("355aa0587050d711f4ca9af6930c736363a88d34")); - УтверждениеВерно( - КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.SHA1), - ПолучитьДвоичныеДанныеИзHexСтроки("7e8f9d7ebbe81e508a39f410e157fc6e714b3371")); - - УтверждениеВерно( - КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.SHA256), - ПолучитьДвоичныеДанныеИзHexСтроки("70907d03476d72b7276897718590a49f6ce56991112fb5a0e9ed41652b2aab6c")); - УтверждениеВерно( - КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.SHA256), - ПолучитьДвоичныеДанныеИзHexСтроки("80be8107de7879f028c8bfe97e10b859785530dd19dfc41a4d6962ce4c2fc130")); - - ТестПройден("Тест_HMAC"); - -КонецПроцедуры - - -Процедура Тест_СоединениеЧерезПрокси() - - Прокси = Новый ИнтернетПрокси; - Прокси.Установить("http", ПроксиСервер, ПроксиПорт); - КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Прокси", Прокси)); - - ТестПройден("Тест_СоединениеЧерезПрокси"); - -КонецПроцедуры - -Процедура Тест_ПараметрыЗаписиJson() - - ПараметрыЗаписиJSON = Новый Структура("ПереносСтрок", ПереносСтрокJSON.Нет); - Json = Новый Структура; - Json.Вставить("field", "value"); - Json.Вставить("field2", "value2"); - Результат = КоннекторHTTP.PostJson("http://httpbin.org/anything", Json, Новый Структура("ПараметрыЗаписиJSON", ПараметрыЗаписиJSON)); - УтверждениеВерно(Результат["data"], "{""field"":""value"",""field2"":""value2""}"); - - ТестПройден("Тест_ПараметрыЗаписиJson"); - -КонецПроцедуры - -Процедура Тест_URLБезСхемы() - - Ответ = КоннекторHTTP.Get("httpbin.org/get"); - Результат = КоннекторHTTP.КакJson(Ответ); - УтверждениеВерно(Ответ.URL, "http://httpbin.org/get"); - - ТестПройден("Тест_URLБезСхемы"); - -КонецПроцедуры - -Процедура Тест_ПередачаПараметровВСтрокуЗапроса() - - ПараметрыЗапроса = Новый Структура; - ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ",")); - ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ=")); - - Ответ = КоннекторHTTP.Get("https://httpbin.org/anything/params", ПараметрыЗапроса); - Результат = КоннекторHTTP.КакJson(Ответ); - - УтверждениеВерно(Ответ.URL, "https://httpbin.org/anything/params?name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&name=%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2&salary=100000"); - УтверждениеВерно(Результат["url"], "https://httpbin.org/anything/params?name=Иванов&name=Петров&salary=100000"); - УтверждениеВерно(Результат["args"]["salary"], "100000"); - УтверждениеВерно(СтрСоединить(Результат["args"]["name"], ","), "Иванов,Петров"); - - ТестПройден("Тест_ПередачаПараметровВСтрокуЗапроса"); - -КонецПроцедуры - -Процедура Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный() - - ПараметрыЗапроса = Новый Структура; - ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ",")); - ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ=")); - - Результат = КоннекторHTTP.GetJson("https://httpbin.org/anything/params?post=Программист", ПараметрыЗапроса); - - УтверждениеВерно(Результат["args"]["salary"], "100000"); - УтверждениеВерно(Результат["args"]["post"], "Программист"); - УтверждениеВерно(СтрСоединить(Результат["args"]["name"], ","), "Иванов,Петров"); - - ТестПройден("Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный"); - -КонецПроцедуры - -Процедура Тест_РезультатКакJsonGet() - - Результат = КоннекторHTTP.GetJson("https://httpbin.org/get"); - УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); - - ТестПройден("Тест_РезультатКакJsonGet"); - -КонецПроцедуры - -Процедура Тест_РезультатКакJsonPost() - - Результат = КоннекторHTTP.КакJson(КоннекторHTTP.Post("https://httpbin.org/post")); - УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); - - ТестПройден("Тест_РезультатКакJsonPost"); - -КонецПроцедуры - -Процедура Тест_РезультатКакДвоичныеДанные() - - Результат = КоннекторHTTP.КакДвоичныеДанные(КоннекторHTTP.Get("http://httpbin.org/image/png")); - - УтверждениеВерно(ТипЗнч(Результат), Тип("ДвоичныеДанные")); - УтверждениеВерно(ПосчитатьMD5(Результат), "5cca6069f68fbf739fce37e0963f21e7"); - - ТестПройден("Тест_РезультатКакДвоичныеДанные"); - -КонецПроцедуры - -Процедура Тест_РезультатКакТекст() - - Результат = КоннекторHTTP.КакТекст(КоннекторHTTP.Get("http://httpbin.org/encoding/utf8")); - УтверждениеВерно(СтрНайти(Результат, "Зарегистрируйтесь сейчас на Десятую Международную"), 3931); - - ТестПройден("Тест_РезультатКакТекст"); - -КонецПроцедуры - -Процедура Тест_ПередачаПроизвольныхЗаголовков() - - Заголовки = Новый Соответствие; - Заголовки.Вставить("X-My-Header", "Hello"); - Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Заголовки", Заголовки)); - - УтверждениеВерно(Результат["headers"]["X-My-Header"], "Hello"); - - ТестПройден("Тест_ПередачаПроизвольныхЗаголовков"); - -КонецПроцедуры - -Процедура Тест_ОтправкаДанныхФормы() - - Данные = Новый Структура; - Данные.Вставить("comments", "Постучать в дверь"); - Данные.Вставить("custemail", "vasya@mail.ru"); - Данные.Вставить("custname", "Вася"); - Данные.Вставить("custtel", "112"); - Данные.Вставить("delivery", "20:20"); - Данные.Вставить("size", "medium"); - Данные.Вставить("topping", СтрРазделить("bacon,mushroom", ",")); - - Ответ = КоннекторHTTP.Post("http://httpbin.org/post", Данные); - УтверждениеВерно(Ответ.URL, "http://httpbin.org/post"); - Результат = КоннекторHTTP.КакJson(Ответ); - УтверждениеВерно(Результат["form"]["size"], "medium"); - УтверждениеВерно(Результат["form"]["comments"], "Постучать в дверь"); - УтверждениеВерно(Результат["form"]["custemail"], "vasya@mail.ru"); - УтверждениеВерно(Результат["form"]["delivery"], "20:20"); - УтверждениеВерно(Результат["form"]["custtel"], "112"); - - ТестПройден("Тест_ОтправкаДанныхФормы"); - -КонецПроцедуры - -Процедура Тест_ОтправкаJson() - - Json = Новый Структура; - Json.Вставить("Сотрудник", "Иванов Иван Петрович"); - Json.Вставить("Должность", "Разнорабочий"); - - Результат = КоннекторHTTP.PostJson("http://httpbin.org/post", Json); - - УтверждениеВерно(Результат["json"]["Сотрудник"], "Иванов Иван Петрович"); - УтверждениеВерно(Результат["json"]["Должность"], "Разнорабочий"); - - Результат = КоннекторHTTP.PutJson("http://httpbin.org/put", Json); - УтверждениеВерно(Результат["json"]["Сотрудник"], "Иванов Иван Петрович"); - УтверждениеВерно(Результат["json"]["Должность"], "Разнорабочий"); - - ТестПройден("Тест_ОтправкаJson"); - -КонецПроцедуры - -Процедура Тест_Таймаут() - - Попытка - Ответ = КоннекторHTTP.Get("https://httpbin.org/delay/10", Неопределено, Новый Структура("Таймаут", 1)); - Исключение - ВерноеИсключение(ИнформацияОбОшибке(), СтрРазделить("Превышено время ожидания|Timeout exceeded", "|")); - КонецПопытки; - - ТестПройден("Тест_Таймаут"); - -КонецПроцедуры - -Процедура Тест_ПолучитьGZip() - - Результат = КоннекторHTTP.GetJson("http://httpbin.org/gzip"); - УтверждениеВерно(Результат["gzipped"], Истина); - - ТестПройден("Тест_ПолучитьGZip"); - -КонецПроцедуры - -Процедура Тест_BasicAuth() - - Результат = КоннекторHTTP.GetJson("https://user:pass@httpbin.org/basic-auth/user/pass"); - УтверждениеВерно(Результат["authenticated"], Истина); - УтверждениеВерно(Результат["user"], "user"); - - Аутентификация = Новый Структура("Пользователь, Пароль", "user", "pass"); - Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/basic-auth/user/pass", - Неопределено, - Новый Структура("Аутентификация", Аутентификация)); - УтверждениеВерно(Результат["authenticated"], Истина); - УтверждениеВерно(Результат["user"], "user"); - - Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "user", "pass", "Basic"); - Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/basic-auth/user/pass", - Неопределено, - Новый Структура("Аутентификация", Аутентификация)); - УтверждениеВерно(Результат["authenticated"], Истина); - УтверждениеВерно(Результат["user"], "user"); - - ТестПройден("Тест_BasicAuth"); - -КонецПроцедуры - -Процедура Тест_DigestAuth() - - Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "user", "pass", "Digest"); - Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/digest-auth/auth/user/pass", - Неопределено, - Новый Структура("Аутентификация", Аутентификация)); - УтверждениеВерно(Результат["authenticated"], Истина); - УтверждениеВерно(Результат["user"], "user"); - - Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "guest", "guest", "Digest"); - Результат = КоннекторHTTP.Get( - "https://jigsaw.w3.org/HTTP/Digest/", - Неопределено, - Новый Структура("Аутентификация", Аутентификация)); - УтверждениеВерно(Результат.КодСостояния, 200); - - ТестПройден("Тест_DigestAuth"); - -КонецПроцедуры - -Процедура Тест_GetJson() - - Результат = КоннекторHTTP.GetJson("https://httpbin.org/get"); - УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); - - ТестПройден("Тест_GetJson"); - -КонецПроцедуры - -Процедура Тест_GetJsonСтруктура() - - ПараметрыПреобразованияJSON = Новый Структура("ПрочитатьВСоответствие", Ложь); - Результат = КоннекторHTTP.GetJson( - "http://httpbin.org/json", Неопределено, Новый Структура("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON)); - УтверждениеВерно(Результат.slideshow.author, "Yours Truly"); - УтверждениеВерно(Результат.slideshow.date, "date of publication"); - УтверждениеВерно(Результат.slideshow.slides.Количество(), 2); - УтверждениеВерно(Результат.slideshow.title, "Sample Slide Show"); - - ТестПройден("Тест_GetJsonСтруктура"); - -КонецПроцедуры - -Процедура Тест_PostJson() - - ПараметрыПреобразованияJSON = Новый Структура; - ПараметрыПреобразованияJSON.Вставить("ИменаСвойствСоЗначениямиДата", "Дата"); - - Json = Новый Структура; - Json.Вставить("Дата", '20190121002400'); - Json.Вставить("Число", 5); - Json.Вставить("Булево", True); - Json.Вставить("Строка", "Привет"); - - Результат = КоннекторHTTP.PostJson( - "https://httpbin.org/post", - Json, - Новый Структура("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON)); - УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); - УтверждениеВерно(Результат["json"]["Дата"], '20190121002400'); - УтверждениеВерно(Результат["json"]["Число"], 5); - УтверждениеВерно(Результат["json"]["Булево"], True); - УтверждениеВерно(Результат["json"]["Строка"], "Привет"); - - ТестПройден("Тест_PostJson"); - -КонецПроцедуры - -Процедура Тест_PostИРедирект() - - Ответ = КоннекторHTTP.Get("https://httpbin.org/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301"); - УтверждениеВерно(Ответ.КодСостояния, 200); - - Ответ = КоннекторHTTP.Post("https://httpbin.org/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301"); - УтверждениеВерно(Ответ.КодСостояния, 301); - - ТестПройден("Тест_PostИРедирект"); - -КонецПроцедуры - -Процедура Тест_PutJson() - - Результат = КоннекторHTTP.PutJson("https://httpbin.org/put", Новый Структура("Название", "КоннекторHTTP")); - УтверждениеВерно(Результат["url"], "https://httpbin.org/put"); - УтверждениеВерно(Результат["json"]["Название"], "КоннекторHTTP"); - - ТестПройден("Тест_PutJson"); - -КонецПроцедуры - -Процедура Тест_DeleteJson() - - Результат = КоннекторHTTP.DeleteJson("https://httpbin.org/delete", Новый Структура("Название", "КоннекторHTTP")); - УтверждениеВерно(Результат["url"], "https://httpbin.org/delete"); - УтверждениеВерно(Результат["json"]["Название"], "КоннекторHTTP"); - - ТестПройден("Тест_DeleteJson"); - -КонецПроцедуры - -Процедура Тест_GetУспешныйРедиректОтносительныйАдрес() - - Ответ = КоннекторHTTP.Get("https://httpbin.org/relative-redirect/6"); - Результат = КоннекторHTTP.КакJson(Ответ); - - УтверждениеВерно(Ответ.КодСостояния, 200); - УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); - - ТестПройден("Тест_GetУспешныйРедиректОтносительныйАдрес"); - -КонецПроцедуры - -Процедура Тест_GetУспешныйРедиректАбсолютныйАдрес() - - Ответ = КоннекторHTTP.Get("https://httpbin.org/absolute-redirect/6"); - Результат = КоннекторHTTP.КакJson(Ответ); - - УтверждениеВерно(Ответ.КодСостояния, 200); - УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); - - ТестПройден("Тест_GetУспешныйРедиректАбсолютныйАдрес"); - -КонецПроцедуры - -Процедура Тест_GetЗацикленныйРедирект() - - Попытка - Результат = КоннекторHTTP.КакJson(КоннекторHTTP.Get("http://httpbin.org/redirect/31")); - Исключение - ВерноеИсключение(ИнформацияОбОшибке(), "СлишкомМногоПеренаправлений"); - КонецПопытки; - - ТестПройден("Тест_GetЗацикленныйРедирект"); - -КонецПроцедуры - -Процедура Тест_GetОтключенныйРедирект() - - Параметры = Новый Структура("РазрешитьПеренаправление", Ложь); - Ответ = КоннекторHTTP.Get( - "http://httpbin.org/redirect-to?url=http%3A%2F%2Fhttpbin.org%2Fget&status_code=307", - Неопределено, - Параметры); - - УтверждениеВерно(Ответ.КодСостояния, 307); - - ТестПройден("Тест_GetОтключенныйРедирект"); - -КонецПроцедуры - -Процедура Тест_Ошибка404() - - Ответ = КоннекторHTTP.Get("http://httpbin.org/status/404"); - - УтверждениеВерно(Ответ.КодСостояния, 404); - - ТестПройден("Тест_Ошибка404"); - -КонецПроцедуры - -Процедура Тест_РаботаССессиями() - - Сессия = КоннекторHTTP.СоздатьСессию(); - КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://httpbin.org/cookies/set/key/value"); - Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://httpbin.org/cookies"); - Результат = КоннекторHTTP.КакJson(Ответ); - - УтверждениеВерно(Результат["cookies"]["key"], "value"); - - ТестПройден("Тест_РаботаССессиями"); - -КонецПроцедуры - -Процедура Тест_ПолучениеСпискаРелизовВСайта1С() - - Сессия = КоннекторHTTP.СоздатьСессию(); - Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://releases.1c.ru/total"); - - Данные = Новый Структура; - Данные.Вставить("execution", ИзвлечьExecution(Ответ)); - Данные.Вставить("username", Логин); - Данные.Вставить("password", Пароль); - Данные.Вставить("_eventId", "submit"); - Данные.Вставить("geolocation", ""); - Данные.Вставить("submit", "Войти"); - Данные.Вставить("rememberMe", "on"); - - Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "POST", Ответ.URL, Новый Структура("Данные", Данные)); - - УтверждениеВерно(Ответ.URL, "https://releases.1c.ru/total"); - УтверждениеВерно(Ответ.КодСостояния, 200); - - ТестПройден("Тест_ПолучениеСпискаРелизовВСайта1С"); - -КонецПроцедуры - -Процедура Тест_Options() - - Ответ = КоннекторHTTP.Options("http://httpbin.org/anything"); - - УтверждениеВерно(Ответ.КодСостояния, 200); - - ТестПройден("Тест_Options"); - -КонецПроцедуры - -Процедура Тест_Head() - - Ответ = КоннекторHTTP.Head("http://httpbin.org/anything"); - - УтверждениеВерно(Ответ.КодСостояния, 200); - - ТестПройден("Тест_Head"); - -КонецПроцедуры - -Процедура Тест_Delete() - - Ответ = КоннекторHTTP.Delete("http://httpbin.org/delete"); - - УтверждениеВерно(Ответ.КодСостояния, 200); - - ТестПройден("Тест_Delete"); - -КонецПроцедуры - -Процедура Тест_Patch() - - Ответ = КоннекторHTTP.Patch("http://httpbin.org/patch"); - - УтверждениеВерно(Ответ.КодСостояния, 200); - - ТестПройден("Тест_Patch"); - -КонецПроцедуры - -Процедура Тест_УстановкаCookies() - - Результат = КоннекторHTTP.GetJson("http://httpbin.org/cookies/set/PHPSESSID/72a68cc1e55a4fbb9c0b8dbbeb49ca4f"); - - УтверждениеВерно(Результат["cookies"]["PHPSESSID"], "72a68cc1e55a4fbb9c0b8dbbeb49ca4f"); - - ТестПройден("Тест_УстановкаCookies"); - -КонецПроцедуры - -Процедура Тест_ОтправитьCookies() - - Cookies = Новый Массив; - Cookies.Добавить(Новый Структура("Наименование,Значение", "k1", Строка(Новый УникальныйИдентификатор))); - Cookies.Добавить(Новый Структура("Наименование,Значение", "k2", Строка(Новый УникальныйИдентификатор))); - Ответ = КоннекторHTTP.Get("http://httpbin.org/cookies",, Новый Структура("Cookies", Cookies)); - Результат = КоннекторHTTP.КакJson(Ответ); - - УтверждениеВерно(Результат["cookies"]["k1"], Cookies[0].Значение); - УтверждениеВерно(Результат["cookies"]["k2"], Cookies[1].Значение); - - ТестПройден("Тест_ОтправитьCookies"); - -КонецПроцедуры - -Процедура Тест_POST_MultipartFormData_ТолькоФайл() - - Файлы = Новый Структура; - Файлы.Вставить("Имя", "f1"); - Файлы.Вставить("ИмяФайла", "file1.txt"); - Файлы.Вставить("Данные", Base64Значение("0J/RgNC40LLQtdGCLCDQnNC40YA=")); - Файлы.Вставить("Тип", "text/plain"); - - Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы", Файлы)); - - УтверждениеВерно(Результат["files"]["f1"], "Привет, Мир"); - - ТестПройден("Тест_POST_MultipartFormData_ТолькоФайл"); - -КонецПроцедуры - -Процедура Тест_POST_MultipartFormData_ФайлыИПоляФормы() - - Файлы = Новый Массив; - Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f1", Base64Значение("ZmlsZTE="), "file1.txt")); - Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f2", Base64Значение("ZmlsZTI="), "file2.txt")); - - Данные = Новый Структура("field1,field2", "value1", "Значение2"); - - Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы,Данные", Файлы, Данные)); - - УтверждениеВерно(Результат["files"]["f1"], "file1"); - УтверждениеВерно(Результат["files"]["f2"], "file2"); - УтверждениеВерно(Результат["form"]["field1"], "value1"); - УтверждениеВерно(Результат["form"]["field2"], "Значение2"); - - ТестПройден("Тест_POST_MultipartFormData_ФайлыИПоляФормы"); - -КонецПроцедуры - -Процедура Тест_ПараметрыЗапросаТолькоКлюч() - - Результат = КоннекторHTTP.GetJson("https://httpbin.org/get?key"); - УтверждениеВерно(Результат["args"]["key"], ""); - - ТестПройден("Тест_ПараметрыЗапросаТолькоКлюч"); - -КонецПроцедуры - -Процедура Тест_ОтправкаXml() - - XML = - " - | - | - | - | 2019-07-05 - | - | - |"; - - Заголовки = Новый Соответствие; - Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8"); - Заголовки.Вставить("SOAPAction", "http://web.cbr.ru/GetCursOnDate"); - Ответ = КоннекторHTTP.Post( - "https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx", - XML, - Новый Структура("Заголовки", Заголовки)); - - УтверждениеВерно(Ответ.КодСостояния, 200); - УтверждениеВерно(Ответ.Заголовки.Получить("Content-Type"), "text/xml; charset=utf-8"); - - ТестПройден("Тест_ОтправкаXml"); - -КонецПроцедуры - -Процедура Тест_СложныеПараметрыЗапроса() - - Результат = КоннекторHTTP.GetJson( - "https://httpbin.org/anything?jql=worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01&j&i=2"); - УтверждениеВерно(Результат["args"]["jql"], "worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01"); - УтверждениеВерно(Результат["args"]["j"], ""); - УтверждениеВерно(Результат["args"]["i"], "2"); - - ТестПройден("Тест_СложныеПараметрыЗапроса"); - -КонецПроцедуры - -Процедура Тест_PostПустойJson() - - Json = Новый Структура; - Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Json); - УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); - УтверждениеВерно(ТипЗнч(Результат["json"]), Тип("Соответствие")); - - ТестПройден("Тест_PostПустойJson"); - -КонецПроцедуры - -#КонецОбласти - -Функция ИзвлечьExecution(Ответ) - - HTML = КоннекторHTTP.КакТекст(Ответ); - - Начало = СтрНайти(HTML, "name=""execution"""); - Конец = СтрНайти(HTML, ">", НаправлениеПоиска.СНачала, Начало); - КороткаяСтрока = Сред(HTML, Начало, Конец - Начало); - - Начало = СтрНайти(КороткаяСтрока, "value=""") + СтрДлина("value="""); - Конец = СтрНайти(КороткаяСтрока, """", НаправлениеПоиска.СНачала, Начало); - - Возврат Сред(КороткаяСтрока, Начало, Конец - Начало); - -КонецФункции - -Функция ПосчитатьMD5(Данные) - - Хеширование = Новый ХешированиеДанных(ХешФункция.MD5); - Хеширование.Добавить(Данные); - - Возврат НРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеширование.ХешСумма)); - -КонецФункции - -Процедура УтверждениеВерно(ЛевоеЗначение, ПравоеЗначение, Пояснение = "") - - Если ЛевоеЗначение <> ПравоеЗначение Тогда - ВызватьИсключение(СтрШаблон("<%1> не равно <%2>: %3", ЛевоеЗначение, ПравоеЗначение, Пояснение)); - КонецЕсли; - -КонецПроцедуры - -Процедура ВерноеИсключение(ИнформацияОбОшибке, ОжидаемоеИсключение) - - ТекстИсключения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); - Если ТипЗнч(ОжидаемоеИсключение) = Тип("Массив") Тогда - ТекстНайден = Ложь; - Для Каждого Элемент Из ОжидаемоеИсключение Цикл - Если СтрНайти(ТекстИсключения, Элемент) Тогда - ТекстНайден = Истина; - Прервать; - КонецЕсли; - КонецЦикла; - - Если Не ТекстНайден Тогда - ВызватьИсключение(ТекстИсключения); - КонецЕсли - Иначе - Если Не СтрНайти(ТекстИсключения, ОжидаемоеИсключение) Тогда - ВызватьИсключение(ТекстИсключения); - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - -Процедура ТестПройден(Тест) - - Сообщить(СтрШаблон("[OK] %1", Тест)); - -КонецПроцедуры - -#КонецОбласти - -#КонецЕсли +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Запускает прогон тестов +// +Процедура ВыполнитьТестыНаСервере() Экспорт + + Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса(); + Тест_РазобратьURLСПараметромЗапросаБезЗначения(); + Тест_РазобратьURLСЯвноЗаданнымПортом(); + Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями(); + Тест_РазобратьURLСФрагментом(); + Тест_РазобратьURLСХостомВФорматеIPv6(); + Тест_РазобратьПростойURL(); + + Тест_HMAC(); + + Если ТестироватьСоединениеЧерезПрокси Тогда + Тест_СоединениеЧерезПрокси(); + КонецЕсли; + Если ТестироватьПолучениеСпискаРелизовВСайта1С Тогда + Тест_ПолучениеСпискаРелизовВСайта1С(); + КонецЕсли; + Тест_ПараметрыЗаписиJson(); + Тест_URLБезСхемы(); + Тест_ПередачаПараметровВСтрокуЗапроса(); + Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный(); + Тест_РезультатКакJsonGet(); + Тест_РезультатКакJsonPost(); + Тест_РезультатКакДвоичныеДанные(); + Тест_РезультатКакТекст(); + Тест_ПередачаПроизвольныхЗаголовков(); + Тест_ОтправкаДанныхФормы(); + Тест_ОтправкаJson(); + Тест_Таймаут(); + Тест_BasicAuth(); + Тест_DigestAuth(); +#Если Не МобильноеПриложениеСервер Тогда + Тест_ПолучитьGZip(); +#КонецЕсли + Тест_GetJson(); + Тест_PostJson(); + Тест_PostИРедирект(); + Тест_GetJsonСтруктура(); + Тест_PutJson(); + Тест_DeleteJson(); + Тест_GetУспешныйРедиректОтносительныйАдрес(); + Тест_GetУспешныйРедиректАбсолютныйАдрес(); + Тест_GetЗацикленныйРедирект(); + Тест_GetОтключенныйРедирект(); + Тест_Ошибка404(); + Тест_РаботаССессиями(); + Тест_Options(); + Тест_Head(); + Тест_Delete(); + Тест_Patch(); + Тест_УстановкаCookies(); + Тест_ОтправитьCookies(); + Тест_POST_MultipartFormData_ТолькоФайл(); + Тест_POST_MultipartFormData_ФайлыИПоляФормы(); + Тест_ПараметрыЗапросаТолькоКлюч(); + Тест_ОтправкаXml(); + Тест_СложныеПараметрыЗапроса(); + Тест_PostПустойJson(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область Тесты + +Процедура Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса() + + СтруктураURL = КоннекторHTTP.РазобратьURL( + "https://httpbin.org/anything?jql=worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01&j&i=2"); + + УтверждениеВерно(СтруктураURL.Схема, "https"); + УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); + УтверждениеВерно(СтруктураURL.Путь, "/anything"); + УтверждениеВерно(СтруктураURL.Порт, 0); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["jql"], "worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01"); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["j"], Неопределено); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["i"], "2"); + + ТестПройден("Тест_РазобратьURLСоЗнакомРавноВЗначенииПараметраЗапроса"); + +КонецПроцедуры + +Процедура Тест_РазобратьURLСПараметромЗапросаБезЗначения() + + СтруктураURL = КоннекторHTTP.РазобратьURL("https://httpbin.org/get?key"); + + УтверждениеВерно(СтруктураURL.Схема, "https"); + УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); + УтверждениеВерно(СтруктураURL.Путь, "/get"); + УтверждениеВерно(СтруктураURL.Порт, 0); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["key"], Неопределено); + + ТестПройден("Тест_РазобратьURLСПараметромЗапросаБезЗначения"); + +КонецПроцедуры + +Процедура Тест_РазобратьURLСЯвноЗаданнымПортом() + + СтруктураURL = КоннекторHTTP.РазобратьURL("https://httpbin.org:443/get?key"); + + УтверждениеВерно(СтруктураURL.Схема, "https"); + УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); + УтверждениеВерно(СтруктураURL.Путь, "/get"); + УтверждениеВерно(СтруктураURL.Порт, 443); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса["key"], Неопределено); + + ТестПройден("Тест_РазобратьURLСЯвноЗаданнымПортом"); + +КонецПроцедуры + +Процедура Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями() + + СтруктураURL = КоннекторHTTP.РазобратьURL("http://httpbin.org/anything?i=v1&j=w1&j=w2&i=v2&i=v3"); + + УтверждениеВерно(СтруктураURL.Схема, "http"); + УтверждениеВерно(СтруктураURL.Сервер, "httpbin.org"); + УтверждениеВерно(СтруктураURL.Путь, "/anything"); + УтверждениеВерно(СтруктураURL.Порт, 0); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтрСоединить(СтруктураURL.ПараметрыЗапроса["i"], ", "), "v1, v2, v3"); + УтверждениеВерно(СтрСоединить(СтруктураURL.ПараметрыЗапроса["j"], ", "), "w1, w2"); + + ТестПройден("Тест_РазобратьURLСПараметрамиЗапросаСНесколькимиЗначениями"); + +КонецПроцедуры + +Процедура Тест_РазобратьURLСФрагментом() + + СтруктураURL = КоннекторHTTP.РазобратьURL("https://en.wikipedia.org/wiki/1C_Company#Products"); + + УтверждениеВерно(СтруктураURL.Схема, "https"); + УтверждениеВерно(СтруктураURL.Сервер, "en.wikipedia.org"); + УтверждениеВерно(СтруктураURL.Путь, "/wiki/1C_Company"); + УтверждениеВерно(СтруктураURL.Порт, 0); + УтверждениеВерно(СтруктураURL.Фрагмент, "Products"); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); + + ТестПройден("Тест_РазобратьURLСФрагментом"); + +КонецПроцедуры + +Процедура Тест_РазобратьURLСХостомВФорматеIPv6() + + СтруктураURL = КоннекторHTTP.РазобратьURL("http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/test"); + + УтверждениеВерно(СтруктураURL.Схема, "http"); + УтверждениеВерно(СтруктураURL.Сервер, "[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]"); + УтверждениеВерно(СтруктураURL.Путь, "/test"); + УтверждениеВерно(СтруктураURL.Порт, 8080); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); + + ТестПройден("Тест_РазобратьURLСХостомВФорматеIPv6"); + +КонецПроцедуры + +Процедура Тест_РазобратьПростойURL() + + СтруктураURL = КоннекторHTTP.РазобратьURL("http://1c.ru"); + + УтверждениеВерно(СтруктураURL.Схема, "http"); + УтверждениеВерно(СтруктураURL.Сервер, "1c.ru"); + УтверждениеВерно(СтруктураURL.Путь, "/"); + УтверждениеВерно(СтруктураURL.Порт, 0); + УтверждениеВерно(СтруктураURL.Фрагмент, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пользователь, ""); + УтверждениеВерно(СтруктураURL.Аутентификация.Пароль, ""); + УтверждениеВерно(СтруктураURL.ПараметрыЗапроса.Количество(), 0); + + ТестПройден("Тест_РазобратьПростойURL"); + +КонецПроцедуры + + +Процедура Тест_HMAC() + + Ключ = ПолучитьДвоичныеДанныеИзСтроки("Секретный ключ", КодировкаТекста.UTF8, Ложь); + КлючБольше64 = ПолучитьДвоичныеДанныеИзСтроки( + "1234567890123456789012345678901234567890123456789012345678901234567890", КодировкаТекста.UTF8, Ложь); + + ПустыеДанные = ПолучитьДвоичныеДанныеИзСтроки("", КодировкаТекста.UTF8, Ложь); + Данные = ПолучитьДвоичныеДанныеИзСтроки("Какие-то данные", КодировкаТекста.UTF8, Ложь); + + УтверждениеВерно( + КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.MD5), + ПолучитьДвоичныеДанныеИзHexСтроки("1b1ec4166a11c03b3afefaea442e7709")); + УтверждениеВерно( + КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.MD5), + ПолучитьДвоичныеДанныеИзHexСтроки("ed5b2d6b9f573cd46e8f8d1d1e8b70e3")); + + УтверждениеВерно( + КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.SHA1), + ПолучитьДвоичныеДанныеИзHexСтроки("355aa0587050d711f4ca9af6930c736363a88d34")); + УтверждениеВерно( + КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.SHA1), + ПолучитьДвоичныеДанныеИзHexСтроки("7e8f9d7ebbe81e508a39f410e157fc6e714b3371")); + + УтверждениеВерно( + КоннекторHTTP.HMAC(Ключ, ПустыеДанные, ХешФункция.SHA256), + ПолучитьДвоичныеДанныеИзHexСтроки("70907d03476d72b7276897718590a49f6ce56991112fb5a0e9ed41652b2aab6c")); + УтверждениеВерно( + КоннекторHTTP.HMAC(КлючБольше64, Данные, ХешФункция.SHA256), + ПолучитьДвоичныеДанныеИзHexСтроки("80be8107de7879f028c8bfe97e10b859785530dd19dfc41a4d6962ce4c2fc130")); + + ТестПройден("Тест_HMAC"); + +КонецПроцедуры + + +Процедура Тест_СоединениеЧерезПрокси() + + Прокси = Новый ИнтернетПрокси; + Прокси.Установить("http", ПроксиСервер, ПроксиПорт); + КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Прокси", Прокси)); + + ТестПройден("Тест_СоединениеЧерезПрокси"); + +КонецПроцедуры + +Процедура Тест_ПараметрыЗаписиJson() + + ПараметрыЗаписиJSON = Новый Структура("ПереносСтрок", ПереносСтрокJSON.Нет); + Json = Новый Структура; + Json.Вставить("field", "value"); + Json.Вставить("field2", "value2"); + Результат = КоннекторHTTP.PostJson("http://httpbin.org/anything", Json, Новый Структура("ПараметрыЗаписиJSON", ПараметрыЗаписиJSON)); + УтверждениеВерно(Результат["data"], "{""field"":""value"",""field2"":""value2""}"); + + ТестПройден("Тест_ПараметрыЗаписиJson"); + +КонецПроцедуры + +Процедура Тест_URLБезСхемы() + + Ответ = КоннекторHTTP.Get("httpbin.org/get"); + Результат = КоннекторHTTP.КакJson(Ответ); + УтверждениеВерно(Ответ.URL, "http://httpbin.org/get"); + + ТестПройден("Тест_URLБезСхемы"); + +КонецПроцедуры + +Процедура Тест_ПередачаПараметровВСтрокуЗапроса() + + ПараметрыЗапроса = Новый Структура; + ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ",")); + ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ=")); + + Ответ = КоннекторHTTP.Get("https://httpbin.org/anything/params", ПараметрыЗапроса); + Результат = КоннекторHTTP.КакJson(Ответ); + + УтверждениеВерно(Ответ.URL, "https://httpbin.org/anything/params?name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&name=%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2&salary=100000"); + УтверждениеВерно(Результат["url"], "https://httpbin.org/anything/params?name=Иванов&name=Петров&salary=100000"); + УтверждениеВерно(Результат["args"]["salary"], "100000"); + УтверждениеВерно(СтрСоединить(Результат["args"]["name"], ","), "Иванов,Петров"); + + ТестПройден("Тест_ПередачаПараметровВСтрокуЗапроса"); + +КонецПроцедуры + +Процедура Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный() + + ПараметрыЗапроса = Новый Структура; + ПараметрыЗапроса.Вставить("name", СтрРазделить("Иванов,Петров", ",")); + ПараметрыЗапроса.Вставить("salary", Формат(100000, "ЧГ=")); + + Результат = КоннекторHTTP.GetJson("https://httpbin.org/anything/params?post=Программист", ПараметрыЗапроса); + + УтверждениеВерно(Результат["args"]["salary"], "100000"); + УтверждениеВерно(Результат["args"]["post"], "Программист"); + УтверждениеВерно(СтрСоединить(Результат["args"]["name"], ","), "Иванов,Петров"); + + ТестПройден("Тест_ПередачаПараметровВСтрокуЗапросаКомбинированный"); + +КонецПроцедуры + +Процедура Тест_РезультатКакJsonGet() + + Результат = КоннекторHTTP.GetJson("https://httpbin.org/get"); + УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); + + ТестПройден("Тест_РезультатКакJsonGet"); + +КонецПроцедуры + +Процедура Тест_РезультатКакJsonPost() + + Результат = КоннекторHTTP.КакJson(КоннекторHTTP.Post("https://httpbin.org/post")); + УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); + + ТестПройден("Тест_РезультатКакJsonPost"); + +КонецПроцедуры + +Процедура Тест_РезультатКакДвоичныеДанные() + + Результат = КоннекторHTTP.КакДвоичныеДанные(КоннекторHTTP.Get("http://httpbin.org/image/png")); + + УтверждениеВерно(ТипЗнч(Результат), Тип("ДвоичныеДанные")); + УтверждениеВерно(ПосчитатьMD5(Результат), "5cca6069f68fbf739fce37e0963f21e7"); + + ТестПройден("Тест_РезультатКакДвоичныеДанные"); + +КонецПроцедуры + +Процедура Тест_РезультатКакТекст() + + Результат = КоннекторHTTP.КакТекст(КоннекторHTTP.Get("http://httpbin.org/encoding/utf8")); + УтверждениеВерно(СтрНайти(Результат, "Зарегистрируйтесь сейчас на Десятую Международную"), 3931); + + ТестПройден("Тест_РезультатКакТекст"); + +КонецПроцедуры + +Процедура Тест_ПередачаПроизвольныхЗаголовков() + + Заголовки = Новый Соответствие; + Заголовки.Вставить("X-My-Header", "Hello"); + Результат = КоннекторHTTP.GetJson("http://httpbin.org/headers", Неопределено, Новый Структура("Заголовки", Заголовки)); + + УтверждениеВерно(Результат["headers"]["X-My-Header"], "Hello"); + + ТестПройден("Тест_ПередачаПроизвольныхЗаголовков"); + +КонецПроцедуры + +Процедура Тест_ОтправкаДанныхФормы() + + Данные = Новый Структура; + Данные.Вставить("comments", "Постучать в дверь"); + Данные.Вставить("custemail", "vasya@mail.ru"); + Данные.Вставить("custname", "Вася"); + Данные.Вставить("custtel", "112"); + Данные.Вставить("delivery", "20:20"); + Данные.Вставить("size", "medium"); + Данные.Вставить("topping", СтрРазделить("bacon,mushroom", ",")); + + Ответ = КоннекторHTTP.Post("http://httpbin.org/post", Данные); + УтверждениеВерно(Ответ.URL, "http://httpbin.org/post"); + Результат = КоннекторHTTP.КакJson(Ответ); + УтверждениеВерно(Результат["form"]["size"], "medium"); + УтверждениеВерно(Результат["form"]["comments"], "Постучать в дверь"); + УтверждениеВерно(Результат["form"]["custemail"], "vasya@mail.ru"); + УтверждениеВерно(Результат["form"]["delivery"], "20:20"); + УтверждениеВерно(Результат["form"]["custtel"], "112"); + + ТестПройден("Тест_ОтправкаДанныхФормы"); + +КонецПроцедуры + +Процедура Тест_ОтправкаJson() + + Json = Новый Структура; + Json.Вставить("Сотрудник", "Иванов Иван Петрович"); + Json.Вставить("Должность", "Разнорабочий"); + + Результат = КоннекторHTTP.PostJson("http://httpbin.org/post", Json); + + УтверждениеВерно(Результат["json"]["Сотрудник"], "Иванов Иван Петрович"); + УтверждениеВерно(Результат["json"]["Должность"], "Разнорабочий"); + + Результат = КоннекторHTTP.PutJson("http://httpbin.org/put", Json); + УтверждениеВерно(Результат["json"]["Сотрудник"], "Иванов Иван Петрович"); + УтверждениеВерно(Результат["json"]["Должность"], "Разнорабочий"); + + ТестПройден("Тест_ОтправкаJson"); + +КонецПроцедуры + +Процедура Тест_Таймаут() + + Попытка + Ответ = КоннекторHTTP.Get("https://httpbin.org/delay/10", Неопределено, Новый Структура("Таймаут", 1)); + Исключение + ВерноеИсключение(ИнформацияОбОшибке(), СтрРазделить("Превышено время ожидания|Timeout exceeded", "|")); + КонецПопытки; + + ТестПройден("Тест_Таймаут"); + +КонецПроцедуры + +Процедура Тест_ПолучитьGZip() + + Результат = КоннекторHTTP.GetJson("http://httpbin.org/gzip"); + УтверждениеВерно(Результат["gzipped"], Истина); + + ТестПройден("Тест_ПолучитьGZip"); + +КонецПроцедуры + +Процедура Тест_BasicAuth() + + Результат = КоннекторHTTP.GetJson("https://user:pass@httpbin.org/basic-auth/user/pass"); + УтверждениеВерно(Результат["authenticated"], Истина); + УтверждениеВерно(Результат["user"], "user"); + + Аутентификация = Новый Структура("Пользователь, Пароль", "user", "pass"); + Результат = КоннекторHTTP.GetJson( + "https://httpbin.org/basic-auth/user/pass", + Неопределено, + Новый Структура("Аутентификация", Аутентификация)); + УтверждениеВерно(Результат["authenticated"], Истина); + УтверждениеВерно(Результат["user"], "user"); + + Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "user", "pass", "Basic"); + Результат = КоннекторHTTP.GetJson( + "https://httpbin.org/basic-auth/user/pass", + Неопределено, + Новый Структура("Аутентификация", Аутентификация)); + УтверждениеВерно(Результат["authenticated"], Истина); + УтверждениеВерно(Результат["user"], "user"); + + ТестПройден("Тест_BasicAuth"); + +КонецПроцедуры + +Процедура Тест_DigestAuth() + + Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "user", "pass", "Digest"); + Результат = КоннекторHTTP.GetJson( + "https://httpbin.org/digest-auth/auth/user/pass", + Неопределено, + Новый Структура("Аутентификация", Аутентификация)); + УтверждениеВерно(Результат["authenticated"], Истина); + УтверждениеВерно(Результат["user"], "user"); + + Аутентификация = Новый Структура("Пользователь, Пароль, Тип", "guest", "guest", "Digest"); + Результат = КоннекторHTTP.Get( + "https://jigsaw.w3.org/HTTP/Digest/", + Неопределено, + Новый Структура("Аутентификация", Аутентификация)); + УтверждениеВерно(Результат.КодСостояния, 200); + + ТестПройден("Тест_DigestAuth"); + +КонецПроцедуры + +Процедура Тест_GetJson() + + Результат = КоннекторHTTP.GetJson("https://httpbin.org/get"); + УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); + + ТестПройден("Тест_GetJson"); + +КонецПроцедуры + +Процедура Тест_GetJsonСтруктура() + + ПараметрыПреобразованияJSON = Новый Структура("ПрочитатьВСоответствие", Ложь); + Результат = КоннекторHTTP.GetJson( + "http://httpbin.org/json", Неопределено, Новый Структура("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON)); + УтверждениеВерно(Результат.slideshow.author, "Yours Truly"); + УтверждениеВерно(Результат.slideshow.date, "date of publication"); + УтверждениеВерно(Результат.slideshow.slides.Количество(), 2); + УтверждениеВерно(Результат.slideshow.title, "Sample Slide Show"); + + ТестПройден("Тест_GetJsonСтруктура"); + +КонецПроцедуры + +Процедура Тест_PostJson() + + ПараметрыПреобразованияJSON = Новый Структура; + ПараметрыПреобразованияJSON.Вставить("ИменаСвойствСоЗначениямиДата", "Дата"); + + Json = Новый Структура; + Json.Вставить("Дата", '20190121002400'); + Json.Вставить("Число", 5); + Json.Вставить("Булево", True); + Json.Вставить("Строка", "Привет"); + + Результат = КоннекторHTTP.PostJson( + "https://httpbin.org/post", + Json, + Новый Структура("ПараметрыПреобразованияJSON", ПараметрыПреобразованияJSON)); + УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); + УтверждениеВерно(Результат["json"]["Дата"], '20190121002400'); + УтверждениеВерно(Результат["json"]["Число"], 5); + УтверждениеВерно(Результат["json"]["Булево"], True); + УтверждениеВерно(Результат["json"]["Строка"], "Привет"); + + ТестПройден("Тест_PostJson"); + +КонецПроцедуры + +Процедура Тест_PostИРедирект() + + Ответ = КоннекторHTTP.Get("https://httpbin.org/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301"); + УтверждениеВерно(Ответ.КодСостояния, 200); + + Ответ = КоннекторHTTP.Post("https://httpbin.org/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301"); + УтверждениеВерно(Ответ.КодСостояния, 301); + + ТестПройден("Тест_PostИРедирект"); + +КонецПроцедуры + +Процедура Тест_PutJson() + + Результат = КоннекторHTTP.PutJson("https://httpbin.org/put", Новый Структура("Название", "КоннекторHTTP")); + УтверждениеВерно(Результат["url"], "https://httpbin.org/put"); + УтверждениеВерно(Результат["json"]["Название"], "КоннекторHTTP"); + + ТестПройден("Тест_PutJson"); + +КонецПроцедуры + +Процедура Тест_DeleteJson() + + Результат = КоннекторHTTP.DeleteJson("https://httpbin.org/delete", Новый Структура("Название", "КоннекторHTTP")); + УтверждениеВерно(Результат["url"], "https://httpbin.org/delete"); + УтверждениеВерно(Результат["json"]["Название"], "КоннекторHTTP"); + + ТестПройден("Тест_DeleteJson"); + +КонецПроцедуры + +Процедура Тест_GetУспешныйРедиректОтносительныйАдрес() + + Ответ = КоннекторHTTP.Get("https://httpbin.org/relative-redirect/6"); + Результат = КоннекторHTTP.КакJson(Ответ); + + УтверждениеВерно(Ответ.КодСостояния, 200); + УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); + + ТестПройден("Тест_GetУспешныйРедиректОтносительныйАдрес"); + +КонецПроцедуры + +Процедура Тест_GetУспешныйРедиректАбсолютныйАдрес() + + Ответ = КоннекторHTTP.Get("https://httpbin.org/absolute-redirect/6"); + Результат = КоннекторHTTP.КакJson(Ответ); + + УтверждениеВерно(Ответ.КодСостояния, 200); + УтверждениеВерно(Результат["url"], "https://httpbin.org/get"); + + ТестПройден("Тест_GetУспешныйРедиректАбсолютныйАдрес"); + +КонецПроцедуры + +Процедура Тест_GetЗацикленныйРедирект() + + Попытка + Результат = КоннекторHTTP.КакJson(КоннекторHTTP.Get("http://httpbin.org/redirect/31")); + Исключение + ВерноеИсключение(ИнформацияОбОшибке(), "СлишкомМногоПеренаправлений"); + КонецПопытки; + + ТестПройден("Тест_GetЗацикленныйРедирект"); + +КонецПроцедуры + +Процедура Тест_GetОтключенныйРедирект() + + Параметры = Новый Структура("РазрешитьПеренаправление", Ложь); + Ответ = КоннекторHTTP.Get( + "http://httpbin.org/redirect-to?url=http%3A%2F%2Fhttpbin.org%2Fget&status_code=307", + Неопределено, + Параметры); + + УтверждениеВерно(Ответ.КодСостояния, 307); + + ТестПройден("Тест_GetОтключенныйРедирект"); + +КонецПроцедуры + +Процедура Тест_Ошибка404() + + Ответ = КоннекторHTTP.Get("http://httpbin.org/status/404"); + + УтверждениеВерно(Ответ.КодСостояния, 404); + + ТестПройден("Тест_Ошибка404"); + +КонецПроцедуры + +Процедура Тест_РаботаССессиями() + + Сессия = КоннекторHTTP.СоздатьСессию(); + КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://httpbin.org/cookies/set/key/value"); + Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://httpbin.org/cookies"); + Результат = КоннекторHTTP.КакJson(Ответ); + + УтверждениеВерно(Результат["cookies"]["key"], "value"); + + ТестПройден("Тест_РаботаССессиями"); + +КонецПроцедуры + +Процедура Тест_ПолучениеСпискаРелизовВСайта1С() + + Сессия = КоннекторHTTP.СоздатьСессию(); + Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "GET", "https://releases.1c.ru/total"); + + Данные = Новый Структура; + Данные.Вставить("execution", ИзвлечьExecution(Ответ)); + Данные.Вставить("username", Логин); + Данные.Вставить("password", Пароль); + Данные.Вставить("_eventId", "submit"); + Данные.Вставить("geolocation", ""); + Данные.Вставить("submit", "Войти"); + Данные.Вставить("rememberMe", "on"); + + Ответ = КоннекторHTTP.ВызватьМетодВСеансе(Сессия, "POST", Ответ.URL, Новый Структура("Данные", Данные)); + + УтверждениеВерно(Ответ.URL, "https://releases.1c.ru/total"); + УтверждениеВерно(Ответ.КодСостояния, 200); + + ТестПройден("Тест_ПолучениеСпискаРелизовВСайта1С"); + +КонецПроцедуры + +Процедура Тест_Options() + + Ответ = КоннекторHTTP.Options("http://httpbin.org/anything"); + + УтверждениеВерно(Ответ.КодСостояния, 200); + + ТестПройден("Тест_Options"); + +КонецПроцедуры + +Процедура Тест_Head() + + Ответ = КоннекторHTTP.Head("http://httpbin.org/anything"); + + УтверждениеВерно(Ответ.КодСостояния, 200); + + ТестПройден("Тест_Head"); + +КонецПроцедуры + +Процедура Тест_Delete() + + Ответ = КоннекторHTTP.Delete("http://httpbin.org/delete"); + + УтверждениеВерно(Ответ.КодСостояния, 200); + + ТестПройден("Тест_Delete"); + +КонецПроцедуры + +Процедура Тест_Patch() + + Ответ = КоннекторHTTP.Patch("http://httpbin.org/patch"); + + УтверждениеВерно(Ответ.КодСостояния, 200); + + ТестПройден("Тест_Patch"); + +КонецПроцедуры + +Процедура Тест_УстановкаCookies() + + Результат = КоннекторHTTP.GetJson("http://httpbin.org/cookies/set/PHPSESSID/72a68cc1e55a4fbb9c0b8dbbeb49ca4f"); + + УтверждениеВерно(Результат["cookies"]["PHPSESSID"], "72a68cc1e55a4fbb9c0b8dbbeb49ca4f"); + + ТестПройден("Тест_УстановкаCookies"); + +КонецПроцедуры + +Процедура Тест_ОтправитьCookies() + + Cookies = Новый Массив; + Cookies.Добавить(Новый Структура("Наименование,Значение", "k1", Строка(Новый УникальныйИдентификатор))); + Cookies.Добавить(Новый Структура("Наименование,Значение", "k2", Строка(Новый УникальныйИдентификатор))); + Ответ = КоннекторHTTP.Get("http://httpbin.org/cookies",, Новый Структура("Cookies", Cookies)); + Результат = КоннекторHTTP.КакJson(Ответ); + + УтверждениеВерно(Результат["cookies"]["k1"], Cookies[0].Значение); + УтверждениеВерно(Результат["cookies"]["k2"], Cookies[1].Значение); + + ТестПройден("Тест_ОтправитьCookies"); + +КонецПроцедуры + +Процедура Тест_POST_MultipartFormData_ТолькоФайл() + + Файлы = Новый Структура; + Файлы.Вставить("Имя", "f1"); + Файлы.Вставить("ИмяФайла", "file1.txt"); + Файлы.Вставить("Данные", Base64Значение("0J/RgNC40LLQtdGCLCDQnNC40YA=")); + Файлы.Вставить("Тип", "text/plain"); + + Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы", Файлы)); + + УтверждениеВерно(Результат["files"]["f1"], "Привет, Мир"); + + ТестПройден("Тест_POST_MultipartFormData_ТолькоФайл"); + +КонецПроцедуры + +Процедура Тест_POST_MultipartFormData_ФайлыИПоляФормы() + + Файлы = Новый Массив; + Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f1", Base64Значение("ZmlsZTE="), "file1.txt")); + Файлы.Добавить(Новый Структура("Имя,Данные,ИмяФайла", "f2", Base64Значение("ZmlsZTI="), "file2.txt")); + + Данные = Новый Структура("field1,field2", "value1", "Значение2"); + + Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Неопределено, Новый Структура("Файлы,Данные", Файлы, Данные)); + + УтверждениеВерно(Результат["files"]["f1"], "file1"); + УтверждениеВерно(Результат["files"]["f2"], "file2"); + УтверждениеВерно(Результат["form"]["field1"], "value1"); + УтверждениеВерно(Результат["form"]["field2"], "Значение2"); + + ТестПройден("Тест_POST_MultipartFormData_ФайлыИПоляФормы"); + +КонецПроцедуры + +Процедура Тест_ПараметрыЗапросаТолькоКлюч() + + Результат = КоннекторHTTP.GetJson("https://httpbin.org/get?key"); + УтверждениеВерно(Результат["args"]["key"], ""); + + ТестПройден("Тест_ПараметрыЗапросаТолькоКлюч"); + +КонецПроцедуры + +Процедура Тест_ОтправкаXml() + + XML = + " + | + | + | + | 2019-07-05 + | + | + |"; + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8"); + Заголовки.Вставить("SOAPAction", "http://web.cbr.ru/GetCursOnDate"); + Ответ = КоннекторHTTP.Post( + "https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx", + XML, + Новый Структура("Заголовки", Заголовки)); + + УтверждениеВерно(Ответ.КодСостояния, 200); + УтверждениеВерно(Ответ.Заголовки.Получить("Content-Type"), "text/xml; charset=utf-8"); + + ТестПройден("Тест_ОтправкаXml"); + +КонецПроцедуры + +Процедура Тест_СложныеПараметрыЗапроса() + + Результат = КоннекторHTTP.GetJson( + "https://httpbin.org/anything?jql=worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01&j&i=2"); + УтверждениеВерно(Результат["args"]["jql"], "worklogDate >= 2017-04-01 AND worklogDate <= 2017-05-01"); + УтверждениеВерно(Результат["args"]["j"], ""); + УтверждениеВерно(Результат["args"]["i"], "2"); + + ТестПройден("Тест_СложныеПараметрыЗапроса"); + +КонецПроцедуры + +Процедура Тест_PostПустойJson() + + Json = Новый Структура; + Результат = КоннекторHTTP.PostJson("https://httpbin.org/post", Json); + УтверждениеВерно(Результат["url"], "https://httpbin.org/post"); + УтверждениеВерно(ТипЗнч(Результат["json"]), Тип("Соответствие")); + + ТестПройден("Тест_PostПустойJson"); + +КонецПроцедуры + +#КонецОбласти + +Функция ИзвлечьExecution(Ответ) + + HTML = КоннекторHTTP.КакТекст(Ответ); + + Начало = СтрНайти(HTML, "name=""execution"""); + Конец = СтрНайти(HTML, ">", НаправлениеПоиска.СНачала, Начало); + КороткаяСтрока = Сред(HTML, Начало, Конец - Начало); + + Начало = СтрНайти(КороткаяСтрока, "value=""") + СтрДлина("value="""); + Конец = СтрНайти(КороткаяСтрока, """", НаправлениеПоиска.СНачала, Начало); + + Возврат Сред(КороткаяСтрока, Начало, Конец - Начало); + +КонецФункции + +Функция ПосчитатьMD5(Данные) + + Хеширование = Новый ХешированиеДанных(ХешФункция.MD5); + Хеширование.Добавить(Данные); + + Возврат НРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеширование.ХешСумма)); + +КонецФункции + +Процедура УтверждениеВерно(ЛевоеЗначение, ПравоеЗначение, Пояснение = "") + + Если ЛевоеЗначение <> ПравоеЗначение Тогда + ВызватьИсключение(СтрШаблон("<%1> не равно <%2>: %3", ЛевоеЗначение, ПравоеЗначение, Пояснение)); + КонецЕсли; + +КонецПроцедуры + +Процедура ВерноеИсключение(ИнформацияОбОшибке, ОжидаемоеИсключение) + + ТекстИсключения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + Если ТипЗнч(ОжидаемоеИсключение) = Тип("Массив") Тогда + ТекстНайден = Ложь; + Для Каждого Элемент Из ОжидаемоеИсключение Цикл + Если СтрНайти(ТекстИсключения, Элемент) Тогда + ТекстНайден = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Не ТекстНайден Тогда + ВызватьИсключение(ТекстИсключения); + КонецЕсли + Иначе + Если Не СтрНайти(ТекстИсключения, ОжидаемоеИсключение) Тогда + ВызватьИсключение(ТекстИсключения); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ТестПройден(Тест) + + Сообщить(СтрШаблон("[OK] %1", Тест)); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли diff --git a/src/DataProcessors/Тесты/Forms/Форма.xml b/tests/Тесты/Forms/Форма.xml similarity index 95% rename from src/DataProcessors/Тесты/Forms/Форма.xml rename to tests/Тесты/Forms/Форма.xml index a308275..8e827c5 100644 --- a/src/DataProcessors/Тесты/Forms/Форма.xml +++ b/tests/Тесты/Forms/Форма.xml @@ -1,22 +1,22 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
+ + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
\ No newline at end of file diff --git a/src/DataProcessors/Тесты/Forms/Форма/Ext/Form.xml b/tests/Тесты/Forms/Форма/Ext/Form.xml similarity index 97% rename from src/DataProcessors/Тесты/Forms/Форма/Ext/Form.xml rename to tests/Тесты/Forms/Форма/Ext/Form.xml index 19cf8cf..48f4938 100644 --- a/src/DataProcessors/Тесты/Forms/Форма/Ext/Form.xml +++ b/tests/Тесты/Forms/Форма/Ext/Form.xml @@ -1,146 +1,149 @@ - -
- Use - - false - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Настройки прокси-сервера</v8:content> - </v8:item> - - Vertical - None - - - - Объект.ТестироватьСоединениеЧерезПрокси - Right - Auto - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Сервер и порт</v8:content> - </v8:item> - - None - false - - - - Объект.ПроксиСервер - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Сервер</v8:content> - </v8:item> - - - - - - Объект.ПроксиПорт - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Порт</v8:content> - </v8:item> - - - - - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Настройки аутентификации на сайтах 1С</v8:content> - </v8:item> - - Vertical - None - - - - Объект.ТестироватьПолучениеСпискаРелизовВСайта1С - Right - Auto - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Логин и пароль</v8:content> - </v8:item> - - None - false - - - - Объект.Логин - - - - - Объект.Пароль - - - - - - - - - - - - - cfg:DataProcessorObject.Тесты - - true - - Объект.Логин - Объект.Пароль - Объект.ПроксиПорт - Объект.ПроксиСервер - Объект.ТестироватьПолучениеСпискаРелизовВСайта1С - Объект.ТестироватьСоединениеЧерезПрокси - - - - - - - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Выполнить тесты</v8:content> - </v8:item> - - - - ru - Выполнить тесты - - - ВыполнитьТесты - DontUse - - + + + Use + Main + Auto + Auto + + false + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки прокси-сервера</v8:content> + </v8:item> + + Vertical + None + + + + Объект.ТестироватьСоединениеЧерезПрокси + Right + Auto + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сервер и порт</v8:content> + </v8:item> + + None + false + + + + Объект.ПроксиСервер + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сервер</v8:content> + </v8:item> + + + + + + Объект.ПроксиПорт + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Порт</v8:content> + </v8:item> + + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки аутентификации на сайтах 1С</v8:content> + </v8:item> + + Vertical + None + + + + Объект.ТестироватьПолучениеСпискаРелизовВСайта1С + Right + Auto + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Логин и пароль</v8:content> + </v8:item> + + None + false + + + + Объект.Логин + + + + + Объект.Пароль + + + + + + + + + + + + + cfg:ExternalReportObject.Тесты + + true + + Объект.Логин + Объект.Пароль + Объект.ПроксиПорт + Объект.ПроксиСервер + Объект.ТестироватьПолучениеСпискаРелизовВСайта1С + Объект.ТестироватьСоединениеЧерезПрокси + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выполнить тесты</v8:content> + </v8:item> + + + + ru + Выполнить тесты + + + ВыполнитьТесты + DontUse + +
\ No newline at end of file diff --git a/src/DataProcessors/Тесты/Forms/Форма/Ext/Form/Module.bsl b/tests/Тесты/Forms/Форма/Ext/Form/Module.bsl similarity index 96% rename from src/DataProcessors/Тесты/Forms/Форма/Ext/Form/Module.bsl rename to tests/Тесты/Forms/Форма/Ext/Form/Module.bsl index ca118da..b2a98cb 100644 --- a/src/DataProcessors/Тесты/Forms/Форма/Ext/Form/Module.bsl +++ b/tests/Тесты/Forms/Форма/Ext/Form/Module.bsl @@ -1,23 +1,23 @@ -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура ВыполнитьТесты(Команда) - - ВыполнитьТестыНаСервере(); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаСервере -Процедура ВыполнитьТестыНаСервере() - - Если ПроверитьЗаполнение() Тогда - РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьТесты(Команда) + + ВыполнитьТестыНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ВыполнитьТестыНаСервере() + + Если ПроверитьЗаполнение() Тогда + РеквизитФормыВЗначение("Объект").ВыполнитьТестыНаСервере(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти