单元测试模拟WSFederationAuthenticationModule

时间:2014-09-23 20:01:46

标签: c# mocking wif

我们的团队目前使用WIF进行身份验证。在我们的代码中,我们使用

SessionManager.GetClaim(CustomClaimTypes.Username)

和其他SessionManager函数,用于在操作数据时标识当前登录的用户。我最近开始为我们的一个项目编写单元测试,这显然因为SessionManager为null而失败。

当测试方法调用从Session中检索数据的函数时,我遇到了同样的问题。为了解决这个问题,我加入了Moq库,并按如下方式模拟了Session:

var mockHttpContext = new Mock<HttpContextBase>();
mockHttpContext.SetupGet(c => c.Session).Returns(mockSession.Object);
mockHttpContext.SetupSet(c => c.Session["test"] = "test");

这是按预期工作的,但我找不到模拟FederatedAuthentication的WSFederationauthenticationModule的方法。这里代码失败的地方:

SessionSecurityToken stoken = new SessionSecurityToken(prin);
FederatedAuthentication.WSFederationAuthenticationModule.SetPrincipalAndWriteSessionToken(stoken, true); // WSFederationAuthenticationModule throws a null reference 

我尝试创建一个WSFederationauthenticationModule并启动它,但那不起作用:

WSFederationAuthenticationModule ws = new WSFederationAuthenticationModule();
ws.Init(mockHttpContext.ApplicationInstance);

我似乎无法找到任何有用的资源来帮助我解决这个问题。有任何帮助吗?

0 个答案:

没有答案