use of com.datastax.oss.protocol.internal.request.AuthResponse in project java-driver by datastax.
the class SegmentToFrameDecoderTest method should_decode_sequence_of_slices.
@Test
public void should_decode_sequence_of_slices() {
ByteBuf encodedFrame = encodeFrame(new AuthResponse(Bytes.fromHexString("0x" + Strings.repeat("aa", 1011))));
int sliceLength = 100;
do {
ByteBuf payload = encodedFrame.readRetainedSlice(Math.min(sliceLength, encodedFrame.readableBytes()));
channel.writeInbound(new Segment<>(payload, false));
} while (encodedFrame.isReadable());
Frame frame = channel.readInbound();
assertThat(frame.message).isInstanceOf(AuthResponse.class);
}
use of com.datastax.oss.protocol.internal.request.AuthResponse in project java-driver by datastax.
the class ProtocolInitHandlerTest method should_initialize_with_authentication.
@Test
public void should_initialize_with_authentication() {
channel.pipeline().addLast(ChannelFactory.INIT_HANDLER_NAME, new ProtocolInitHandler(internalDriverContext, DefaultProtocolVersion.V4, null, END_POINT, DriverChannelOptions.DEFAULT, heartbeatHandler, false));
String serverAuthenticator = "mockServerAuthenticator";
AuthProvider authProvider = mock(AuthProvider.class);
MockAuthenticator authenticator = new MockAuthenticator();
when(authProvider.newAuthenticator(END_POINT, serverAuthenticator)).thenReturn(authenticator);
when(internalDriverContext.getAuthProvider()).thenReturn(Optional.of(authProvider));
ChannelFuture connectFuture = channel.connect(new InetSocketAddress("localhost", 9042));
Frame requestFrame = readOutboundFrame();
assertThat(requestFrame.message).isInstanceOf(Startup.class);
assertThat(connectFuture).isNotDone();
// Simulate a response that says that the server requires authentication
writeInboundFrame(requestFrame, new Authenticate(serverAuthenticator));
// The connection should have created an authenticator from the auth provider
verify(authProvider).newAuthenticator(END_POINT, serverAuthenticator);
// And sent an auth response
requestFrame = readOutboundFrame();
assertThat(requestFrame.message).isInstanceOf(AuthResponse.class);
AuthResponse authResponse = (AuthResponse) requestFrame.message;
assertThat(Bytes.toHexString(authResponse.token)).isEqualTo(MockAuthenticator.INITIAL_RESPONSE);
assertThat(connectFuture).isNotDone();
// As long as the server sends an auth challenge, the client should reply with another
// auth_response
String mockToken = "0xabcd";
for (int i = 0; i < 5; i++) {
writeInboundFrame(requestFrame, new AuthChallenge(Bytes.fromHexString(mockToken)));
requestFrame = readOutboundFrame();
assertThat(requestFrame.message).isInstanceOf(AuthResponse.class);
authResponse = (AuthResponse) requestFrame.message;
// Our mock impl happens to send back the same token
assertThat(Bytes.toHexString(authResponse.token)).isEqualTo(mockToken);
assertThat(connectFuture).isNotDone();
}
// When the server finally sends back a success message, should proceed to the cluster name
// check and succeed
writeInboundFrame(requestFrame, new AuthSuccess(Bytes.fromHexString(mockToken)));
assertThat(authenticator.successToken).isEqualTo(mockToken);
requestFrame = readOutboundFrame();
writeInboundFrame(requestFrame, TestResponses.clusterNameResponse("someClusterName"));
assertThat(connectFuture).isSuccess();
}
use of com.datastax.oss.protocol.internal.request.AuthResponse in project java-driver by datastax.
the class SegmentToFrameDecoderTest method should_decode_self_contained.
@Test
public void should_decode_self_contained() {
ByteBuf payload = UnpooledByteBufAllocator.DEFAULT.buffer();
payload.writeBytes(encodeFrame(Void.INSTANCE));
payload.writeBytes(encodeFrame(new AuthResponse(Bytes.fromHexString("0xabcdef"))));
channel.writeInbound(new Segment<>(payload, true));
Frame frame1 = channel.readInbound();
assertThat(frame1.message).isInstanceOf(Void.class);
Frame frame2 = channel.readInbound();
assertThat(frame2.message).isInstanceOf(AuthResponse.class);
}
Aggregations