在 testng 测试中模拟通过 CAS 登录的用户

Posted

技术标签:

【中文标题】在 testng 测试中模拟通过 CAS 登录的用户【英文标题】:Simulating users logged in via CAS in testng tests 【发布时间】:2016-05-30 11:20:49 【问题描述】:

我们正在使用 RESTEasy Server Side Mock Framework 为我们的 java api 编写单元测试。作为测试的一部分,我们还需要模拟用户登录。有些部分必须由 user1 完成,然后是 user2,然后是 user1。

在实际应用中,登录是通过CAS server处理的,即cas web server可用。

在测试中,我们能够使用模拟框架模拟 RESTEasy 服务。 cas 登录 REST api's are documented,但它们将是单独 webapp 的一部分,而不是涉及用户 1 和用户 2 的业务 webapp。

我们如何模拟 CAS 登录服务,而无需在单元测试期间启动 cas 服务器?

如果问题不清楚,请告诉我,我可以添加更多详细信息。

【问题讨论】:

【参考方案1】:

您可能想查看 pac4j 项目。有一个嵌入式 CAS 服务器可以运行一些测试。

【讨论】:

【参考方案2】:

您的被测系统 (SUT) 需要能够与真实的 CAS 服务器或您控制的假冒服务器通信。通常,这是通过使用具有主要生产配置和一个或多个测试配置的依赖注入来管理的。在此类测试的测试配置中,您的 SUT 将被配置为使用模拟 CAS 服务器,并且您的测试应该能够配置所述模拟,以便您可以定义在给定来自 SUT 的某些请求时它应如何响应。

还有其他选项(例如,启动可嵌入的 CAS 服务器或模拟服务器),但这更多地是集成测试而不是单元测试。

【讨论】:

以上是关于在 testng 测试中模拟通过 CAS 登录的用户的主要内容,如果未能解决你的问题,请参考以下文章

Java接口自动化测试 — TestNG

记录一下gitlab通过CAS登录慢的问题

单点登录3 手撕代码模拟CAS实现单点登录

SSO之CAS

走进Java接口测试之测试框架TestNG数据驱动(入门篇)

CAS SSO 单点登录实例