37
37
import org .neo4j .driver .internal .async .inbound .InboundMessageDispatcher ;
38
38
import org .neo4j .driver .internal .async .outbound .OutboundMessageHandler ;
39
39
import org .neo4j .driver .internal .messaging .v1 .MessageFormatV1 ;
40
+ import org .neo4j .driver .internal .messaging .v3 .BoltProtocolV3 ;
41
+ import org .neo4j .driver .internal .messaging .v4 .BoltProtocolV4 ;
42
+ import org .neo4j .driver .internal .messaging .v41 .BoltProtocolV41 ;
43
+ import org .neo4j .driver .internal .util .ServerVersion ;
40
44
41
45
import static org .junit .jupiter .api .Assertions .assertEquals ;
42
46
import static org .junit .jupiter .api .Assertions .assertFalse ;
@@ -73,7 +77,7 @@ void tearDown()
73
77
void shouldSetServerVersionOnChannel ()
74
78
{
75
79
ChannelPromise channelPromise = channel .newPromise ();
76
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
80
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
77
81
78
82
Map <String ,Value > metadata = metadata ( anyServerVersion (), "bolt-1" );
79
83
handler .onSuccess ( metadata );
@@ -86,7 +90,7 @@ void shouldSetServerVersionOnChannel()
86
90
void shouldThrowWhenServerVersionNotReturned ()
87
91
{
88
92
ChannelPromise channelPromise = channel .newPromise ();
89
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
93
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
90
94
91
95
Map <String ,Value > metadata = metadata ( null , "bolt-1" );
92
96
assertThrows ( UntrustedServerException .class , () -> handler .onSuccess ( metadata ) );
@@ -99,7 +103,7 @@ void shouldThrowWhenServerVersionNotReturned()
99
103
void shouldThrowWhenServerVersionIsNull ()
100
104
{
101
105
ChannelPromise channelPromise = channel .newPromise ();
102
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
106
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
103
107
104
108
Map <String ,Value > metadata = metadata ( Values .NULL , "bolt-x" );
105
109
assertThrows ( UntrustedServerException .class , () -> handler .onSuccess ( metadata ) );
@@ -112,7 +116,7 @@ void shouldThrowWhenServerVersionIsNull()
112
116
void shouldThrowWhenServerVersionCantBeParsed ()
113
117
{
114
118
ChannelPromise channelPromise = channel .newPromise ();
115
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
119
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
116
120
117
121
Map <String ,Value > metadata = metadata ( "WrongServerVersion" , "bolt-x" );
118
122
assertThrows ( IllegalArgumentException .class , () -> handler .onSuccess ( metadata ) );
@@ -121,11 +125,39 @@ void shouldThrowWhenServerVersionCantBeParsed()
121
125
assertTrue ( channel .closeFuture ().isDone () ); // channel was closed
122
126
}
123
127
128
+ @ Test
129
+ void shouldUseProtocolVersionForServerVersionWhenConnectedWithBoltV4 ()
130
+ {
131
+ ChannelPromise channelPromise = channel .newPromise ();
132
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV4 .VERSION );
133
+
134
+ // server used in metadata should be ignored
135
+ Map <String ,Value > metadata = metadata ( ServerVersion .vInDev , "bolt-1" );
136
+ handler .onSuccess ( metadata );
137
+
138
+ assertTrue ( channelPromise .isSuccess () );
139
+ assertEquals ( ServerVersion .v4_0_0 , serverVersion ( channel ) );
140
+ }
141
+
142
+ @ Test
143
+ void shouldUseProtocolVersionForServerVersionWhenConnectedWithBoltV41 ()
144
+ {
145
+ ChannelPromise channelPromise = channel .newPromise ();
146
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV41 .VERSION );
147
+
148
+ // server used in metadata should be ignored
149
+ Map <String ,Value > metadata = metadata ( ServerVersion .vInDev , "bolt-1" );
150
+ handler .onSuccess ( metadata );
151
+
152
+ assertTrue ( channelPromise .isSuccess () );
153
+ assertEquals ( ServerVersion .v4_1_0 , serverVersion ( channel ) );
154
+ }
155
+
124
156
@ Test
125
157
void shouldSetConnectionIdOnChannel ()
126
158
{
127
159
ChannelPromise channelPromise = channel .newPromise ();
128
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
160
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
129
161
130
162
Map <String ,Value > metadata = metadata ( anyServerVersion (), "bolt-42" );
131
163
handler .onSuccess ( metadata );
@@ -138,7 +170,7 @@ void shouldSetConnectionIdOnChannel()
138
170
void shouldThrowWhenConnectionIdNotReturned ()
139
171
{
140
172
ChannelPromise channelPromise = channel .newPromise ();
141
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
173
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
142
174
143
175
Map <String ,Value > metadata = metadata ( anyServerVersion (), null );
144
176
assertThrows ( IllegalStateException .class , () -> handler .onSuccess ( metadata ) );
@@ -151,7 +183,7 @@ void shouldThrowWhenConnectionIdNotReturned()
151
183
void shouldThrowWhenConnectionIdIsNull ()
152
184
{
153
185
ChannelPromise channelPromise = channel .newPromise ();
154
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
186
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
155
187
156
188
Map <String ,Value > metadata = metadata ( anyServerVersion (), Values .NULL );
157
189
assertThrows ( IllegalStateException .class , () -> handler .onSuccess ( metadata ) );
@@ -164,7 +196,7 @@ void shouldThrowWhenConnectionIdIsNull()
164
196
void shouldCloseChannelOnFailure () throws Exception
165
197
{
166
198
ChannelPromise channelPromise = channel .newPromise ();
167
- HelloResponseHandler handler = new HelloResponseHandler ( channelPromise );
199
+ HelloResponseHandler handler = new HelloResponseHandler ( channelPromise , BoltProtocolV3 . VERSION );
168
200
169
201
RuntimeException error = new RuntimeException ( "Hi!" );
170
202
handler .onFailure ( error );
0 commit comments