public void ListDatabases_should_invoke_the_correct_operation( [Values(false, true)] bool usingSession, [Values(false, true)] bool async) { var operationExecutor = new MockOperationExecutor(); var subject = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings()); var session = CreateClientSession(); var cancellationToken = new CancellationTokenSource().Token; var filterDocument = BsonDocument.Parse("{ name : \"awesome\" }"); var filterDefinition = (FilterDefinition <BsonDocument>)filterDocument; var nameOnly = true; var options = new ListDatabasesOptions { Filter = filterDefinition, NameOnly = nameOnly }; if (usingSession) { if (async) { subject.ListDatabasesAsync(session, options, cancellationToken).GetAwaiter().GetResult(); } else { subject.ListDatabases(session, options, cancellationToken); } } else { if (async) { subject.ListDatabasesAsync(options, cancellationToken).GetAwaiter().GetResult(); } else { subject.ListDatabases(options, cancellationToken); } } var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >(); if (usingSession) { call.SessionId.Should().BeSameAs(session.ServerSession.Id); } else { call.UsedImplicitSession.Should().BeTrue(); } call.CancellationToken.Should().Be(cancellationToken); var operation = call.Operation.Should().BeOfType <ListDatabasesOperation>().Subject; operation.Filter.Should().Be(filterDocument); operation.NameOnly.Should().Be(nameOnly); }
public async Task ListDatabaseNames() { var operationExecutor = new MockOperationExecutor(); var client = new MongoClient(operationExecutor); var names = await client.GetDatabaseNamesAsync(); var call = operationExecutor.GetReadCall <IReadOnlyList <string> >(); call.Operation.Should().BeOfType <ListDatabaseNamesOperation>(); }
public async Task ListDatabasesAsync_should_invoke_the_correct_operation() { var operationExecutor = new MockOperationExecutor(); var client = new MongoClient(operationExecutor); await client.ListDatabasesAsync(); var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >(); call.Operation.Should().BeOfType <ListDatabasesOperation>(); }
public void ListDatabases_should_invoke_the_correct_operation( [Values(false, true)] bool usingSession, [Values(false, true)] bool async) { var operationExecutor = new MockOperationExecutor(); var subject = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings()); var session = CreateClientSession(); var cancellationToken = new CancellationTokenSource().Token; if (usingSession) { if (async) { subject.ListDatabasesAsync(session, cancellationToken).GetAwaiter().GetResult(); } else { subject.ListDatabases(session, cancellationToken); } } else { if (async) { subject.ListDatabasesAsync(cancellationToken).GetAwaiter().GetResult(); } else { subject.ListDatabases(cancellationToken); } } var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >(); if (usingSession) { call.SessionId.Should().BeSameAs(session.ServerSession.Id); } else { call.UsedImplicitSession.Should().BeTrue(); } call.CancellationToken.Should().Be(cancellationToken); call.Operation.Should().BeOfType <ListDatabasesOperation>(); }
public void ListDatabases_should_invoke_the_correct_operation( [Values(false, true)] bool async) { var operationExecutor = new MockOperationExecutor(); var client = new MongoClient(operationExecutor, new MongoClientSettings()); if (async) { client.ListDatabasesAsync().GetAwaiter().GetResult(); } else { client.ListDatabases(); } var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >(); call.Operation.Should().BeOfType <ListDatabasesOperation>(); }
public void ListDatabaseNames_should_invoke_the_correct_operation( [Values(false, true)] bool usingSession, [Values(false, true)] bool async) { var operationExecutor = new MockOperationExecutor(); var subject = new MongoClient(operationExecutor, DriverTestConfiguration.GetClientSettings()); var session = CreateClientSession(); var cancellationToken = new CancellationTokenSource().Token; var listDatabaseNamesResult = @" { ""databases"" : [ { ""name"" : ""admin"", ""sizeOnDisk"" : 131072, ""empty"" : false }, { ""name"" : ""blog"", ""sizeOnDisk"" : 11669504, ""empty"" : false }, { ""name"" : ""test-chambers"", ""sizeOnDisk"" : 222883840, ""empty"" : false }, { ""name"" : ""recipes"", ""sizeOnDisk"" : 73728, ""empty"" : false }, { ""name"" : ""employees"", ""sizeOnDisk"" : 225280, ""empty"" : false } ], ""totalSize"" : 252534784, ""ok"" : 1 }"; var operationResult = BsonDocument.Parse(listDatabaseNamesResult); operationExecutor.EnqueueResult(CreateListDatabasesOperationCursor(operationResult)); IList <string> databaseNames; if (async) { if (usingSession) { databaseNames = subject.ListDatabaseNamesAsync(session, cancellationToken).GetAwaiter().GetResult().ToList(); } else { databaseNames = subject.ListDatabaseNamesAsync(cancellationToken).GetAwaiter().GetResult().ToList(); } } else { if (usingSession) { databaseNames = subject.ListDatabaseNames(session, cancellationToken).ToList(); } else { databaseNames = subject.ListDatabaseNames(cancellationToken).ToList(); } } var call = operationExecutor.GetReadCall <IAsyncCursor <BsonDocument> >(); if (usingSession) { call.SessionId.Should().BeSameAs(session.ServerSession.Id); } else { call.UsedImplicitSession.Should().BeTrue(); } call.CancellationToken.Should().Be(cancellationToken); var operation = call.Operation.Should().BeOfType <ListDatabasesOperation>().Subject; operation.NameOnly.Should().Be(true); databaseNames.Should().Equal(operationResult["databases"].AsBsonArray.Select(record => record["name"].AsString)); }
public void Watch_should_invoke_the_correct_operation( [Values(false, true)] bool usingSession, [Values(false, true)] bool async) { var operationExecutor = new MockOperationExecutor(); var clientSettings = DriverTestConfiguration.GetClientSettings(); var subject = new MongoClient(operationExecutor, clientSettings); var session = usingSession ? CreateClientSession() : null; var pipeline = new EmptyPipelineDefinition <ChangeStreamDocument <BsonDocument> >().Limit(1); var options = new ChangeStreamOptions { BatchSize = 123, Collation = new Collation("en-us"), FullDocument = ChangeStreamFullDocumentOption.UpdateLookup, MaxAwaitTime = TimeSpan.FromSeconds(123), ResumeAfter = new BsonDocument(), StartAtOperationTime = new BsonTimestamp(1, 2) }; var cancellationToken = new CancellationTokenSource().Token; var renderedPipeline = new[] { BsonDocument.Parse("{ $limit : 1 }") }; if (usingSession) { if (async) { subject.WatchAsync(session, pipeline, options, cancellationToken).GetAwaiter().GetResult(); } else { subject.Watch(session, pipeline, options, cancellationToken); } } else { if (async) { subject.WatchAsync(pipeline, options, cancellationToken).GetAwaiter().GetResult(); } else { subject.Watch(pipeline, options, cancellationToken); } } var call = operationExecutor.GetReadCall <IAsyncCursor <ChangeStreamDocument <BsonDocument> > >(); if (usingSession) { call.SessionId.Should().BeSameAs(session.ServerSession.Id); } else { call.UsedImplicitSession.Should().BeTrue(); } call.CancellationToken.Should().Be(cancellationToken); var changeStreamOperation = call.Operation.Should().BeOfType <ChangeStreamOperation <ChangeStreamDocument <BsonDocument> > >().Subject; changeStreamOperation.BatchSize.Should().Be(options.BatchSize); changeStreamOperation.Collation.Should().BeSameAs(options.Collation); changeStreamOperation.CollectionNamespace.Should().BeNull(); changeStreamOperation.DatabaseNamespace.Should().BeNull(); changeStreamOperation.FullDocument.Should().Be(options.FullDocument); changeStreamOperation.MaxAwaitTime.Should().Be(options.MaxAwaitTime); changeStreamOperation.MessageEncoderSettings.Should().NotBeNull(); changeStreamOperation.Pipeline.Should().Equal(renderedPipeline); changeStreamOperation.ReadConcern.Should().Be(clientSettings.ReadConcern); changeStreamOperation.ResultSerializer.Should().BeOfType <ChangeStreamDocumentSerializer <BsonDocument> >(); changeStreamOperation.ResumeAfter.Should().Be(options.ResumeAfter); changeStreamOperation.StartAtOperationTime.Should().Be(options.StartAtOperationTime); }