Example #1
0
 private TestLoader(int time, TestHandler1 handler, TestHandler2 handler2)
 {
     _Time     = time;
     _Handler  = handler;
     _Handler2 = handler2;
     _Spend    = 0;
 }
Example #2
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);
        }
Example #3
0
        public static TimeSpan GetMultiThreadSpend(int time, TestHandler1 handler, TestHandler2 handler2)
        {
            TestLoader tests = new TestLoader(time, handler, handler2);

            tests.RunMultiThreadTest();
            return(new TimeSpan(tests._Spend));
        }
Example #4
0
        public static TimeSpan GetSingleThreadSpend(int time, TestHandler1 handler, TestHandler2 handler2)
        {
            TestLoader tests = new TestLoader(time, handler, handler2);

            tests.SingleThreadWorking();
            return(new TimeSpan(tests._Spend));
        }
Example #5
0
        public async Task ForwardSignInThrows()
        {
            var services = new ServiceCollection().AddLogging();

            services.AddAuthentication(o =>
            {
                o.DefaultScheme = MicrosoftAccountDefaults.AuthenticationScheme;
                o.AddScheme <TestHandler2>("auth1", "auth1");
                o.AddScheme <TestHandler>("specific", "specific");
            })
            .AddMicrosoftAccount(o =>
            {
                ConfigureDefaults(o);
                o.ForwardDefault = "auth1";
                o.ForwardSignOut = "specific";
            });

            var specific = new TestHandler();

            services.AddSingleton(specific);
            var forwardDefault = new TestHandler2();

            services.AddSingleton(forwardDefault);

            var sp      = services.BuildServiceProvider();
            var context = new DefaultHttpContext();

            context.RequestServices = sp;

            await Assert.ThrowsAsync <InvalidOperationException>(() => context.SignInAsync(new ClaimsPrincipal()));
        }
Example #6
0
    public async Task ForwardAuthenticateOnlyRunsTransformOnceByDefault()
    {
        var services  = new ServiceCollection().AddLogging();
        var transform = new RunOnce();
        var builder   = services.AddSingleton <IClaimsTransformation>(transform).AddAuthentication(o =>
        {
            o.DefaultScheme = DefaultScheme;
            o.AddScheme <TestHandler2>("auth1", "auth1");
            o.AddScheme <TestHandler>("specific", "specific");
        });

        RegisterAuth(builder, o =>
        {
            o.ForwardDefault      = "auth1";
            o.ForwardAuthenticate = "specific";
        });

        var specific = new TestHandler();

        services.AddSingleton(specific);
        var forwardDefault = new TestHandler2();

        services.AddSingleton(forwardDefault);

        var sp      = services.BuildServiceProvider();
        var context = new DefaultHttpContext();

        context.RequestServices = sp;

        await context.AuthenticateAsync();

        Assert.Equal(1, transform.Ran);
    }
Example #7
0
        static void Main()
        {
            TestHandler1 xTestHandler1 = new TestHandler1();
            TestHandler2 xTestHandler2 = new TestHandler2();

            Console.WriteLine("start run... ThreadID: " + Thread.CurrentThread.ManagedThreadId);

            NFIDENTID xID1 = NFCActorMng.Intance().CreateActor(xTestHandler1.Handler);
            NFIDENTID xID2 = NFCActorMng.Intance().CreateActor(xTestHandler2.Handler);

             NFIActorMessage xMsgData = new NFIActorMessage();
             xMsgData.data = "test";
             //xMsgData.bAsync = false;//控制为同步消息还是异步消息
             xMsgData.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_TEST_MSG;

             System.DateTime currentTime = new System.DateTime();
             currentTime = System.DateTime.Now;

             NFCActorMng.Intance().SendMsg(xID1, xID2, xMsgData);

             for (int i = 0; i < 100000; ++i )
             {
                 NFIActorMessage xMsg = new NFIActorMessage();
                 xMsg.data = "test";
                 //xMsg.bAsync = false;//控制为同步消息还是异步消息
                 xMsg.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_TEST_MSG;

                 TestHandler1 xTest1 = new TestHandler1();
                 TestHandler2 xTest2 = new TestHandler2();

                 NFIDENTID x1 = NFCActorMng.Intance().CreateActor(xTest1.Handler);
                 NFIDENTID x2 = NFCActorMng.Intance().CreateActor(xTest2.Handler);

                 NFCActorMng.Intance().SendMsg(x1, x2, xMsg);
             }

             Console.WriteLine("start loop... ThreadID: " + Thread.CurrentThread.ManagedThreadId);

            while(true)
            {
                Thread.Sleep(1);

                System.TimeSpan ts = System.DateTime.Now - currentTime;
                if (ts.TotalMilliseconds > 10000)
                {
                    int nCount = TestHandler1.i + TestHandler2.i;
                    Console.WriteLine("Count : " + nCount);

                    break;
                }
            }

            while (true)
            {
                Thread.Sleep(1);
            }

            NFCActorMng.Intance().ReleaseAllActor();
        }
