问题描述
我们正在使用 Xamarin 和 UITest 为我们的应用程序创建 UI 测试。
我们正在使用 Azure API 管理进行集成,并尝试模拟我们的身份验证过程。 我们正在使用 Xamarin Essentials WebAuthenticator,它会打开外部浏览器以执行两步 OAuth 并加载登录页面。
由于 UITest 无法控制应用程序本身之外的任何内容,我们需要通过将 302 重定向返回到控制应用程序来让 API 管理响应,并使用我们模拟的测试身份验证令牌。
我尝试创建一个返回 302 的模拟响应,其中包含一个 Location 标头,其中包含应用程序返回 url 的值。但是,每当我在 APIM 测试页面中对此进行测试时,它只会返回 200 OK。
是否可以向 APIM 发出 GET 请求,APIM 执行 302 重定向到指定的 uri,并带有模拟测试数据的主体?
解决方法
您可以尝试使用退货响应政策。 类似于此示例的内容:
<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>