AuthenticationChain { public static AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders, final AuthenticationFailureAggregator authenticationFailureAggregator, final Executor authenticationDispatcher) { return new AuthenticationChain(authenticationProviders, authenticationFailureAggregator, authenticationDispatcher); } private  AuthenticationChain(final Collection<AuthenticationProvider<?>> authenticationProviders,
            final AuthenticationFailureAggregator authenticationFailureAggregator,
            final Executor authenticationDispatcher); static AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
            final AuthenticationFailureAggregator authenticationFailureAggregator,
            final Executor authenticationDispatcher); CompletableFuture<AuthenticationResult> authenticate(final RequestContext requestContext,
            final DittoHeaders dittoHeaders);  }
@Test public void getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy( () -> AuthenticationChain.getInstance(Collections.emptyList(), authenticationFailureAggregator, messageDispatcher)) .withMessage("The argument 'authenticationProviders' must not be empty!") .withNoCause(); }