#azure-api-management #xamarin.uitest #xamarin.essentials #webauthenticator
Вопрос:
Мы используем Xamarin и UITest для создания тестов пользовательского интерфейса для нашего приложения.
Мы используем управление API Azure для интеграции и пытаемся имитировать наш процесс аутентификации. Мы используем Xamarin Essentials WebAuthenticator, который открывает внешний браузер для выполнения двухэтапного OAuth и загрузки страницы входа в систему.
Поскольку UITest не может контролировать что-либо за пределами самого приложения, нам нужно, чтобы управление API отреагировало, перенаправив 302 обратно в управляющее приложение с помощью наших тестовых маркеров аутентификации, над которыми издеваются.
Я попытался создать макет ответа, который возвращает 302, с заголовком местоположения со значением нашего возвращаемого URL-адреса для приложения. Однако всякий раз, когда я проверяю это на тестовой странице APIM, он просто возвращает 200 OK.
Можно ли сделать запрос GET на APIM, который выполняет перенаправление 302 на указанный uri, с телом поддельных тестовых данных?
Ответ №1:
Вы можете попробовать использовать политику обратного ответа. Что-то похожее на этот пример:
<when condition="@(context.Request.OriginalUrl.Scheme == Uri.UriSchemeHttp)">
<return-response>
<set-status code="302" reason="Temporary Redirect" />
<set-header name="Location" exists-action="override">
<value>@{
var uri = context.Request.OriginalUrl;
return Uri.UriSchemeHttps "://" uri.Host uri.Path uri.QueryString;
}</value>
</set-header>
</return-response>
</when>
Для вашей справки: https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#ReturnResponse