public void ShouldProcessSignInRequestWhenIdentityProviderIsProvided()
        {
            var protocolHandler = new Mock<IProtocolHandler>();
            var defaultProtocolDiscovery = new Mock<IProtocolDiscovery>();
            var federationContext = new Mock<IFederationContext>();
            var configuration = new Mock<IConfigurationRepository>();

            defaultProtocolDiscovery.Setup(s => s.RetrieveProtocolHandler(It.IsAny<ClaimProvider>()))
                .Returns(() => protocolHandler.Object);

            configuration.Setup(c => c.RetrieveIssuer(It.IsAny<Uri>()))
                .Returns(() => new ClaimProvider {
                                    Identifier = new Uri("https://identifier"),
                                    Url = new Uri("https://url")
                });
            configuration.Setup(c => c.RetrieveScope(It.IsAny<Uri>()))
                .Returns(() => new Scope
                {
                    Identifier = new Uri("https://relyingPartyIdentifier"),
                    Url = new Uri("https://url")
                });

            var controller = new AuthenticationController(defaultProtocolDiscovery.Object, federationContext.Object, configuration.Object);

            federationContext.SetupGet(s => s.Realm).Returns("https://relyingPartyIdentifier");
            federationContext.SetupGet(s => s.OriginalUrl).Returns("https://originalUrl");

            controller.SetFakeControllerContext();
            controller.Request.SetupRequestUrl("https://somedomain.com/?wa=wsignin1.0&wtrealm=blah&whr=https://identifier");

            controller.Authenticate();

            protocolHandler.Verify(
                p =>
                p.ProcessSignInRequest(
                    It.Is<Scope>(s => s.Identifier == new Uri("https://relyingPartyIdentifier")), It.IsAny<HttpContextBase>()),
                Times.Once());
        }
        public void ShouldRenderTheIdentityProviderSelectorViewWhenNoIdentityProviderIdentifierProvided()
        {
            var protocolHandler = new Mock<IProtocolHandler>();
            var defaultProtocolDiscovery = new Mock<IProtocolDiscovery>();
            var federationContext = new Mock<IFederationContext>();
            var configuration = new Mock<IConfigurationRepository>();

            defaultProtocolDiscovery.Setup(s => s.RetrieveProtocolHandler(It.IsAny<ClaimProvider>()))
                .Returns(() => protocolHandler.Object);

            var controller = new AuthenticationController(defaultProtocolDiscovery.Object, federationContext.Object, configuration.Object);

            controller.SetFakeControllerContext();
            controller.Request.SetupRequestUrl("https://somedomain.com/?wa=wsignin1.0&wtrealm=blah");
            controller.HttpContext.SetAnonymousUser();

            var result = controller.ProcessFederationRequest();

            protocolHandler.Verify(p => p.ProcessSignInRequest(It.IsAny<Scope>(), It.IsAny<HttpContextBase>()), Times.Never());
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual("HomeRealmDiscovery", (((RedirectToRouteResult)result)).RouteValues["action"]);
        }