Internet测试框架异步设置

TheIntern test framework asynchronous setup

本文关键字:设置 异步 框架 测试 Internet      更新时间:2023-09-26

作为项目的一部分,我正在使用https://github.com/theintern/intern/运行单元和功能测试。

在我的一个测试中,我正在测试JSON Rest API的服务器实现。我需要这个实现来使用Dojo JSON Rest客户端(http://dojotoolkit.org/reference-guide/1.10/dojo/store/JsonRest.html)。

因此,我试图手动触发Dojo Store应该执行的XHR。然而,我不知道如何绕过浏览器中的CSRF保护,因为我找不到一种方法来将我的服务器实现(我希望测试)与Intern框架中的web服务器集成。

InternetWebserver在http://localhost:9000运行,而我的JSON Rest Store在http://localhost:3000,因此CSRF浏览器保护触发。

通常,需要跨服务器执行XHR的页面需要来自原始服务器的某种CSRF令牌/cookie授权。如何与实习生一起执行此操作?如果我需要从JSON REST API服务器实现获得此授权,那么我的服务器将不会作为REST实现工作,因为我需要跟踪状态。我说得对吗?

在我的应用程序(生产服务器)中,这不是问题,因为JSON Rest API的服务器实现也为启动XHR的静态HTML页面提供服务。

更新:我找到了一份关于无状态CSRF保护的指南:http://appsandsecurity.blogspot.de/2012/01/stateless-csrf-protection.html.我仍然需要测试它,看看它如何应用于DojoJSONRest存储。

我听说,如果开发需要,可以在某些浏览器中禁用CSRF保护。然而,这种保护是一件非常关键的事情,如果没有它,AJAX请求将太危险,无法允许页面使用它们。。。

您的web应用程序和REST通道必须位于同一IP相同端口上。如果您有两个独立的服务器,那么实现它的方法是使用代理服务器。其中一个服务器提供这样的功能,或者使用第三个服务器(如Apache)代理对两个服务器的调用。

我使用的是带有mod_proxy的Apache HTTPD。我将客户端代码(html和js)存储在apache上,并使用httpd.conf:中定义的配置将调用重定向到rest服务

ProxyPass /myapp/rest/ http://l0calhost:9000/myapp/rest/

您的rest通道将在http://l0calhost:3000/myapp/rest下可用(如果您的apache服务器在l0calhost:3000上侦听),应用程序(JS)可以在/myapp/rest下引用它。

当然,您需要首先取消注释激活modproxy 的行

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so