use of org.neo4j.bolt.runtime.BoltConnectionAuthFatality in project neo4j by neo4j.
the class BoltStateMachineV4Test method shouldTerminateOnAuthExpiryDuringREADYRun.
@SuppressWarnings("unchecked")
@Test
void shouldTerminateOnAuthExpiryDuringREADYRun() throws Throwable {
// Given
TransactionStateMachineSPI transactionSPI = mock(TransactionStateMachineSPI.class);
doThrow(new AuthorizationExpiredException("Auth expired!")).when(transactionSPI).beginTransaction(any(), any(), any(), any(), any(), any());
BoltStateMachine machine = newMachineWithTransactionSPI(transactionSPI);
// When & Then
try {
machine.process(BoltV4Messages.run("THIS WILL BE IGNORED"), nullResponseHandler());
fail("Exception expected");
} catch (BoltConnectionAuthFatality e) {
assertEquals("Auth expired!", e.getCause().getMessage());
}
}
use of org.neo4j.bolt.runtime.BoltConnectionAuthFatality in project neo4j by neo4j.
the class AbstractBoltStateMachine method handleFailure.
@Override
public void handleFailure(Throwable cause, boolean fatal) throws BoltConnectionFatality {
if (ExceptionUtils.indexOfType(cause, BoltConnectionFatality.class) != -1) {
fatal = true;
}
Neo4jError error = fatal ? Neo4jError.fatalFrom(cause) : Neo4jError.from(cause);
fail(error);
if (error.isFatal()) {
if (ExceptionUtils.indexOfType(cause, AuthorizationExpiredException.class) != -1) {
throw new BoltConnectionAuthFatality("Failed to process a bolt message", cause);
}
if (cause instanceof AuthenticationException) {
throw new BoltConnectionAuthFatality((AuthenticationException) cause);
}
throw new BoltConnectionFatality("Failed to process a bolt message", cause);
}
}
use of org.neo4j.bolt.runtime.BoltConnectionAuthFatality in project neo4j by neo4j.
the class BoltStateMachineV4Test method shouldTerminateOnAuthExpiryDuringSTREAMINGDiscardAll.
@Test
void shouldTerminateOnAuthExpiryDuringSTREAMINGDiscardAll() throws Throwable {
// Given
BoltResponseHandler responseHandler = mock(BoltResponseHandler.class);
doThrow(new AuthorizationExpiredException("Auth expired!")).when(responseHandler).onDiscardRecords(any(), eq(STREAM_LIMIT_UNLIMITED));
BoltStateMachine machine = init(newMachine());
// move to streaming state
machine.process(BoltV4Messages.run(), nullResponseHandler());
// We assume the only implementation of statement processor is TransactionStateMachine
txStateMachine(machine).ctx.statementOutcomes.put(StatementMetadata.ABSENT_QUERY_ID, new StatementOutcome(BoltResult.EMPTY));
// When & Then
try {
machine.process(BoltV4Messages.discardAll(), responseHandler);
fail("Exception expected");
} catch (BoltConnectionAuthFatality e) {
assertEquals("Auth expired!", e.getCause().getMessage());
}
}
use of org.neo4j.bolt.runtime.BoltConnectionAuthFatality in project neo4j by neo4j.
the class BoltStateMachineV4Test method shouldTerminateOnAuthExpiryDuringSTREAMINGPullAll.
@Test
void shouldTerminateOnAuthExpiryDuringSTREAMINGPullAll() throws Throwable {
// Given
BoltResponseHandler responseHandler = mock(BoltResponseHandler.class);
doThrow(new AuthorizationExpiredException("Auth expired!")).when(responseHandler).onPullRecords(any(), eq(STREAM_LIMIT_UNLIMITED));
BoltStateMachine machine = init(newMachine());
// move to streaming state
machine.process(BoltV4Messages.run(), nullResponseHandler());
// We assume the only implementation of statement processor is TransactionStateMachine
txStateMachine(machine).ctx.statementOutcomes.put(StatementMetadata.ABSENT_QUERY_ID, new StatementOutcome(BoltResult.EMPTY));
// When & Then
try {
machine.process(BoltV4Messages.pullAll(), responseHandler);
fail("Exception expected");
} catch (BoltConnectionAuthFatality e) {
assertEquals("Auth expired!", e.getCause().getMessage());
}
verify(responseHandler).onPullRecords(any(), eq(STREAM_LIMIT_UNLIMITED));
}
Aggregations