2011-09-08 46 views
1

我正在测试基于Java/GWT/GAE的servlet。我的一个servlet访问通常通过RPC从客户端调用的数据存储(CRUD类型方法)。我如何从gwt/gae上的servlet注销/登录为其他用户

流程如下工作: 我启动testServlet1。如果我没有登录,它会生成登录网址并将其返回给用户。我点击它。 (现在我登录了。)

testServlet1运行,测试我的DAO,并验证最终的数据库状态。

testServlet2现在要使用不同的登录用户将对象添加到数据存储区,以确保user1和user2之间不存在干扰。

我的问题是:如何通过编程方式在servlet中“切换”登录用户,而无需手动点击注销/登录链接或在客户端自动执行此操作?

似乎没有这个API。

任何人都这样做?

感谢 罗布

+0

集成测试有什么用?硒?是不是它为每个测试开始一个新的清洁会话? –

+0

不,我没有使用Selenium。我只是简单地从我编写的其他servlet调用我的servlet。登录由常规的GAE联合登录servlet处理。您生成登录和注销URL并且用户访问它们以登录和注销。最后,当我需要以不同用户身份继续测试时,我只需从我的servlet调用这些URL。 –

回答

1

每个请求都应该做自己的身份验证。你可以用filters很好地实现这一点。基本上,他们拦截每个请求,并可以在将请求传递给最终预期的servlet之前进行任意计算。你可以让一个过滤器说:“如果用户没有登录,返回登录屏幕;否则,按照预期的方式转到servlet,以登录用户作为参数。”

+0

是的,每个请求都有自己的认证。登录/注销正在工作。我只是想知道是否有一个用于登录/注销的内部API,用于测试servlet可以使用的API,而不是使用URL。我现在正在使用这些网址,而且工作正常。 –

+0

对不起,我不认为我理解你的问题。用户服务将返回当前登录的用户。你不能以编程方式登录某人 - 他们必须这样做。 –

+0

是的,这使得从服务器驾驶测试程序变得困难。你必须开始从客户端登录的测试。请注意,这不是关于生产过程中的运行,而是系统测试期间的运行。 –

1

考虑到似乎没有专门为此的api,我只是调用登录和注销url gae直接从我的servlet提供。

相关问题