示例#1
0
        public static HttpClient CreateHttpClient()
        {
            AppSettings              settings      = new AppSettings();
            AccessTokenProvider      loginProvider = new AccessTokenProvider();
            OAuth2BearerTokenHandler oauth2Handler = new OAuth2BearerTokenHandler(settings, loginProvider);
            HttpClient httpClient = HttpClientFactory.Create(oauth2Handler);

            httpClient.BaseAddress = new Uri(BaseAddress);
            httpClient.Timeout     = TimeSpan.FromDays(1);
            return(httpClient);
        }
        public void Init()
        {
            user = new IdentityUser(userName);

            ClaimsIdentity identity = new ClaimsIdentity("ExternalBearer", factory.UserNameClaimType, factory.RoleClaimType);

            identity.AddClaim(new Claim(factory.UserIdClaimType, "FacebookID", ClaimValueTypes.String, provider));

            Mock <UserManager <IdentityUser> > mock =
                new Mock <UserManager <IdentityUser> >(new Mock <IUserStore <IdentityUser> >().Object);

            mock.Setup(mgr => mgr.CreateAsync(It.Is <IdentityUser>(u => u.UserName == userName), password))
            .Returns(Task.FromResult(IdentityResult.Success));
            mock.Setup(mgr => mgr.CreateAsync(It.Is <IdentityUser>(u => u.UserName == userName)))
            .Returns(Task.FromResult(IdentityResult.Success));
            mock.Setup(mgr => mgr.CreateAsync(It.Is <IdentityUser>(u => u.UserName == invalidUserName), password))
            .Returns(Task.FromResult(IdentityResult.Failed("User already exists")));
            mock.Setup(mgr => mgr.CreateAsync(It.Is <IdentityUser>(u => u.UserName == invalidUserName)))
            .Returns(Task.FromResult(IdentityResult.Failed("User already exists")));
            mock.Setup(mgr => mgr.FindAsync(userName, password)).Returns(Task.FromResult(user));
            mock.Setup(mgr => mgr.FindAsync(invalidUserName, password))
            .Returns(Task.FromResult <IdentityUser>(null));
            mock.Setup(mgr => mgr.FindAsync(userName, invalidPassword))
            .Returns(Task.FromResult <IdentityUser>(null));
            mock.Setup(mgr => mgr.CreateIdentityAsync(It.Is <IdentityUser>(u => u.UserName == userName), It.IsAny <string>()))
            .Returns((IdentityUser u, string authType) =>
                     Task.FromResult(new ClaimsIdentity(claims, authType, factory.UserNameClaimType, factory.RoleClaimType)));

            Startup.UserManagerFactory               = () => mock.Object;
            Startup.OAuthOptions.Provider            = new ApplicationOAuthProvider(Startup.PublicClientId, Startup.UserManagerFactory);
            Startup.OAuthOptions.AccessTokenProvider = new AuthenticationTokenProvider()
            {
                OnReceive = context =>
                {
                    if (context.Token == externalToken)
                    {
                        context.SetTicket(
                            new AuthenticationTicket(identity,
                                                     new AuthenticationProperties()
                        {
                            ExpiresUtc = DateTimeOffset.Now.AddDays(1)
                        }));
                    }
                }
            };

            server = TestServer.Create(app =>
            {
                new Todo.Web.Startup().Configuration(app);
                HttpConfiguration config = new HttpConfiguration();
                WebApiConfig.Register(config);
                app.UseWebApi(config);
            });

            oAuthHandler = new OAuth2BearerTokenHandler(new InMemoryAccessTokenStore(), new NullAccessTokenProvider());
            DelegatingHandler testHandler = new NonDisposableRequestHandler();

            client = new AccountClient(HttpClientFactory.Create(server.Handler, oAuthHandler, testHandler));
            client.HttpClient.BaseAddress = new Uri("http://localhost/");

            claims = new List <Claim>()
            {
                new Claim(factory.UserIdClaimType, user.Id, "http://www.w3.org/2001/XMLSchema#string"),
                new Claim(factory.UserNameClaimType, userName, "http://www.w3.org/2001/XMLSchema#string"),
                new Claim(
                    "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider",
                    "ASP.NET Identity",
                    "http://www.w3.org/2001/XMLSchema#string")
            };
        }