@Test
  public void testGetRunnerEnvironments() throws Exception {
    List<RemoteRunnerServer> servers = new ArrayList<>(1);
    RemoteRunnerServer server1 = mock(RemoteRunnerServer.class);
    doReturn(true).when(server1).isAvailable();
    servers.add(server1);
    List<RunnerDescriptor> runners1 = new ArrayList<>(1);
    RunnerDescriptor runner1 = dto(RunnerDescriptor.class).withName("java/web");
    runner1.getEnvironments().add(dto(RunnerEnvironment.class).withId("tomcat7"));
    runner1.getEnvironments().add(dto(RunnerEnvironment.class).withId("jboss7"));
    runners1.add(runner1);

    RemoteRunnerServer server2 = mock(RemoteRunnerServer.class);
    doReturn(true).when(server2).isAvailable();
    servers.add(server2);
    List<RunnerDescriptor> runners2 = new ArrayList<>(1);
    RunnerDescriptor runner2 = dto(RunnerDescriptor.class).withName("java/web");
    runner2.getEnvironments().add(dto(RunnerEnvironment.class).withId("tomcat7"));
    runner2.getEnvironments().add(dto(RunnerEnvironment.class).withId("jboss7"));
    runners2.add(runner2);

    doReturn(runners1).when(server1).getRunnerDescriptors();
    doReturn(runners2).when(server2).getRunnerDescriptors();
    doReturn(servers).when(runQueue).getRegisterRunnerServers();

    RunnerEnvironmentTree system = service.getRunnerEnvironments(null, null);
    assertEquals(system.getDisplayName(), "system");
    assertEquals(system.getLeaves().size(), 0);
    List<RunnerEnvironmentTree> nodes = system.getNodes();
    assertEquals(nodes.size(), 1);

    RunnerEnvironmentTree java = system.getNode("java");
    assertNotNull(java);
    assertEquals(java.getDisplayName(), "java");
    nodes = java.getNodes();
    assertEquals(nodes.size(), 1);
    assertEquals(java.getLeaves().size(), 0);

    RunnerEnvironmentTree web = java.getNode("web");
    assertNotNull(web);
    assertEquals(web.getNodes().size(), 0);
    assertEquals(web.getLeaves().size(), 2);
    RunnerEnvironmentLeaf tomcat7 = web.getEnvironment("tomcat7");
    assertNotNull(tomcat7);
    RunnerEnvironmentLeaf jboss7 = web.getEnvironment("jboss7");
    assertNotNull(jboss7);
    RunnerEnvironment tomcat7Environment = tomcat7.getEnvironment();
    RunnerEnvironment jboss7Environment = jboss7.getEnvironment();
    assertNotNull(tomcat7Environment);
    assertNotNull(jboss7Environment);
    assertEquals(tomcat7Environment.getId(), "system:/java/web/tomcat7");
    assertEquals(jboss7Environment.getId(), "system:/java/web/jboss7");
  }
 @Test
 public void testFilerEnvironmentsByWorkspaceRestricted() throws Exception {
   List<RemoteRunnerServer> servers = createRunners();
   // first server isn't accessible
   doReturn("my").when(servers.get(0)).getAssignedWorkspace();
   RunnerEnvironmentTree system = service.getRunnerEnvironments(null, null);
   assertEquals(system.getDisplayName(), "system");
   assertEquals(system.getLeaves().size(), 0);
   List<RunnerEnvironmentTree> nodes = system.getNodes();
   assertEquals(nodes.size(), 1);
   RunnerEnvironmentTree java = system.getNode("java");
   assertNotNull(java);
   RunnerEnvironmentTree web = java.getNode("web");
   assertNotNull(web);
   assertEquals(web.getNodes().size(), 0);
   // from private shouldn't be visible
   assertEquals(web.getLeaves().size(), 2);
   RunnerEnvironmentLeaf tomcat7 = web.getEnvironment("tomcat7");
   assertNotNull(tomcat7);
   RunnerEnvironmentLeaf jboss7 = web.getEnvironment("jboss7");
   assertNotNull(jboss7);
 }
 @Test
 public void testFilerEnvironmentsByWorkspaceGetAll() throws Exception {
   createRunners();
   RunnerEnvironmentTree system = service.getRunnerEnvironments(null, null);
   assertEquals(system.getDisplayName(), "system");
   assertEquals(system.getLeaves().size(), 0);
   List<RunnerEnvironmentTree> nodes = system.getNodes();
   assertEquals(nodes.size(), 1);
   RunnerEnvironmentTree java = system.getNode("java");
   assertNotNull(java);
   RunnerEnvironmentTree web = java.getNode("web");
   assertNotNull(web);
   assertEquals(web.getNodes().size(), 0);
   assertEquals(web.getLeaves().size(), 4);
   RunnerEnvironmentLeaf tomcat7 = web.getEnvironment("tomcat7");
   assertNotNull(tomcat7);
   RunnerEnvironmentLeaf jboss7 = web.getEnvironment("jboss7");
   assertNotNull(jboss7);
   RunnerEnvironmentLeaf _tomcat7 = web.getEnvironment("my_tomcat7");
   assertNotNull(_tomcat7);
   RunnerEnvironmentLeaf _jboss7 = web.getEnvironment("my_jboss7");
   assertNotNull(_jboss7);
 }
  /**
   * Check running processes
   *
   * @throws Exception
   */
  @Test
  public void testGetRunningProcesses() throws Exception {

    // two users with tasks, only florent is the current user
    User user =
        new UserImpl("florent", "id-2314", "token-2323", Collections.<String>emptyList(), false);
    User dummy =
        new UserImpl("dummy", "id-2315", "token-2324", Collections.<String>emptyList(), false);
    EnvironmentContext context = EnvironmentContext.getCurrent();
    context.setUser(user);

    // add 5 tasks for 4 projects with Florent and one for dummy user
    String workspaceFlorent = "workspaceFlorent";
    String workspaceCodenvy = "workspaceCodenvy";
    String projectA = "/projectA";
    String projectFlorentA = projectA;
    String projectFlorentB = "projectB";
    String projectCodenvyA = projectA;

    List<RunQueueTask> tasks = new ArrayList<>(4);
    tasks.add(createTask(user, workspaceFlorent, projectFlorentA));
    tasks.add(createTask(user, workspaceFlorent, projectFlorentB));
    tasks.add(createTask(user, workspaceCodenvy, projectCodenvyA));
    tasks.add(createTask(dummy, "dummyWorkspace", "dummyProject"));
    doReturn(tasks).when(runQueue).getTasks();

    // we should have all the processes without specifying anything
    List<ApplicationProcessDescriptor> processes = service.getRunningProcesses(null, null);
    // list is 3 as we don't have task for dummy user
    assertEquals(processes.size(), 3);

    // we should have all the processes without specifying anything
    processes = service.getRunningProcesses(workspaceCodenvy, null);
    // list is 1 for this workspace
    assertEquals(processes.size(), 1);
    ApplicationProcessDescriptor process = processes.get(0);
    assertEquals(process.getWorkspace(), workspaceCodenvy);
    assertEquals(process.getProject(), projectCodenvyA);

    // we should have all the processes without specifying anything
    processes = service.getRunningProcesses(workspaceCodenvy, projectA);
    // list is 1 as we only have one matching workspace + project
    assertEquals(processes.size(), 1);

    // we should have all the processes without specifying anything
    processes = service.getRunningProcesses(null, projectA);
    // list is 2 as we have two workspaces with this project name
    assertEquals(processes.size(), 2);

    // no workspace with that name
    processes = service.getRunningProcesses("dummy", null);
    assertEquals(processes.size(), 0);

    // no project with that name
    processes = service.getRunningProcesses(null, "project");
    assertEquals(processes.size(), 0);

    // no project with that workspace + name
    processes = service.getRunningProcesses("dummy", "project");
    assertEquals(processes.size(), 0);
  }