@Override
    public ConfigFileList getConfigFiles(String pluginId, final String destinationFolder, final Collection<CRConfigurationProperty> configurations) {
        String resolvedExtensionVersion = pluginManager.resolveExtensionVersion(pluginId, CONFIG_REPO_EXTENSION, goSupportedVersions);
        if (resolvedExtensionVersion.equals("1.0") || resolvedExtensionVersion.equals("2.0")) {
            return ConfigFileList.withError("Unsupported Operation", "This plugin version does not support list config files");
        }
        return pluginRequestHelper.submitRequest(pluginId, REQUEST_CONFIG_FILES, new DefaultPluginInteractionCallback<>() {
            @Override
            public String requestBody(String resolvedExtensionVersion) {
                return messageHandlerMap.get(resolvedExtensionVersion).requestMessageConfigFiles(destinationFolder, configurations);
            }

            @Override
            public ConfigFileList onSuccess(String responseBody, Map<String, String> responseHeaders, String resolvedExtensionVersion) {
                return messageHandlerMap.get(resolvedExtensionVersion).responseMessageForConfigFiles(responseBody);
            }
        });
    }
@Test
    public void shouldTalkToPluginToGetConfigFiles() {
        List<String> deserializedResponse = new ArrayList<>();
        deserializedResponse.add("file.yaml");
        ConfigFileList files = new ConfigFileList(deserializedResponse, null);
        when(jsonMessageHandler3.responseMessageForConfigFiles(responseBody)).thenReturn(files);
        when(pluginManager.resolveExtensionVersion(PLUGIN_ID, CONFIG_REPO_EXTENSION, new ArrayList<>(List.of("1.0", "2.0", "3.0")))).thenReturn("3.0");


        ConfigFileList response = extension.getConfigFiles(PLUGIN_ID, "dir", null);

        assertRequest(requestArgumentCaptor.getValue(), CONFIG_REPO_EXTENSION, "3.0", ConfigRepoExtension.REQUEST_CONFIG_FILES, null);

        verify(jsonMessageHandler3).responseMessageForConfigFiles(responseBody);
        assertSame(response, files);
    }