public void should_read_only_events_backward_with_event_type_regex()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.EventType,
                FilterType.Regex, new[] { @"^.*other-event.*$" });
            var eventFilter = EventFilter.Get(filter);

            var result = ReadIndex.ReadAllEventsBackwardFiltered(_backwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(2, result.Records.Count);
        }
        public void should_read_only_events_forward_with_stream_id_regex()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.StreamId,
                FilterType.Regex, new[] { @"^.*ES2.*$" });
            var eventFilter = EventFilter.Get(filter);

            var result = ReadIndex.ReadAllEventsForwardFiltered(_forwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(1, result.Records.Count);
        }
        public void should_read_only_events_forward_with_event_type_prefix()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.EventType,
                FilterType.Prefix, new[] { "event-type" });
            var eventFilter = EventFilter.Get(filter);

            var result = ReadIndex.ReadAllEventsForwardFiltered(_forwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(2, result.Records.Count);
        }
        public void should_read_only_events_backward_with_stream_id_prefix()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.StreamId,
                FilterType.Prefix, new[] { "ES2" });
            var eventFilter = EventFilter.Get(filter);

            var result = ReadIndex.ReadAllEventsBackwardFiltered(_backwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(1, result.Records.Count);
        }
        public void should_filter_out_disallowed_streams_when_reading_events_forward_with_stream_id_regex()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.StreamId,
                FilterType.Regex, new[] { @"^.*istentsubsc.*$" });
            var eventFilter = EventFilter.Get(true, filter);

            var result = ReadIndex.ReadAllEventsForwardFiltered(_forwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(1, result.Records.Count);
            Assert.True(result.Records.All(x => x.Event.EventStreamId != _disallowedStream));
            Assert.True(result.Records.Any(x => x.Event.EventStreamId == _allowedStream2));
        }
        public void should_filter_out_disallowed_streams_when_reading_events_forward_with_event_type_prefix()
        {
            var filter = new TcpClientMessageDto.Filter(
                FilterContext.EventType,
                FilterType.Prefix, new[] { "event-type" });
            var eventFilter = EventFilter.Get(true, filter);

            var result = ReadIndex.ReadAllEventsForwardFiltered(_forwardReadPos, 10, 10, eventFilter);

            Assert.AreEqual(2, result.Records.Count);
            Assert.True(result.Records.All(x => x.Event.EventStreamId != _disallowedStream));
            Assert.True(result.Records.Any(x => x.Event.EventStreamId == _allowedStream1));
            Assert.True(result.Records.Any(x => x.Event.EventStreamId == _allowedStream2));
        }
Exemple #7
0
 public FilteredEmbeddedSubscription(
     ILogger log, IPublisher publisher, Guid connectionId, TaskCompletionSource <EventStoreSubscription> source,
     string streamId, UserCredentials userCredentials, IAuthenticationProvider authenticationProvider,
     bool resolveLinkTos, TcpClientMessageDto.Filter filter,
     Func <EventStoreSubscription, ResolvedEvent, Task> eventAppeared,
     Func <EventStoreSubscription, Position, Task> checkpointReached, int checkpointInterval,
     Action <EventStoreSubscription, SubscriptionDropReason, Exception> subscriptionDropped)
     : base(log, publisher, connectionId, source, streamId, userCredentials, authenticationProvider,
            resolveLinkTos, eventAppeared, subscriptionDropped)
 {
     _userCredentials        = userCredentials;
     _authenticationProvider = authenticationProvider;
     _resolveLinkTos         = resolveLinkTos;
     _filter             = filter;
     _eventAppeared      = eventAppeared;
     _checkpointReached  = checkpointReached;
     _checkpointInterval = checkpointInterval;
 }
Exemple #8
0
        public static IEventFilter Get(TcpClientMessageDto.Filter filter)
        {
            if (filter == null || filter.Data.Length == 0)
            {
                return(new AlwaysAllowStrategy());
            }

            return(filter.Context switch {
                TcpClientMessageDto.Filter.FilterContext.EventType when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Prefix =>
                EventType.Prefixes(filter.Data),
                TcpClientMessageDto.Filter.FilterContext.EventType when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Regex =>
                EventType.Regex(filter.Data[0]),
                TcpClientMessageDto.Filter.FilterContext.StreamId when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Prefix =>
                StreamName.Prefixes(filter.Data),
                TcpClientMessageDto.Filter.FilterContext.StreamId when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Regex =>
                StreamName.Regex(filter.Data[0]),
                _ => throw new Exception()                 // Invalid filter
            });
Exemple #9
0
        public static IEventFilter Get(bool isAllStream, TcpClientMessageDto.Filter filter)
        {
            if (filter == null || filter.Data.Length == 0)
            {
                return(isAllStream ? (IEventFilter) new DefaultAllFilterStrategy() : new DefaultStreamFilterStrategy());
            }

            return(filter.Context switch {
                TcpClientMessageDto.Filter.FilterContext.EventType when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Prefix =>
                EventType.Prefixes(isAllStream, filter.Data),
                TcpClientMessageDto.Filter.FilterContext.EventType when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Regex =>
                EventType.Regex(isAllStream, filter.Data[0]),
                TcpClientMessageDto.Filter.FilterContext.StreamId when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Prefix =>
                StreamName.Prefixes(isAllStream, filter.Data),
                TcpClientMessageDto.Filter.FilterContext.StreamId when filter.Type ==
                TcpClientMessageDto.Filter.FilterType.Regex =>
                StreamName.Regex(isAllStream, filter.Data[0]),
                _ => throw new Exception()                 // Invalid filter
            });
Exemple #10
0
        public void StartFilteredSubscription(Guid correlationId, TaskCompletionSource <EventStoreSubscription> source,
                                              string stream, UserCredentials userCredentials, bool resolveLinkTos, TcpClientMessageDto.Filter filter,
                                              Func <EventStoreSubscription, ResolvedEvent, Task> eventAppeared,
                                              Func <EventStoreSubscription, Position, Task> checkpointReached, int checkpointInterval,
                                              Action <EventStoreSubscription, SubscriptionDropReason, Exception> subscriptionDropped)
        {
            var subscription = new FilteredEmbeddedSubscription(
                _log, _publisher, _connectionId, source, stream, userCredentials, _authenticationProvider,
                resolveLinkTos, filter, eventAppeared, checkpointReached, checkpointInterval,
                subscriptionDropped);

            _subscriptions.StartSubscription(correlationId, subscription);
        }