public void Authenticate_should_not_throw_when_authentication_succeeds( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential); var saslStartReply = MessageHelper.BuildReply<RawBsonDocument>( RawBsonDocumentHelper.FromJson("{conversationId: 0, payload: BinData(0,\"\"), done: true, ok: 1}")); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(saslStartReply); var expectedRequestId = RequestMessage.CurrentGlobalRequestId + 1; Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __description, CancellationToken.None); } act.ShouldNotThrow(); SpinWait.SpinUntil(() => connection.GetSentMessages().Count >= 1, 100).Should().BeTrue(); var sentMessages = MessageHelper.TranslateMessagesToBsonDocuments(connection.GetSentMessages()); sentMessages.Count.Should().Be(1); var actualRequestId = sentMessages[0]["requestId"].AsInt32; actualRequestId.Should().BeInRange(expectedRequestId, expectedRequestId + 10); sentMessages[0].Should().Be("{opcode: \"query\", requestId: " + actualRequestId + ", database: \"source\", collection: \"$cmd\", batchSize: -1, slaveOk: true, query: {saslStart: 1, mechanism: \"PLAIN\", payload: new BinData(0, \"AHVzZXIAcGVuY2ls\")}}"); }
public void Authenticate_should_not_throw_when_authentication_succeeds( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential); var saslStartReply = MessageHelper.BuildReply <RawBsonDocument>( RawBsonDocumentHelper.FromJson("{conversationId: 0, payload: BinData(0,\"\"), done: true, ok: 1}")); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(saslStartReply); var currentRequestId = RequestMessage.CurrentGlobalRequestId; Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __description, CancellationToken.None); } act.ShouldNotThrow(); var sentMessages = MessageHelper.TranslateMessagesToBsonDocuments(connection.GetSentMessages()); sentMessages.Count.Should().Be(1); sentMessages[0].Should().Be("{opcode: \"query\", requestId: " + (currentRequestId + 1) + ", database: \"source\", collection: \"$cmd\", batchSize: -1, slaveOk: true, query: {saslStart: 1, mechanism: \"PLAIN\", payload: new BinData(0, \"AHVzZXIAcGVuY2ls\")}}"); }
public void Authenticate_should_throw_an_AuthenticationException_when_authentication_fails( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential, serverApi: null); var response = MessageHelper.BuildCommandResponse(RawBsonDocumentHelper.FromJson("{ }")); var connection = new MockConnection(__serverId); connection.EnqueueCommandResponseMessage(response); connection.Description = __descriptionCommandWireProtocol; Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __descriptionCommandWireProtocol, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __descriptionCommandWireProtocol, CancellationToken.None); } act.ShouldThrow <MongoAuthenticationException>(); }
public void AuthenticateAsync_should_throw_an_AuthenticationException_when_authentication_fails() { var subject = new PlainAuthenticator(__credential); var reply = MessageHelper.BuildNoDocumentsReturnedReply<RawBsonDocument>(); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(reply); Action act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).Wait(); act.ShouldThrow<MongoAuthenticationException>(); }
public void Authenticate_should_send_serverApi_with_command_wire_protocol_if_serverApi_is_provided( [Values(false, true)] bool useServerApi, [Values(false, true)] bool async) { var serverApi = useServerApi ? new ServerApi(ServerApiVersion.V1, true, true) : null; var subject = new PlainAuthenticator(__credential, serverApi); var connection = new MockConnection(__serverId); var saslStartReply = RawBsonDocumentHelper.FromJson("{ conversationId : 0, payload : BinData(0,\"\"), done : true, ok : 1 }"); if (useServerApi) { connection.EnqueueCommandResponseMessage(MessageHelper.BuildCommandResponse(saslStartReply)); } else { connection.EnqueueReplyMessage(MessageHelper.BuildReply(saslStartReply)); } connection.Description = __descriptionQueryWireProtocol; var expectedRequestId = RequestMessage.CurrentGlobalRequestId + 1; if (async) { subject.AuthenticateAsync(connection, __descriptionQueryWireProtocol, CancellationToken.None).GetAwaiter().GetResult(); } else { subject.Authenticate(connection, __descriptionQueryWireProtocol, CancellationToken.None); } SpinWait.SpinUntil(() => connection.GetSentMessages().Count >= 1, TimeSpan.FromSeconds(5)).Should().BeTrue(); var sentMessages = MessageHelper.TranslateMessagesToBsonDocuments(connection.GetSentMessages()); sentMessages.Count.Should().Be(1); var actualRequestId = sentMessages[0]["requestId"].AsInt32; actualRequestId.Should().BeInRange(expectedRequestId, expectedRequestId + 10); if (useServerApi) { sentMessages[0].Should().Be($"{{ opcode : \"opmsg\", requestId : {actualRequestId}, responseTo : 0, sections : [{{ payloadType : 0, document : {{ saslStart : 1, mechanism : \"PLAIN\", payload : new BinData(0, \"AHVzZXIAcGVuY2ls\"), \"$db\" : \"source\", apiVersion : \"1\", apiStrict : true, apiDeprecationErrors : true }} }}] }}"); } else { sentMessages[0].Should().Be($"{{ opcode : \"query\", requestId : {actualRequestId}, database : \"source\", collection : \"$cmd\", batchSize : -1, slaveOk : true, query : {{ saslStart : 1, mechanism : \"PLAIN\", payload : new BinData(0, \"AHVzZXIAcGVuY2ls\") }} }}"); } }
public void AuthenticateAsync_should_throw_an_AuthenticationException_when_authentication_fails() { var subject = new PlainAuthenticator(__credential); var reply = MessageHelper.BuildNoDocumentsReturnedReply <RawBsonDocument>(); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(reply); Action act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).Wait(); act.ShouldThrow <MongoAuthenticationException>(); }
public void AuthenticateAsync_should_not_throw_when_authentication_succeeds() { var subject = new PlainAuthenticator(__credential); var saslStartReply = MessageHelper.BuildReply<RawBsonDocument>( RawBsonDocumentHelper.FromJson("{conversationId: 0, payload: BinData(0,\"\"), done: true, ok: 1}")); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(saslStartReply); var currentRequestId = RequestMessage.CurrentGlobalRequestId; Action act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).Wait(); act.ShouldNotThrow(); var sentMessages = MessageHelper.TranslateMessagesToBsonDocuments(connection.GetSentMessages()); sentMessages.Count.Should().Be(1); sentMessages[0].Should().Be("{opcode: \"query\", requestId: " + (currentRequestId + 1) + ", database: \"source\", collection: \"$cmd\", batchSize: -1, slaveOk: true, query: {saslStart: 1, mechanism: \"PLAIN\", payload: new BinData(0, \"AHVzZXIAcGVuY2ls\")}}"); }
public void Authenticate_should_throw_an_AuthenticationException_when_authentication_fails( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential); var reply = MessageHelper.BuildNoDocumentsReturnedReply<RawBsonDocument>(); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(reply); Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __description, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __description, CancellationToken.None); } act.ShouldThrow<MongoAuthenticationException>(); }
public void Authenticate_should_not_throw_when_authentication_succeeds( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential, serverApi: null); var saslStartResponse = MessageHelper.BuildCommandResponse(RawBsonDocumentHelper.FromJson("{conversationId: 0, payload: BinData(0,\"\"), done: true, ok: 1}")); var connection = new MockConnection(__serverId); connection.EnqueueCommandResponseMessage(saslStartResponse); connection.Description = __descriptionCommandWireProtocol; var expectedRequestId = RequestMessage.CurrentGlobalRequestId + 1; Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __descriptionCommandWireProtocol, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __descriptionCommandWireProtocol, CancellationToken.None); } act.ShouldNotThrow(); SpinWait.SpinUntil(() => connection.GetSentMessages().Count >= 1, TimeSpan.FromSeconds(5)).Should().BeTrue(); var sentMessages = MessageHelper.TranslateMessagesToBsonDocuments(connection.GetSentMessages()); sentMessages.Count.Should().Be(1); var actualRequestId = sentMessages[0]["requestId"].AsInt32; actualRequestId.Should().BeInRange(expectedRequestId, expectedRequestId + 10); sentMessages[0].Should().Be("{ \"opcode\" : \"opmsg\", \"requestId\" : " + actualRequestId + ", \"responseTo\" : 0, \"sections\" : [{ \"payloadType\" : 0, \"document\" : { \"saslStart\" : 1, \"mechanism\" : \"PLAIN\", \"payload\" : new BinData(0, \"AHVzZXIAcGVuY2ls\"), \"$db\" : \"source\" } }] }"); }
public void Authenticate_should_throw_an_AuthenticationException_when_authentication_fails( [Values(false, true)] bool async) { var subject = new PlainAuthenticator(__credential, serverApi: null); var reply = MessageHelper.BuildNoDocumentsReturnedReply <RawBsonDocument>(); var connection = new MockConnection(__serverId); connection.EnqueueReplyMessage(reply); Action act; if (async) { act = () => subject.AuthenticateAsync(connection, __descriptionQueryWireProtocol, CancellationToken.None).GetAwaiter().GetResult(); } else { act = () => subject.Authenticate(connection, __descriptionQueryWireProtocol, CancellationToken.None); } act.ShouldThrow <MongoAuthenticationException>(); }