public async Task NullForwardSelectorUsesDefault() { var services = new ServiceCollection().AddLogging(); services.AddAuthentication(o => { o.DefaultScheme = MicrosoftAccountDefaults.AuthenticationScheme; o.AddScheme <TestHandler2>("auth1", "auth1"); o.AddScheme <TestHandler3>("selector", "selector"); o.AddScheme <TestHandler>("specific", "specific"); }) .AddMicrosoftAccount(o => { ConfigureDefaults(o); o.ForwardDefault = "auth1"; o.ForwardDefaultSelector = _ => null; }); var specific = new TestHandler(); services.AddSingleton(specific); var forwardDefault = new TestHandler2(); services.AddSingleton(forwardDefault); var selector = new TestHandler3(); services.AddSingleton(selector); var sp = services.BuildServiceProvider(); var context = new DefaultHttpContext(); context.RequestServices = sp; await context.AuthenticateAsync(); Assert.Equal(1, forwardDefault.AuthenticateCount); await context.ForbidAsync(); Assert.Equal(1, forwardDefault.ForbidCount); await context.ChallengeAsync(); Assert.Equal(1, forwardDefault.ChallengeCount); await Assert.ThrowsAsync <InvalidOperationException>(() => context.SignOutAsync()); await Assert.ThrowsAsync <InvalidOperationException>(() => context.SignInAsync(new ClaimsPrincipal())); Assert.Equal(0, selector.AuthenticateCount); Assert.Equal(0, selector.ForbidCount); Assert.Equal(0, selector.ChallengeCount); Assert.Equal(0, selector.SignInCount); Assert.Equal(0, selector.SignOutCount); Assert.Equal(0, specific.AuthenticateCount); Assert.Equal(0, specific.ForbidCount); Assert.Equal(0, specific.ChallengeCount); Assert.Equal(0, specific.SignInCount); Assert.Equal(0, specific.SignOutCount); }
public void unsubscribed_messages_noone_should_handle_it() { var handler1 = new TestHandler(); var handler2 = new TestHandler2(); var handler3 = new TestHandler3(); Bus.Publish(new TestMessage()); Bus.Publish(new TestMessage2()); Bus.Publish(new TestMessage3()); Assert.That(handler1.DidntHandleAnyMessages() && handler2.DidntHandleAnyMessages() && handler3.DidntHandleAnyMessages()); }
public void TestEventDispatcherToAllHandlers() { var handler1 = new TestHandler3(); var handler2 = new TestHandler3(); Builder.RegisterInstance(handler1).AsHandler(); Builder.RegisterInstance(handler2).AsHandler(); Dispatcher.Dispatch(new TestEvent1 { Value = "Test" }); handler1.Value.Should().Be("Test"); handler2.Value.Should().Be("Test"); }
public async Task SpecificForwardWinsOverSelectorAndDefault() { var services = new ServiceCollection().AddLogging(); var builder = services.AddAuthentication(o => { o.DefaultScheme = DefaultScheme; o.AddScheme <TestHandler2>("auth1", "auth1"); o.AddScheme <TestHandler3>("selector", "selector"); o.AddScheme <TestHandler>("specific", "specific"); }); RegisterAuth(builder, o => { o.ForwardDefault = "auth1"; o.ForwardDefaultSelector = _ => "selector"; o.ForwardAuthenticate = "specific"; o.ForwardChallenge = "specific"; o.ForwardSignIn = "specific"; o.ForwardSignOut = "specific"; o.ForwardForbid = "specific"; }); var specific = new TestHandler(); services.AddSingleton(specific); var forwardDefault = new TestHandler2(); services.AddSingleton(forwardDefault); var selector = new TestHandler3(); services.AddSingleton(selector); var sp = services.BuildServiceProvider(); var context = new DefaultHttpContext(); context.RequestServices = sp; await context.AuthenticateAsync(); Assert.Equal(1, specific.AuthenticateCount); await context.ForbidAsync(); Assert.Equal(1, specific.ForbidCount); await context.ChallengeAsync(); Assert.Equal(1, specific.ChallengeCount); if (SupportsSignOut) { await context.SignOutAsync(); Assert.Equal(1, specific.SignOutCount); } else { await Assert.ThrowsAsync <InvalidOperationException>(() => context.SignOutAsync()); } if (SupportsSignIn) { await context.SignInAsync(new ClaimsPrincipal(new ClaimsIdentity("whatever"))); Assert.Equal(1, specific.SignInCount); } else { await Assert.ThrowsAsync <InvalidOperationException>(() => context.SignInAsync(new ClaimsPrincipal())); } Assert.Equal(0, forwardDefault.AuthenticateCount); Assert.Equal(0, forwardDefault.ForbidCount); Assert.Equal(0, forwardDefault.ChallengeCount); Assert.Equal(0, forwardDefault.SignInCount); Assert.Equal(0, forwardDefault.SignOutCount); Assert.Equal(0, selector.AuthenticateCount); Assert.Equal(0, selector.ForbidCount); Assert.Equal(0, selector.ChallengeCount); Assert.Equal(0, selector.SignInCount); Assert.Equal(0, selector.SignOutCount); }