Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }