public async Task TestAuthOptions(string header, string user, string password, bool asName, bool asId, bool asEmail) { var currentUser = new IdentityUser { UserName = user }; SetupMockUserManager(user, asName, asId, asEmail, currentUser); SetupMockSignInManagerSuccess(password, currentUser); var sp = new ServiceCollection() .Configure <BasicAuthenticationOptions>(options => { options.FindsByName = asName; options.FindsById = asId; options.FindsByEmail = asEmail; }) .AddTransient <UserManager <IdentityUser> >(_ => MockUserManager.Object) .AddTransient <SignInManager <IdentityUser> >(_ => MockSignInManager.Object) .AddTransient(_ => MockLogger.Object) .BuildServiceProvider(); var contextMock = BuildContextMock(header, sp); var next = new RequestDelegate(_ => Task.CompletedTask); var middleware = new BasicAuthenticationMiddleware <IdentityUser>(next); await middleware.InvokeAsync(contextMock.Object); Assert.True(contextMock.Object.User.Identity.IsAuthenticated); }
public async void TestEmptyContext() { var context = new DefaultHttpContext(); var next = new RequestDelegate(_ => Task.CompletedTask); var oldUser = context.User; var middleware = new BasicAuthenticationMiddleware <IdentityUser>(next); await middleware.InvokeAsync(context); // User が変更されないこと Assert.Equal(oldUser, context.User); // 認証されていないこと Assert.False(context.User.Identity.IsAuthenticated); }