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)); }
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; }
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 });
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 });
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); }