Search in sources :

Example 1 with PackedInputArray

use of org.neo4j.bolt.packstream.PackedInputArray in project neo4j by neo4j.

the class HelloMessageDecoderTest method testShouldDecodeAuthToken.

@Override
protected void testShouldDecodeAuthToken(Map<String, Object> authToken) throws Exception {
    Neo4jPack neo4jPack = newNeo4jPack();
    authToken.put("user_agent", "My Driver");
    HelloMessage originalMessage = new HelloMessage(authToken, new RoutingContext(true, Collections.emptyMap()), authToken);
    PackedInputArray input = new PackedInputArray(encode(neo4jPack, originalMessage));
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
    // these two steps are executed before decoding in order to select a correct decoder
    unpacker.unpackStructHeader();
    unpacker.unpackStructSignature();
    RequestMessage deserializedMessage = decoder.decode(unpacker);
    assertHelloMessageMatches(originalMessage, deserializedMessage);
}
Also used : RoutingContext(org.neo4j.bolt.v41.messaging.RoutingContext) HelloMessage(org.neo4j.bolt.v41.messaging.request.HelloMessage) RequestMessage(org.neo4j.bolt.messaging.RequestMessage) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack)

Example 2 with PackedInputArray

use of org.neo4j.bolt.packstream.PackedInputArray in project neo4j by neo4j.

the class HelloMessageDecoderTest method shouldThrowExceptionOnIncorrectRoutingContextFormat.

@Test
public void shouldThrowExceptionOnIncorrectRoutingContextFormat() throws Exception {
    Map<String, Object> meta = new HashMap<>();
    // incorrect Map type params
    Map<String, Integer> routingContext = new HashMap<>();
    routingContext.put("policy", 4);
    Neo4jPack neo4jPack = newNeo4jPack();
    meta.put("user_agent", "My Driver");
    meta.put("routing", routingContext);
    HelloMessage originalMessage = new HelloMessage(meta, null, meta);
    PackedInputArray input = new PackedInputArray(encode(neo4jPack, originalMessage));
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
    // these two steps are executed before decoding in order to select a correct decoder
    unpacker.unpackStructHeader();
    unpacker.unpackStructSignature();
    BoltIOException ex = assertThrows(BoltIOException.class, () -> decoder.decode(unpacker));
    assertEquals("Routing information in the HELLO message must be a map with string keys and string values.", ex.getMessage());
}
Also used : BoltIOException(org.neo4j.bolt.messaging.BoltIOException) HelloMessage(org.neo4j.bolt.v41.messaging.request.HelloMessage) HashMap(java.util.HashMap) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack) AuthTokenDecoderTest(org.neo4j.bolt.security.auth.AuthTokenDecoderTest) Test(org.junit.jupiter.api.Test)

Example 3 with PackedInputArray

use of org.neo4j.bolt.packstream.PackedInputArray in project neo4j by neo4j.

the class HelloMessageDecoderTest method assertOriginalMessageEqualsToDecoded.

static void assertOriginalMessageEqualsToDecoded(RequestMessage originalMessage, RequestMessageDecoder decoder) throws Exception {
    Neo4jPack neo4jPack = newNeo4jPack();
    PackedInputArray input = new PackedInputArray(encode(neo4jPack, originalMessage));
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
    // these two steps are executed before decoding in order to select a correct decoder
    unpacker.unpackStructHeader();
    unpacker.unpackStructSignature();
    RequestMessage deserializedMessage = decoder.decode(unpacker);
    assertEquals(originalMessage, deserializedMessage);
    assertAuthTokenDoesNotContainRoutingContext(deserializedMessage);
}
Also used : RequestMessage(org.neo4j.bolt.messaging.RequestMessage) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack)

Example 4 with PackedInputArray

use of org.neo4j.bolt.packstream.PackedInputArray in project neo4j by neo4j.

the class HelloMessageDecoderTest method testShouldDecodeWhenNoRoutingContextProvided.

