diff --git a/samples/secure-with-tls/Program.cs b/samples/secure-with-tls/Program.cs index 0b17cc9f4..621ee46b1 100644 --- a/samples/secure-with-tls/Program.cs +++ b/samples/secure-with-tls/Program.cs @@ -2,7 +2,7 @@ // take the address from environment variable (when run with Docker) or use localhost by default var connectionString = Environment.GetEnvironmentVariable("ESDB__CONNECTION__STRING") - ?? "esdb://admin:changeit@localhost:2113?tls=true"; + ?? "esdb://admin:changeit@localhost:2113?tls=true&tlsVerifyCert=false"; Console.WriteLine($"Connecting to EventStoreDB at: {connectionString}"); diff --git a/samples/secure-with-tls/docker-compose.app.yml b/samples/secure-with-tls/docker-compose.app.yml index 34fbfa433..b96f84ae8 100644 --- a/samples/secure-with-tls/docker-compose.app.yml +++ b/samples/secure-with-tls/docker-compose.app.yml @@ -11,7 +11,7 @@ services: build: ./ environment: # URL should match the DNS name in certificate and container name - - ESDB__CONNECTION__STRING=esdb://admin:changeit@eventstore:2113?Tls=true + - ESDB__CONNECTION__STRING=esdb://admin:changeit@eventstore:2113?Tls=true&tlsVerifyCert=false depends_on: eventstore: condition: service_healthy diff --git a/test/EventStore.Client.Streams.Tests/Subscriptions/subscribe_to_stream.cs b/test/EventStore.Client.Streams.Tests/Subscriptions/subscribe_to_stream.cs index 034bf111c..9edced793 100644 --- a/test/EventStore.Client.Streams.Tests/Subscriptions/subscribe_to_stream.cs +++ b/test/EventStore.Client.Streams.Tests/Subscriptions/subscribe_to_stream.cs @@ -1,7 +1,7 @@ namespace EventStore.Client.Streams.Tests; [Trait("Category", "Stream")] -public class subscribe_to_stream (ITestOutputHelper output, SubscriptionsFixture fixture) : EventStoreTests(output, fixture) { +public class subscribe_to_stream(ITestOutputHelper output, SubscriptionsFixture fixture) : EventStoreTests(output, fixture) { [Fact] public async Task receives_all_events_from_start() { var streamName = Fixture.GetStreamName(); @@ -11,15 +11,15 @@ public async Task receives_all_events_from_start() { var seedEvents = Fixture.CreateTestEvents(10).ToArray(); var pageSize = seedEvents.Length / 2; - + var availableEvents = new HashSet(seedEvents.Select(x => x.EventId)); - + await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.NoStream, seedEvents.Take(pageSize)); using var subscription = await Fixture.Streams .SubscribeToStreamAsync(streamName, FromStream.Start, OnReceived, false, OnDropped) .WithTimeout(); - + await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.StreamExists, seedEvents.Skip(pageSize)); await receivedAllEvents.Task.WithTimeout(); @@ -32,41 +32,41 @@ public async Task receives_all_events_from_start() { subscription.Dispose(); var result = await subscriptionDropped.Task.WithTimeout(); result.ShouldBe(SubscriptionDroppedResult.Disposed()); - + return; Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) { availableEvents.RemoveWhere(x => x == re.OriginalEvent.EventId); - + if (availableEvents.Count == 0) { receivedAllEvents.TrySetResult(true); Fixture.Log.Information("Received all {TotalEventsCount} expected events", seedEvents.Length); } - + return Task.CompletedTask; } void OnDropped(StreamSubscription sub, SubscriptionDroppedReason reason, Exception? ex) => subscriptionDropped.SetResult(new(reason, ex)); } - + [Fact] public async Task receives_all_events_from_position() { var streamName = Fixture.GetStreamName(); - + var receivedAllEvents = new TaskCompletionSource(); var subscriptionDropped = new TaskCompletionSource(); var seedEvents = Fixture.CreateTestEvents(10).ToArray(); var pageSize = seedEvents.Length / 2; - + // only the second half of the events will be received var availableEvents = new HashSet(seedEvents.Skip(pageSize).Select(x => x.EventId)); var writeResult = await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.NoStream, seedEvents.Take(pageSize)); var streamPosition = StreamPosition.FromStreamRevision(writeResult.NextExpectedStreamRevision); var checkpoint = FromStream.After(streamPosition); - + using var subscription = await Fixture.Streams .SubscribeToStreamAsync(streamName, checkpoint, OnReceived, false, OnDropped) .WithTimeout(); @@ -83,24 +83,24 @@ public async Task receives_all_events_from_position() { subscription.Dispose(); var result = await subscriptionDropped.Task.WithTimeout(); result.ShouldBe(SubscriptionDroppedResult.Disposed()); - + return; Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) { availableEvents.RemoveWhere(x => x == re.OriginalEvent.EventId); - + if (availableEvents.Count == 0) { receivedAllEvents.TrySetResult(true); Fixture.Log.Information("Received all {TotalEventsCount} expected events", pageSize); } - + return Task.CompletedTask; } void OnDropped(StreamSubscription sub, SubscriptionDroppedReason reason, Exception? ex) => subscriptionDropped.SetResult(new(reason, ex)); } - + [Fact] public async Task receives_all_events_from_non_existing_stream() { var streamName = Fixture.GetStreamName(); @@ -109,13 +109,13 @@ public async Task receives_all_events_from_non_existing_stream() { var subscriptionDropped = new TaskCompletionSource(); var seedEvents = Fixture.CreateTestEvents(10).ToArray(); - + var availableEvents = new HashSet(seedEvents.Select(x => x.EventId)); - + using var subscription = await Fixture.Streams .SubscribeToStreamAsync(streamName, FromStream.Start, OnReceived, false, OnDropped) .WithTimeout(); - + await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.NoStream, seedEvents); await receivedAllEvents.Task.WithTimeout(); @@ -128,17 +128,17 @@ public async Task receives_all_events_from_non_existing_stream() { subscription.Dispose(); var result = await subscriptionDropped.Task.WithTimeout(); result.ShouldBe(SubscriptionDroppedResult.Disposed()); - + return; Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) { availableEvents.RemoveWhere(x => x == re.OriginalEvent.EventId); - + if (availableEvents.Count == 0) { receivedAllEvents.TrySetResult(true); Fixture.Log.Information("Received all {TotalEventsCount} expected events", seedEvents.Length); } - + return Task.CompletedTask; } @@ -154,10 +154,10 @@ public async Task allow_multiple_subscriptions_to_same_stream() { var seedEvents = Fixture.CreateTestEvents(5).ToArray(); - var targetEventsCount = seedEvents.Length*2; + var targetEventsCount = seedEvents.Length * 2; await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.NoStream, seedEvents); - + using var subscription1 = await Fixture.Streams .SubscribeToStreamAsync(streamName, FromStream.Start, OnReceived) .WithTimeout(); @@ -165,12 +165,12 @@ public async Task allow_multiple_subscriptions_to_same_stream() { using var subscription2 = await Fixture.Streams .SubscribeToStreamAsync(streamName, FromStream.Start, OnReceived) .WithTimeout(); - + await receivedAllEvents.Task.WithTimeout(); Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) { if (--targetEventsCount == 0) { - receivedAllEvents.TrySetResult(true); + receivedAllEvents.TrySetResult(true); Fixture.Log.Information("Received all {TotalEventsCount} expected events", seedEvents.Length); } @@ -180,10 +180,10 @@ Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) [Fact] public async Task drops_when_disposed() { - var streamName = Fixture.GetStreamName(); - + var streamName = Fixture.GetStreamName(); + var subscriptionDropped = new TaskCompletionSource(); - + using var subscription = await Fixture.Streams .SubscribeToStreamAsync( streamName, @@ -197,7 +197,7 @@ public async Task drops_when_disposed() { // if the subscription dropped before time, raise the reason why if (subscriptionDropped.Task.IsCompleted) subscriptionDropped.Task.IsCompleted.ShouldBe(false, subscriptionDropped.Task.Result.ToString()); - + // stop the subscription subscription.Dispose(); var result = await subscriptionDropped.Task.WithTimeout(); @@ -207,7 +207,7 @@ public async Task drops_when_disposed() { [Fact] public async Task drops_when_subscriber_error() { var streamName = Fixture.GetStreamName(); - + var expectedResult = SubscriptionDroppedResult.SubscriberError(); var subscriptionDropped = new TaskCompletionSource(); @@ -231,9 +231,9 @@ public async Task drops_when_subscriber_error() { [Fact] public async Task drops_when_stream_tombstoned() { var streamName = Fixture.GetStreamName(); - + var subscriptionDropped = new TaskCompletionSource(); - + using var subscription = await Fixture.Streams .SubscribeToStreamAsync( streamName, @@ -250,7 +250,7 @@ public async Task drops_when_stream_tombstoned() { var result = await subscriptionDropped.Task.WithTimeout(); result.Error.ShouldBeOfType().Stream.ShouldBe(streamName); } - + [Fact] public async Task receives_all_events_with_resolved_links() { var streamName = Fixture.GetStreamName(); @@ -260,13 +260,13 @@ public async Task receives_all_events_with_resolved_links() { var seedEvents = Fixture.CreateTestEvents(3).ToArray(); var availableEvents = new HashSet(seedEvents.Select(x => x.EventId)); - + await Fixture.Streams.AppendToStreamAsync(streamName, StreamState.NoStream, seedEvents); using var subscription = await Fixture.Streams .SubscribeToStreamAsync($"$et-{EventStoreFixture.TestEventType}", FromStream.Start, OnReceived, true, OnDropped) - .WithTimeout();; - + .WithTimeout(); + await receivedAllEvents.Task.WithTimeout(); // if the subscription dropped before time, raise the reason why @@ -277,7 +277,7 @@ public async Task receives_all_events_with_resolved_links() { subscription.Dispose(); var result = await subscriptionDropped.Task.WithTimeout(); result.ShouldBe(SubscriptionDroppedResult.Disposed()); - + return; Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) { @@ -286,12 +286,12 @@ Task OnReceived(StreamSubscription sub, ResolvedEvent re, CancellationToken ct) Fixture.Log.Debug("Received unexpected event {EventId} from stream {StreamId}", re.Event.EventId, re.OriginalEvent.EventStreamId); return Task.CompletedTask; } - + if (availableEvents.Count == 0) { receivedAllEvents.TrySetResult(true); Fixture.Log.Information("Received all {TotalEventsCount} expected events", seedEvents.Length); } - + return Task.CompletedTask; } diff --git a/test/EventStore.Client.Tests.Common/Fixtures/EventStoreTestNode.cs b/test/EventStore.Client.Tests.Common/Fixtures/EventStoreTestNode.cs index cfe7688cc..a84af081a 100644 --- a/test/EventStore.Client.Tests.Common/Fixtures/EventStoreTestNode.cs +++ b/test/EventStore.Client.Tests.Common/Fixtures/EventStoreTestNode.cs @@ -73,7 +73,6 @@ protected override ContainerBuilder Configure() { .WithEnvironment(env) .MountVolume(certsPath, "/etc/eventstore/certs", MountType.ReadOnly) .ExposePort(port, 2113); - //.WaitForMessageInLog("'admin' user added to $users.", FromSeconds(60)); } ///