### Question:
RepositoryConnectController { public boolean createRepository( String id, Map<String, Object> items ) { try { RepositoryMeta repositoryMeta = pluginRegistry.loadClass( RepositoryPluginType.class, id, RepositoryMeta.class ); repositoryMeta.populate( items, repositoriesMeta ); if ( repositoryMeta.getName() != null ) { Repository repository = pluginRegistry.loadClass( RepositoryPluginType.class, repositoryMeta.getId(), Repository.class ); repository.init( repositoryMeta ); if ( currentRepository != null ) { if ( isCompatibleRepositoryEdit( repositoryMeta ) ) { setConnectedRepository( repositoryMeta ); } repositoriesMeta.removeRepository( repositoriesMeta.indexOfRepository( currentRepository ) ); } repositoriesMeta.addRepository( repositoryMeta ); repositoriesMeta.writeData(); currentRepository = repositoryMeta; if ( !testRepository( repository ) ) { return false; } ( (AbstractRepository) repository ).create(); } } catch ( KettleException ke ) { log.logError( "Unable to load repository type", ke ); return false; } return true; } RepositoryConnectController( PluginRegistry pluginRegistry, Supplier<Spoon> spoonSupplier,
                                      RepositoriesMeta repositoriesMeta );  RepositoryConnectController(); @SuppressWarnings( "unchecked" ) String getPlugins(); boolean createRepository( String id, Map<String, Object> items ); @SuppressWarnings( "unchecked" ) String getRepositories(); String getRepository( String name ); DatabaseMeta getDatabase( String name ); void removeDatabase( String name ); @SuppressWarnings( "unchecked" ) String getDatabases(); void connectToRepository(); void connectToRepository( String username, String password ); void connectToRepository( RepositoryMeta repositoryMeta ); void connectToRepository( RepositoryMeta repositoryMeta, String username, String password ); void reconnectToRepository( String username, String password ); boolean deleteRepository( String name ); void addDatabase( DatabaseMeta databaseMeta ); boolean setDefaultRepository( String name ); String getDefaultUrl(); String getCurrentUser(); void setCurrentRepository( RepositoryMeta repositoryMeta ); RepositoryMeta getCurrentRepository(); RepositoryMeta getConnectedRepository(); void setConnectedRepository( RepositoryMeta connectedRepository ); RepositoryMeta getDefaultRepositoryMeta(); RepositoryMeta getRepositoryMetaByName( String name ); boolean isConnected( String name ); boolean isConnected(); Repository getConnectedRepositoryInstance(); void save(); PropsUI getPropsUI(); void addListener( RepositoryContollerListener listener ); void fireListeners(); boolean isRelogin(); void setRelogin( boolean relogin ); Map<String, Object> modelToMap( RepositoryModel model ); static final String DISPLAY_NAME; static final String DESCRIPTION; static final String IS_DEFAULT; static final String URL; static final String DATABASE_CONNECTION; static final String SHOW_HIDDEN_FOLDERS; static final String LOCATION; static final String DO_NOT_MODIFY; static final String DEFAULT_URL; static final String ERROR_401; }### Answer:
@Test public void testCreateRepository() throws Exception { String id = ID; Map<String, Object> items = new HashMap<>(); when( pluginRegistry.loadClass( RepositoryPluginType.class, id, RepositoryMeta.class ) ) .thenReturn( repositoryMeta ); when( pluginRegistry.loadClass( RepositoryPluginType.class, repositoryMeta.getId(), Repository.class ) ) .thenReturn( repository ); when( repository.test() ).thenReturn( true ); boolean result = controller.createRepository( id, items ); assertEquals( true, result ); when( repository.test() ).thenReturn( false ); result = controller.createRepository( id, items ); assertEquals( false, result ); when( repository.test() ).thenReturn( true ); doThrow( new KettleException() ).when( repositoriesMeta ).writeData(); result = controller.createRepository( id, items ); assertEquals( false, result ); }