@Test
void testShouldDecodeWhenNoRoutingContextProvided() throws Exception {
    Map<String, Object> meta = new HashMap<>();
    Neo4jPack neo4jPack = newNeo4jPack();
    meta.put("user_agent", "My Driver");
    HelloMessage originalMessage = new HelloMessage(meta, new RoutingContext(false, Collections.emptyMap()), meta);
    PackedInputArray input = new PackedInputArray(encode(neo4jPack, originalMessage));
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
    // these two steps are executed before decoding in order to select a correct decoder
    unpacker.unpackStructHeader();
    unpacker.unpackStructSignature();
    RequestMessage deserializedMessage = decoder.decode(unpacker);
    assertHelloMessageMatches(originalMessage, deserializedMessage);
    assertRoutingContextMatches(originalMessage, deserializedMessage);
}
Also used : RoutingContext(org.neo4j.bolt.v41.messaging.RoutingContext) HelloMessage(org.neo4j.bolt.v41.messaging.request.HelloMessage) HashMap(java.util.HashMap) RequestMessage(org.neo4j.bolt.messaging.RequestMessage) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack) BoltProtocolV3ComponentFactory.newNeo4jPack(org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack) AuthTokenDecoderTest(org.neo4j.bolt.security.auth.AuthTokenDecoderTest) Test(org.junit.jupiter.api.Test)

Example 5 with PackedInputArray

use of org.neo4j.bolt.packstream.PackedInputArray in project neo4j by neo4j.

the class BoltRequestMessageReaderV41Test method verifyBoltV3MessageIsReadAsBoltV4Message.

private static void verifyBoltV3MessageIsReadAsBoltV4Message(TransactionInitiatingMessage messageV3, TransactionInitiatingMessage messageV4) throws Exception {
    Neo4jPack neo4jPack = newNeo4jPack();
    BoltStateMachine stateMachine = mock(BoltStateMachine.class);
    BoltRequestMessageReader reader = requestMessageReader(stateMachine);
    PackedInputArray input = new PackedInputArray(encode(neo4jPack, messageV3));
    Neo4jPack.Unpacker unpacker = neo4jPack.newUnpacker(input);
    reader.read(unpacker);
    verify(stateMachine).process(eq(messageV4), any());
    assertThat(messageV3.meta()).isEqualTo(messageV4.meta());
}
Also used : BoltStateMachine(org.neo4j.bolt.runtime.statemachine.BoltStateMachine) BoltRequestMessageReader(org.neo4j.bolt.messaging.BoltRequestMessageReader) PackedInputArray(org.neo4j.bolt.packstream.PackedInputArray) BoltProtocolV41ComponentFactory.newNeo4jPack(org.neo4j.bolt.v41.BoltProtocolV41ComponentFactory.newNeo4jPack) Neo4jPack(org.neo4j.bolt.packstream.Neo4jPack)

Aggregations

Neo4jPack (org.neo4j.bolt.packstream.Neo4jPack)19 PackedInputArray (org.neo4j.bolt.packstream.PackedInputArray)19 BoltProtocolV3ComponentFactory.newNeo4jPack (org.neo4j.bolt.v3.BoltProtocolV3ComponentFactory.newNeo4jPack)11 RequestMessage (org.neo4j.bolt.messaging.RequestMessage)10 BoltRequestMessageReader (org.neo4j.bolt.messaging.BoltRequestMessageReader)8 BoltStateMachine (org.neo4j.bolt.runtime.statemachine.BoltStateMachine)8 Test (org.junit.jupiter.api.Test)6 HashMap (java.util.HashMap)5 AuthTokenDecoderTest (org.neo4j.bolt.security.auth.AuthTokenDecoderTest)5 HelloMessage (org.neo4j.bolt.v41.messaging.request.HelloMessage)5 BoltProtocolV4ComponentFactory.newNeo4jPack (org.neo4j.bolt.v4.BoltProtocolV4ComponentFactory.newNeo4jPack)4 RoutingContext (org.neo4j.bolt.v41.messaging.RoutingContext)4 HelloMessage (org.neo4j.bolt.v3.messaging.request.HelloMessage)3 BoltIOException (org.neo4j.bolt.messaging.BoltIOException)2 BoltProtocolV41ComponentFactory.newNeo4jPack (org.neo4j.bolt.v41.BoltProtocolV41ComponentFactory.newNeo4jPack)2 IOException (java.io.IOException)1 System.lineSeparator (java.lang.System.lineSeparator)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1