Как выполнить перенаправление 302 с помощью URL-адреса переадресации

#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