@VisibleForTesting
  @NonNull <T extends VFSConnectionDetails> FileName getConnectionRootProviderFileName(
    @NonNull VFSConnectionFileNameTransformer<T> fileNameTransformer,
    @NonNull T details )
    throws KettleException {

    // Example: "pvfs://my-connection"
    ConnectionFileName rootPvfsFileName = getConnectionRootFileName( details );

    // Example: "s3://root-path-bucket"
    // Would fail if only "s3://"
    return fileNameTransformer.toProviderFileName( rootPvfsFileName, details );
  }
@Test( expected = IllegalArgumentException.class )
  public void testGetConnectionRootProviderFileNameThrowsWhenConnectionNameIsEmpty() throws KettleException {

    when( vfsConnectionDetails.getName() ).thenReturn( "" );
    when( vfsConnectionDetails.getRootPath() ).thenReturn( "root/path" );

    vfsConnectionManagerHelper
      .getConnectionRootProviderFileName( vfsConnectionFileNameTransformer, vfsConnectionDetails );
  }