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") }; }