コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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");
        }
コード例 #5
0
    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);
    }