Example #8
0
        public async Task VirtualSchemeTargetsForwardWithDefaultTarget()
        {
            var services = new ServiceCollection().AddOptions().AddLogging();

            services.AddAuthentication(o =>
            {
                o.AddScheme <TestHandler>("auth1", "auth1");
                o.AddScheme <TestHandler2>("auth2", "auth2");
            })
            .AddPolicyScheme("forward", "forward", p => p.ForwardDefault = "auth1");

            var handler1 = new TestHandler();

            services.AddSingleton(handler1);
            var handler2 = new TestHandler2();

            services.AddSingleton(handler2);

            var sp      = services.BuildServiceProvider();
            var context = new DefaultHttpContext();

            context.RequestServices = sp;

            Assert.Equal(0, handler1.AuthenticateCount);
            Assert.Equal(0, handler1.ForbidCount);
            Assert.Equal(0, handler1.ChallengeCount);
            Assert.Equal(0, handler1.SignInCount);
            Assert.Equal(0, handler1.SignOutCount);
            Assert.Equal(0, handler2.AuthenticateCount);
            Assert.Equal(0, handler2.ForbidCount);
            Assert.Equal(0, handler2.ChallengeCount);
            Assert.Equal(0, handler2.SignInCount);
            Assert.Equal(0, handler2.SignOutCount);

            await context.AuthenticateAsync("forward");

            Assert.Equal(1, handler1.AuthenticateCount);
            Assert.Equal(0, handler2.AuthenticateCount);

            await context.ForbidAsync("forward");

            Assert.Equal(1, handler1.ForbidCount);
            Assert.Equal(0, handler2.ForbidCount);

            await context.ChallengeAsync("forward");

            Assert.Equal(1, handler1.ChallengeCount);
            Assert.Equal(0, handler2.ChallengeCount);

            await context.SignOutAsync("forward");

            Assert.Equal(1, handler1.SignOutCount);
            Assert.Equal(0, handler2.SignOutCount);

            await context.SignInAsync("forward", new ClaimsPrincipal());

            Assert.Equal(1, handler1.SignInCount);
            Assert.Equal(0, handler2.SignInCount);
        }
Example #9
0
        public void any_message_no_other_messages_should_be_published()
        {
            var handler1 = new TestHandler();
            var handler2 = new TestHandler2();

            Bus.Subscribe <TestMessage>(handler1);
            Bus.Subscribe <TestMessage2>(handler2);

            Bus.Publish(new TestMessage());

            Assert.That(handler1.HandledMessages.ContainsSingle <TestMessage>() &&
                        handler2.DidntHandleAnyMessages());
        }
Example #10
0
        public void any_message_no_other_messages_should_be_published()
        {
            var handler1 = new TestHandler();
            var handler2 = new TestHandler2();

            Bus.Subscribe<TestMessage>(handler1);
            Bus.Subscribe<TestMessage2>(handler2);

            Bus.Publish(new TestMessage());

            Assert.That(handler1.HandledMessages.ContainsSingle<TestMessage>() &&
                        handler2.DidntHandleAnyMessages());
        }
Example #11
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());
        }
Example #12
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());
        }
Example #13
0
        public void TestSendReturnsAggregateTaskOfEventHandler()
        {
            var handler1 = new TestHandler2();
            var handler2 = new TestHandler2();

            Builder.RegisterInstance(handler1).AsHandler();
            Builder.RegisterInstance(handler2).AsHandler();

            var task = Container.Resolve <IDispatcher>().Send(new TestEvent1());

            task.IsCompleted.Should().BeFalse();

            handler1.TaskCompletionSource.SetResult(true);
            task.IsCompleted.Should().BeFalse();

            handler2.TaskCompletionSource.SetCanceled();
            task.IsCompleted.Should().BeTrue();
        }
