diff --git a/src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os b/src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os index 2c8ef32..8b88fcc 100644 --- a/src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os +++ b/src/core/Классы/ГенераторПрограммногоКодаКоннекторHTTP.os @@ -1162,10 +1162,6 @@ Возврат Ложь; КонецЕсли; - ИначеЕсли Имя = "authorization" И СтрНачинаетсяС(Значение, "bearer ") Тогда - - Возврат Ложь; - Иначе Возврат Истина; diff --git a/src/core/Классы/КонвертерКомандыCURL.os b/src/core/Классы/КонвертерКомандыCURL.os index 26510b1..093c229 100644 --- a/src/core/Классы/КонвертерКомандыCURL.os +++ b/src/core/Классы/КонвертерКомандыCURL.os @@ -463,6 +463,8 @@ ОписаниеЗапроса.ТипАутентификации = ТипыАутентификации.Bearer; ИначеЕсли Не ПоследнееЗначениеОпции("user") = Неопределено Тогда ОписаниеЗапроса.ТипАутентификации = ТипыАутентификации.Basic; + Иначе + ОписаниеЗапроса.ТипАутентификации = ""; КонецЕсли; КонецПроцедуры diff --git a/tests/ГенераторПрограммногоКода1С_test.os b/tests/ГенераторПрограммногоКода1С_test.os index 20d6529..094ec4e 100644 --- a/tests/ГенераторПрограммногоКода1С_test.os +++ b/tests/ГенераторПрограммногоКода1С_test.os @@ -23,14 +23,16 @@ Процедура ТестДолжен_ПроверитьЗаголовки() Экспорт КонсольнаяКоманда = "curl http://example.com \ - | -H 'accept: text/html' \ - | -H 'accept-language: ru,en-US;q=0.9,en;q=0.8' \ - | -H 'user-agent: curl'"; + | -H 'Accept: text/html' \ + | -H 'Accept-Language: ru,en-US;q=0.9,en;q=0.8' \ + | -H 'User-Agent: curl' \ + | -H 'Authorization: Bearer mF_9.B5f-4.1JqM'"; ПрограммныйКод = "Заголовки = Новый Соответствие(); - |Заголовки.Вставить(""accept"", ""text/html""); - |Заголовки.Вставить(""accept-language"", ""ru,en-US;q=0.9,en;q=0.8""); - |Заголовки.Вставить(""user-agent"", ""curl""); + |Заголовки.Вставить(""Accept"", ""text/html""); + |Заголовки.Вставить(""Accept-Language"", ""ru,en-US;q=0.9,en;q=0.8""); + |Заголовки.Вставить(""User-Agent"", ""curl""); + |Заголовки.Вставить(""Authorization"", ""Bearer mF_9.B5f-4.1JqM""); | |Соединение = Новый HTTPСоединение(""example.com"", 80); |HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки); @@ -83,57 +85,55 @@ &Тест Процедура ТестДолжен_ПроверитьАутентификацию() Экспорт - КонсольнаяКоманда = "curl http://example.com -u user:secret - |curl http://example.com --basic -u user:secret - |curl http://example.com --ntlm - |curl http://example.com --negotiate - |curl http://example.com --oauth2-bearer 'mF_9.B5f-4.1JqM'"; + ТестовыеДанные = Новый Соответствие(); - ПрограммныйКод = "////////////////////////////////////////////// - |// Команда #1. - | - |Соединение = Новый HTTPСоединение(""example.com"", 80, ""user"", ""secret""); - |HTTPЗапрос = Новый HTTPЗапрос(""/""); - | - |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос); - | - |////////////////////////////////////////////// - |// Команда #2. - | - |Соединение = Новый HTTPСоединение(""example.com"", 80, ""user"", ""secret""); - |HTTPЗапрос = Новый HTTPЗапрос(""/""); - | - |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос); - | - |////////////////////////////////////////////// - |// Команда #3. - | - |Соединение = Новый HTTPСоединение(""example.com"", 80, , , , , , Истина); - |HTTPЗапрос = Новый HTTPЗапрос(""/""); - | - |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос); - | - |////////////////////////////////////////////// - |// Команда #4. - | - |Соединение = Новый HTTPСоединение(""example.com"", 80, , , , , , Истина); - |HTTPЗапрос = Новый HTTPЗапрос(""/""); - | - |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос); - | - |////////////////////////////////////////////// - |// Команда #5. - | - |Заголовки = Новый Соответствие(); - |Заголовки.Вставить(""Authorization"", ""Bearer mF_9.B5f-4.1JqM""); - | - |Соединение = Новый HTTPСоединение(""example.com"", 80); - |HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки); - | - |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);"; + ТестовыеДанные.Вставить( + "curl http://example.com -u user:secret", + "Соединение = Новый HTTPСоединение(""example.com"", 80, ""user"", ""secret""); + |HTTPЗапрос = Новый HTTPЗапрос(""/""); + | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);" + ); - ПроверитьКонвертациюБезОшибок(КонсольнаяКоманда, ПрограммныйКод); - + ТестовыеДанные.Вставить( + "curl http://example.com --basic -u user:secret", + "Соединение = Новый HTTPСоединение(""example.com"", 80, ""user"", ""secret""); + |HTTPЗапрос = Новый HTTPЗапрос(""/""); + | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --ntlm", + "Соединение = Новый HTTPСоединение(""example.com"", 80, , , , , , Истина); + |HTTPЗапрос = Новый HTTPЗапрос(""/""); + | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --negotiate", + "Соединение = Новый HTTPСоединение(""example.com"", 80, , , , , , Истина); + |HTTPЗапрос = Новый HTTPЗапрос(""/""); + | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --oauth2-bearer 'mF_9.B5f-4.1JqM'", + "Заголовки = Новый Соответствие(); + |Заголовки.Вставить(""Authorization"", ""Bearer mF_9.B5f-4.1JqM""); + | + |Соединение = Новый HTTPСоединение(""example.com"", 80); + |HTTPЗапрос = Новый HTTPЗапрос(""/"", Заголовки); + | + |HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос);" + ); + + Для Каждого Строка Из ТестовыеДанные Цикл + ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение); + КонецЦикла; + КонецПроцедуры &Тест diff --git a/tests/ГенераторПрограммногоКодаКоннекторHTTP_test.os b/tests/ГенераторПрограммногоКодаКоннекторHTTP_test.os index fdd8921..d7e2175 100644 --- a/tests/ГенераторПрограммногоКодаКоннекторHTTP_test.os +++ b/tests/ГенераторПрограммногоКодаКоннекторHTTP_test.os @@ -34,14 +34,16 @@ Процедура ТестДолжен_ПроверитьЗаголовки() Экспорт КонсольнаяКоманда = "curl http://example.com \ - | -H 'accept: text/html' \ - | -H 'accept-language: ru,en-US;q=0.9,en;q=0.8' \ - | -H 'user-agent: curl'"; + | -H 'Accept: text/html' \ + | -H 'Accept-Language: ru,en-US;q=0.9,en;q=0.8' \ + | -H 'User-Agent: curl' \ + | -H 'Authorization: Bearer mF_9.B5f-4.1JqM'"; ПрограммныйКод = "Заголовки = Новый Соответствие(); - |Заголовки.Вставить(""accept"", ""text/html""); - |Заголовки.Вставить(""accept-language"", ""ru,en-US;q=0.9,en;q=0.8""); - |Заголовки.Вставить(""user-agent"", ""curl""); + |Заголовки.Вставить(""Accept"", ""text/html""); + |Заголовки.Вставить(""Accept-Language"", ""ru,en-US;q=0.9,en;q=0.8""); + |Заголовки.Вставить(""User-Agent"", ""curl""); + |Заголовки.Вставить(""Authorization"", ""Bearer mF_9.B5f-4.1JqM""); | |ДополнительныеПараметры = Новый Структура(); |ДополнительныеПараметры.Вставить(""Заголовки"", Заголовки); @@ -91,91 +93,87 @@ &Тест Процедура ТестДолжен_ПроверитьАутентификацию() Экспорт - КонсольнаяКоманда = "curl http://example.com -u user:secret - |curl http://example.com --basic -u user:secret - |curl http://example.com --digest -u user:secret - |curl http://example.com --ntlm - |curl http://example.com --negotiate - |curl http://example.com --aws-sigv4 'aws:amz:us-east-2:es' --user 'key:secret' - |curl http://example.com --oauth2-bearer 'mF_9.B5f-4.1JqM'"; + ТестовыеДанные = Новый Соответствие(); - ПрограммныйКод = "////////////////////////////////////////////// - |// Команда #1. - | - |Аутентификация = Новый Структура(""Пользователь, Пароль"", ""user"", ""secret""); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #2. - | - |Аутентификация = Новый Структура(""Пользователь, Пароль"", ""user"", ""secret""); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #3. - | - |Аутентификация = Новый Структура(""Тип, Пользователь, Пароль"", ""Digest"", ""user"", ""secret""); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #4. - | - |Аутентификация = Новый Структура(""ИспользоватьАутентификациюОС"", Истина); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #5. - | - |Аутентификация = Новый Структура(""ИспользоватьАутентификациюОС"", Истина); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #6. - | - |Аутентификация = Новый Структура(); - |Аутентификация.Вставить(""Тип"", ""AWS4-HMAC-SHA256""); - |Аутентификация.Вставить(""ИдентификаторКлючаДоступа"", ""key""); - |Аутентификация.Вставить(""СекретныйКлюч"", ""secret""); - |Аутентификация.Вставить(""Сервис"", ""es""); - |Аутентификация.Вставить(""Регион"", ""us-east-2""); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры); - | - |////////////////////////////////////////////// - |// Команда #7. - | - |Аутентификация = Новый Структура(""Токен, Тип"", ""mF_9.B5f-4.1JqM"", ""Bearer""); - | - |ДополнительныеПараметры = Новый Структура(); - |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); - | - |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);"; + ТестовыеДанные.Вставить( + "curl http://example.com -u user:secret", + "Аутентификация = Новый Структура(""Пользователь, Пароль"", ""user"", ""secret""); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --basic -u user:secret", + "Аутентификация = Новый Структура(""Пользователь, Пароль"", ""user"", ""secret""); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --digest -u user:secret", + "Аутентификация = Новый Структура(""Тип, Пользователь, Пароль"", ""Digest"", ""user"", ""secret""); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --ntlm", + "Аутентификация = Новый Структура(""ИспользоватьАутентификациюОС"", Истина); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --negotiate", + "Аутентификация = Новый Структура(""ИспользоватьАутентификациюОС"", Истина); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --aws-sigv4 'aws:amz:us-east-2:es' --user 'key:secret'", + "Аутентификация = Новый Структура(); + |Аутентификация.Вставить(""Тип"", ""AWS4-HMAC-SHA256""); + |Аутентификация.Вставить(""ИдентификаторКлючаДоступа"", ""key""); + |Аутентификация.Вставить(""СекретныйКлюч"", ""secret""); + |Аутентификация.Вставить(""Сервис"", ""es""); + |Аутентификация.Вставить(""Регион"", ""us-east-2""); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + ТестовыеДанные.Вставить( + "curl http://example.com --oauth2-bearer 'mF_9.B5f-4.1JqM'", + "Аутентификация = Новый Структура(""Токен, Тип"", ""mF_9.B5f-4.1JqM"", ""Bearer""); + | + |ДополнительныеПараметры = Новый Структура(); + |ДополнительныеПараметры.Вставить(""Аутентификация"", Аутентификация); + | + |Результат = КоннекторHTTP.Get(""http://example.com"", , ДополнительныеПараметры);" + ); + + Для Каждого Строка Из ТестовыеДанные Цикл + ПроверитьКонвертациюБезОшибок(Строка.Ключ, Строка.Значение); + КонецЦикла; - ПроверитьКонвертациюБезОшибок(КонсольнаяКоманда, ПрограммныйКод); - КонецПроцедуры &Тест