use of org.neo4j.bolt.transport.ProtocolChooser in project neo4j by neo4j.
the class ProtocolChooserTest method shouldChooseFirstAvailableProtocol.
@Test
public void shouldChooseFirstAvailableProtocol() throws Throwable {
// Given
when(factory.apply(ch, true)).thenReturn(protocol);
available.put(1L, factory);
ProtocolChooser chooser = new ProtocolChooser(available, false, true);
// When
HandshakeOutcome outcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { (byte) 0x60, (byte) 0x60, (byte) 0xB0, (byte) 0x17, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }), ch);
// Then
assertThat(outcome, equalTo(PROTOCOL_CHOSEN));
assertThat(chooser.chosenProtocol(), equalTo(protocol));
}
use of org.neo4j.bolt.transport.ProtocolChooser in project neo4j by neo4j.
the class ProtocolChooserTest method shouldRejectIfInsecureHandshake.
@Test
public void shouldRejectIfInsecureHandshake() throws Throwable {
// Given
when(factory.apply(ch, true)).thenReturn(protocol);
available.put(1L, mock(BiFunction.class));
ProtocolChooser chooser = new ProtocolChooser(available, true, false);
// When
HandshakeOutcome outcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { (byte) 0x60, (byte) 0x60, (byte) 0xB0, (byte) 0x17, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }), ch);
// Then
assertThat(outcome, equalTo(INSECURE_HANDSHAKE));
assertThat(chooser.chosenProtocol(), nullValue());
}
use of org.neo4j.bolt.transport.ProtocolChooser in project neo4j by neo4j.
the class ProtocolChooserTest method shouldHandleFragmentedMessage.
@Test
public void shouldHandleFragmentedMessage() throws Throwable {
// Given
when(factory.apply(ch, true)).thenReturn(protocol);
available.put(1L, factory);
ProtocolChooser chooser = new ProtocolChooser(available, false, true);
// When
HandshakeOutcome firstOutcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { (byte) 0x60, (byte) 0x60 }), ch);
// When
HandshakeOutcome secondOutcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { (byte) 0xB0, (byte) 0x17 }), ch);
HandshakeOutcome thirdOutcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { 0, 0, 0, 0, 0, 0, 0 }), ch);
HandshakeOutcome fourthOutcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { 1, 0, 0, 0, 0, 0, 0, 0, 0 }), ch);
// Then
assertThat(firstOutcome, equalTo(PARTIAL_HANDSHAKE));
assertThat(secondOutcome, equalTo(PARTIAL_HANDSHAKE));
assertThat(thirdOutcome, equalTo(PARTIAL_HANDSHAKE));
assertThat(fourthOutcome, equalTo(PROTOCOL_CHOSEN));
assertThat(chooser.chosenProtocol(), equalTo(protocol));
}
use of org.neo4j.bolt.transport.ProtocolChooser in project neo4j by neo4j.
the class ProtocolChooserTest method shouldRejectIfInvalidHandshake.
@Test
public void shouldRejectIfInvalidHandshake() throws Throwable {
// Given
when(factory.apply(ch, true)).thenReturn(protocol);
available.put(1L, mock(BiFunction.class));
ProtocolChooser chooser = new ProtocolChooser(available, false, true);
// When
HandshakeOutcome outcome = chooser.handleVersionHandshakeChunk(wrappedBuffer(new byte[] { (byte) 0xDE, (byte) 0xAD, (byte) 0xB0, (byte) 0x17, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }), ch);
// Then
assertThat(outcome, equalTo(INVALID_HANDSHAKE));
assertThat(chooser.chosenProtocol(), nullValue());
}
use of org.neo4j.bolt.transport.ProtocolChooser in project neo4j by neo4j.
the class SocketTransportHandlerTest method shouldInitializeProtocolOnFirstMessage.
@Test
public void shouldInitializeProtocolOnFirstMessage() throws Exception {
BoltStateMachine machine = mock(BoltStateMachine.class);
ProtocolChooser chooser = protocolChooser(machine);
ChannelHandlerContext context = channelHandlerContextMock();
SocketTransportHandler handler = new SocketTransportHandler(chooser, NullLogProvider.getInstance());
handler.channelRead(context, handshake());
BoltProtocol protocol1 = chooser.chosenProtocol();
handler.channelRead(context, handshake());
BoltProtocol protocol2 = chooser.chosenProtocol();
assertSame(protocol1, protocol2);
}
Aggregations