private TestLoader(int time, TestHandler1 handler, TestHandler2 handler2) { _Time = time; _Handler = handler; _Handler2 = handler2; _Spend = 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); }
public static TimeSpan GetMultiThreadSpend(int time, TestHandler1 handler, TestHandler2 handler2) { TestLoader tests = new TestLoader(time, handler, handler2); tests.RunMultiThreadTest(); return(new TimeSpan(tests._Spend)); }
public static TimeSpan GetSingleThreadSpend(int time, TestHandler1 handler, TestHandler2 handler2) { TestLoader tests = new TestLoader(time, handler, handler2); tests.SingleThreadWorking(); return(new TimeSpan(tests._Spend)); }
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())); }
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); }
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(); }
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); }
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()); }
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()); }
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 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(); }
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); }
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); } }
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); }
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); }
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(); }
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); }