public IComponent Apply(IHostBuilder hostBuilder) { var eventMonitorSink = new EventMonitorSink(); var store = new Store(); hostBuilder.ConfigureServices(services => { services .AddSingleton <IClientStore, Store>(sp => store) .AddSingleton <IResourceStore, Store>(sp => store) .AddSingleton <IEventSink, EventMonitorSink>(sp => eventMonitorSink); services .AddIdentityServer(i => { i.Events.RaiseErrorEvents = true; i.Events.RaiseFailureEvents = true; i.Events.RaiseInformationEvents = true; i.Events.RaiseSuccessEvents = true; }) .AddDeveloperSigningCredential(); }); Uri?baseAddress = null; hostBuilder.ConfigureWebHostDefaults(w => { w.UseUrls("http://localhost:3501"); var urls = w.GetSetting("urls"); var url = urls.Split(';') .Select(x => x.Replace("*", "localhost")) .Select(x => new { Url = x, Rank = x.Contains("localhost") ? 0 : 1 }) .OrderBy(x => x.Rank) .Select(x => x.Url) .First(); baseAddress = new Uri(url); w.Configure((wctx, app) => app.UseIdentityServer(IdentityServerOptions)); }); var httpClient = new HttpClient() { BaseAddress = baseAddress }; var client = new ComponentClient( httpClient, new DiscoveryCache(baseAddress.AbsoluteUri.ToLower(), httpClient)); return(new IdSvr4Component(store, eventMonitorSink, client)); }
public async Task Given_InnerSink_When_Persist_Then_CallsInnerPersist() { var @event = A.Dummy <Event>(); var innerSink = A.Fake <IEventSink>(); IEventMonitorSink sink = new EventMonitorSink(innerSink); // Act await sink.PersistAsync(@event); // Assert A.CallTo(() => innerSink.PersistAsync(@event)).MustHaveHappened(); }
public async Task Given_Evaluator_When_AddEvaluatorAndPersist_Then_EvaluatorChecked() { var @event = A.Dummy <Event>(); var innerSink = A.Dummy <IEventSink>(); var evaluator = A.Fake <IEventOccurredConditionEvaluator>(); IEventMonitorSink sink = new EventMonitorSink(innerSink); // Act sink.AddEvaluator(@event.GetType(), evaluator); await sink.PersistAsync(@event); // Assert A.CallTo(() => evaluator.CheckEventAsync(@event, A <CancellationToken> ._)).MustHaveHappened(); }
public async Task Given_EvaluatorOfDifferentType_When_Persist_Then_EvaluatorIsNotChecked() { var @event = A.Dummy <Event>(); var innerSink = A.Dummy <IEventSink>(); var evaluator = A.Fake <IEventOccurredConditionEvaluator>(); IEventMonitorSink sink = new EventMonitorSink(innerSink); sink.AddEvaluator(typeof(DeviceAuthorizationFailureEvent), evaluator); // Act await sink.PersistAsync(@event); // Assert A.CallTo(() => evaluator.CheckEventAsync(@event, A <CancellationToken> ._)).MustNotHaveHappened(); }