public void ExternalLoginCallback_RedirectsTo_ExternalLoginConfirm_WhenUserIsNew() { // Arrange var mocks = new OAuthMocks(); var controller = GetController(mocks); var extraData = new Dictionary<string, string> {{"accesstoken", "providerAccessToken"}}; var authResult = new AuthenticationResult(true, PROVIDER, PROVIDER_USERID, USERNAME, extraData); var mxClient = new MxClient(new InMemoryOAuthTokenManager("a", "b")); mocks.Response.Setup(r => r.ApplyAppPathModifier(It.IsAny<string>())).Returns(RETURN_URL); mocks.OAuthWebSecurity.Setup(ows => ows.VerifyAuthentication(It.IsAny<string>())).Returns(authResult); mocks.OAuthWebSecurity.Setup(ows => ows.Login(PROVIDER, PROVIDER_USERID, false)).Returns(false); mocks.Identity.Setup(i => i.IsAuthenticated).Returns(false); mocks.OAuthWebSecurity.Setup(ows => ows.SerializeProviderUserId(PROVIDER, PROVIDER_USERID)).Returns(PROVIDER_USERID); mocks.OAuthWebSecurity.Setup(ows => ows.GetOAuthClientData(PROVIDER)).Returns(new AuthenticationClientData(mxClient, PROVIDER_DISPLAY_NAME, null)); // Act var result = controller.ExternalLoginCallback(RETURN_URL) as ViewResult; // Assert Assert.NotNull(result, "result"); Assert.AreEqual(result.ViewBag.ProviderDisplayName, PROVIDER_DISPLAY_NAME); var model = result.Model as RegisterExternalLoginModel; Assert.NotNull(model, "result"); Assert.AreEqual(model.UserName, authResult.UserName); Assert.AreEqual(model.ExternalLoginData, authResult.ProviderUserId); Assert.AreEqual(model.AccessToken, "providerAccessToken"); }
public OAuthController GetController(OAuthMocks mocks) { var controller = new OAuthController(mocks.WebSecurity.Object, mocks.OAuthWebSecurity.Object); controller.ControllerContext = new ControllerContext(mocks.Context.Object, new RouteData(), controller); controller.Url = new UrlHelper(new RequestContext(mocks.Context.Object, new RouteData()), mocks.Routes); return controller; }
public void ExternalLogin_RedirectsTo_ExternalLoginFailure_OnFailure() { // Arrange var mocks = new OAuthMocks(); var controller = GetController(mocks); mocks.Response.Setup(r => r.ApplyAppPathModifier(It.IsAny<string>())).Returns(RETURN_URL); mocks.OAuthWebSecurity.Setup(ows => ows.VerifyAuthentication(It.IsAny<string>())).Returns(new AuthenticationResult(false)); // Act var result = controller.ExternalLoginCallback(RETURN_URL) as RedirectToRouteResult; // Assert Assert.NotNull(result, "result"); Assert.NotNull(result.RouteValues["action"], "ExternalLoginFailure"); }
public void ExternalLogin_Returns_ExternalLoginResult() { // Arrange var mocks = new OAuthMocks(); var controller = GetController(mocks); mocks.Response.Setup(r => r.ApplyAppPathModifier(It.IsAny<string>())).Returns(RETURN_URL); // Act var result = controller.ExternalLogin(PROVIDER, RETURN_URL) as OAuthController.ExternalLoginResult; // Assert Assert.NotNull(result, "result"); Assert.AreEqual(result.Provider, PROVIDER); Assert.AreEqual(result.ReturnUrl, RETURN_URL); }
public void UnauthenticatedUser_And_KnownProviderUserId_Should_LoginUser_And_RedirectToReturnUrl() { // Arrange var mocks = new OAuthMocks(); var controller = GetController(mocks); var authResult = new AuthenticationResult(true, PROVIDER, PROVIDER_USERID, USERNAME, null); mocks.Response.Setup(r => r.ApplyAppPathModifier(It.IsAny<string>())).Returns(RETURN_URL); mocks.OAuthWebSecurity.Setup(ows => ows.VerifyAuthentication(It.IsAny<string>())).Returns(authResult); mocks.OAuthWebSecurity.Setup(ows => ows.Login(PROVIDER, PROVIDER_USERID, false)).Returns(true); // Act var result = controller.ExternalLoginCallback(RETURN_URL) as RedirectResult; // Assert Assert.NotNull(result, "result"); Assert.NotNull(result.Url, RETURN_URL); mocks.OAuthWebSecurity.Verify(ows => ows.Login(PROVIDER, PROVIDER_USERID, false),Times.Exactly(1)); }
public void AuthenticatedUser_And_NewProviderUserId_Should_UpdateAccount() { // Arrange var mocks = new OAuthMocks(); var controller = GetController(mocks); var authResult = new AuthenticationResult(true, PROVIDER, PROVIDER_USERID, USERNAME, null); mocks.Response.Setup(r => r.ApplyAppPathModifier(It.IsAny<string>())).Returns(RETURN_URL); mocks.OAuthWebSecurity.Setup(ows => ows.VerifyAuthentication(It.IsAny<string>())).Returns(authResult); mocks.OAuthWebSecurity.Setup(ows => ows.Login(PROVIDER, PROVIDER_USERID, false)).Returns(false); mocks.Identity.Setup(i => i.IsAuthenticated).Returns(true); mocks.Identity.Setup(i => i.Name).Returns(USERNAME); mocks.OAuthWebSecurity.Setup(ows => ows.CreateOrUpdateAccount(PROVIDER, PROVIDER_USERID, USERNAME)); // Act var result = controller.ExternalLoginCallback(RETURN_URL) as RedirectResult; // Assert Assert.NotNull(result, "result"); Assert.NotNull(result.Url, RETURN_URL); mocks.OAuthWebSecurity.Verify(ows => ows.CreateOrUpdateAccount(PROVIDER, PROVIDER_USERID, USERNAME), Times.Exactly(1)); }