@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
  public void testGetConnectionRootProviderFileNameIncludesNormalizedRootPath() throws KettleException {

    when( vfsConnectionDetails.getRootPath() ).thenReturn( "./sub-folder/\\../other-sub-folder//" );

    FileName fileName = vfsConnectionManagerHelper
      .getConnectionRootProviderFileName( vfsConnectionFileNameTransformer, vfsConnectionDetails );

    assertNotNull( fileName );
    assertEquals( TEST_CONNECTION_TYPE + "://" + "other-sub-folder", fileName.getURI() );
  }