Example #14
0
        public async Task ForwardChallengeWinsOverDefault()
        {
            var services = new ServiceCollection().AddLogging();

            services.AddAuthentication(o =>
            {
                o.DefaultScheme       = "default";
                o.DefaultSignInScheme = "auth1";
                o.AddScheme <TestHandler>("specific", "specific");
                o.AddScheme <TestHandler2>("auth1", "auth1");
            })
            .AddOAuth("default", o =>
            {
                ConfigureDefaults(o);
                o.ForwardDefault   = "auth1";
                o.ForwardChallenge = "specific";
            });

            var specific = new TestHandler();

            services.AddSingleton(specific);
            var forwardDefault = new TestHandler2();

            services.AddSingleton(forwardDefault);

            var sp      = services.BuildServiceProvider();
            var context = new DefaultHttpContext();

            context.RequestServices = sp;

            await context.ChallengeAsync();

            Assert.Equal(0, specific.SignOutCount);
            Assert.Equal(0, specific.AuthenticateCount);
            Assert.Equal(0, specific.ForbidCount);
            Assert.Equal(1, specific.ChallengeCount);
            Assert.Equal(0, specific.SignInCount);

            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);
        }
Example #15
0
    public async Task ForwardSignInWinsOverDefault()
    {
        if (SupportsSignIn)
        {
            var services = new ServiceCollection().AddLogging();

            var builder = services.AddAuthentication(o =>
            {
                o.DefaultScheme = DefaultScheme;
                o.AddScheme <TestHandler2>("auth1", "auth1");
                o.AddScheme <TestHandler>("specific", "specific");
            });
            RegisterAuth(builder, o =>
            {
                o.ForwardDefault = "auth1";
                o.ForwardSignIn  = "specific";
            });

            var specific = new TestHandler();
            services.AddSingleton(specific);
            var forwardDefault = new TestHandler2();
            services.AddSingleton(forwardDefault);

            var sp      = services.BuildServiceProvider();
            var context = new DefaultHttpContext();
            context.RequestServices = sp;

            await context.SignInAsync(new ClaimsPrincipal(new ClaimsIdentity("whatever")));

            Assert.Equal(1, specific.SignInCount);
            Assert.Equal(0, specific.AuthenticateCount);
            Assert.Equal(0, specific.ForbidCount);
            Assert.Equal(0, specific.ChallengeCount);
            Assert.Equal(0, specific.SignOutCount);

            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);
        }
    }
Example #16
0
    public async Task ForwardForbidWinsOverDefault()
    {
        var services = new ServiceCollection().ConfigureAuthTestServices();
        var builder  = services.AddAuthentication(o =>
        {
            o.DefaultScheme = DefaultScheme;
            o.AddScheme <TestHandler2>("auth1", "auth1");
            o.AddScheme <TestHandler>("specific", "specific");
        });

        RegisterAuth(builder, o =>
        {
            o.ForwardDefault = "auth1";
            o.ForwardForbid  = "specific";
        });

        var specific = new TestHandler();

        services.AddSingleton(specific);
        var forwardDefault = new TestHandler2();

        services.AddSingleton(forwardDefault);

        var sp      = services.BuildServiceProvider();
        var context = new DefaultHttpContext();

        context.RequestServices = sp;

        await context.ForbidAsync();

        Assert.Equal(0, specific.SignOutCount);
        Assert.Equal(0, specific.AuthenticateCount);
        Assert.Equal(1, specific.ForbidCount);
        Assert.Equal(0, specific.ChallengeCount);
        Assert.Equal(0, specific.SignInCount);

        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);
    }
Example #17
0
        public async Task SpecificTargetAlwaysWinsOverDefaultTarget()
        {
            var services = new ServiceCollection().AddOptions().AddLogging();

            services.AddAuthentication(o =>
            {
                o.AddScheme <TestHandler>("auth1", "auth1");
                o.AddScheme <TestHandler2>("auth2", "auth2");
            })
            .AddPolicyScheme("forward", "forward", p => {
                p.ForwardDefault         = "auth2";
                p.ForwardDefaultSelector = ctx => "auth2";
                p.ForwardAuthenticate    = "auth1";
                p.ForwardSignIn          = "auth1";
                p.ForwardSignOut         = "auth1";
                p.ForwardForbid          = "auth1";
                p.ForwardChallenge       = "auth1";
            });

            var handler1 = new TestHandler();

            services.AddSingleton(handler1);
            var handler2 = new TestHandler2();

            services.AddSingleton(handler2);

            var sp      = services.BuildServiceProvider();
            var context = new DefaultHttpContext();

            context.RequestServices = sp;

            Assert.Equal(0, handler1.AuthenticateCount);
            Assert.Equal(0, handler1.ForbidCount);
            Assert.Equal(0, handler1.ChallengeCount);
            Assert.Equal(0, handler1.SignInCount);
            Assert.Equal(0, handler1.SignOutCount);
            Assert.Equal(0, handler2.AuthenticateCount);
            Assert.Equal(0, handler2.ForbidCount);
            Assert.Equal(0, handler2.ChallengeCount);
            Assert.Equal(0, handler2.SignInCount);
            Assert.Equal(0, handler2.SignOutCount);

            await context.AuthenticateAsync("forward");

            Assert.Equal(1, handler1.AuthenticateCount);
            Assert.Equal(0, handler2.AuthenticateCount);

            await context.ForbidAsync("forward");

            Assert.Equal(1, handler1.ForbidCount);
            Assert.Equal(0, handler2.ForbidCount);

            await context.ChallengeAsync("forward");

            Assert.Equal(1, handler1.ChallengeCount);
            Assert.Equal(0, handler2.ChallengeCount);

            await context.SignOutAsync("forward");

            Assert.Equal(1, handler1.SignOutCount);
            Assert.Equal(0, handler2.SignOutCount);

            await context.SignInAsync("forward", new ClaimsPrincipal(new ClaimsIdentity("whatever")));

            Assert.Equal(1, handler1.SignInCount);
            Assert.Equal(0, handler2.SignInCount);
        }
Example #18
0
        static void Main()
        {
            TestHandler1 xTestHandler1 = new TestHandler1();
            TestHandler2 xTestHandler2 = new TestHandler2();

            Console.WriteLine("start run... ThreadID: " + Thread.CurrentThread.ManagedThreadId);

            NFGUID xID1 = NFCActorMng.Intance().CreateActor(xTestHandler1.Handler);
            NFGUID xID2 = NFCActorMng.Intance().CreateActor(xTestHandler2.Handler);

            NFIActorMessage xMsgData = new NFIActorMessage();

            xMsgData.data = "test";
            //xMsgData.bAsync = false;//控制为同步消息还是异步消息
            xMsgData.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_TEST_MSG;

            System.DateTime currentTime = new System.DateTime();
            currentTime = System.DateTime.Now;

            NFCActorMng.Intance().SendMsg(xID1, xID2, xMsgData);


            for (int i = 0; i < 100000; ++i)
            {
                NFIActorMessage xMsg = new NFIActorMessage();
                xMsg.data = "test";
                //xMsg.bAsync = false;//控制为同步消息还是异步消息
                xMsg.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_TEST_MSG;

                TestHandler1 xTest1 = new TestHandler1();
                TestHandler2 xTest2 = new TestHandler2();

                NFGUID x1 = NFCActorMng.Intance().CreateActor(xTest1.Handler);
                NFGUID x2 = NFCActorMng.Intance().CreateActor(xTest2.Handler);

                NFCActorMng.Intance().SendMsg(x1, x2, xMsg);
            }

            Console.WriteLine("start loop... ThreadID: " + Thread.CurrentThread.ManagedThreadId);


            while (true)
            {
                Thread.Sleep(1);

                System.TimeSpan ts = System.DateTime.Now - currentTime;
                if (ts.TotalMilliseconds > 10000)
                {
                    int nCount = TestHandler1.i + TestHandler2.i;
                    Console.WriteLine("Count : " + nCount);

                    break;
                }
            }

            while (true)
            {
                Thread.Sleep(1);
            }

            NFCActorMng.Intance().ReleaseAllActor();
        }
Example #19
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);
    }