Search in sources :

Example 26 with Group

use of org.opengrok.indexer.configuration.Group in project OpenGrok by OpenGrok.

the class ProjectHelperTest method testSynchronization.

/**
 * Test if projects and groups are always reloaded fully from the env.
 *
 * This ensures that when the RuntimeEnvironment changes that it also
 * updates the projects in the UI.
 */
@Test
public void testSynchronization() {
    HashMap<String, Project> oldProjects = new HashMap<>(env.getProjects());
    List<RepositoryInfo> oldRepositories = new ArrayList<>(env.getRepositories());
    Set<Group> oldGroups = new TreeSet<>(env.getGroups());
    Map<Project, List<RepositoryInfo>> oldMap = new TreeMap<>(getRepositoriesMap());
    env.getAuthorizationFramework().removeAll();
    // needed for setDirectoryName() below
    env.setSourceRoot("/src");
    cfg = PageConfig.get(getRequest());
    helper = cfg.getProjectHelper();
    // basic setup
    assertEquals(40, env.getProjects().size(), "There should be 40 env projects");
    assertEquals(20, env.getRepositories().size(), "There should be 20 env repositories");
    assertEquals(4, env.getGroups().size(), "There should be 4 env groups");
    assertEquals(8, helper.getAllUngrouped().size(), "There are 8 ungrouped projects");
    assertEquals(40, helper.getAllProjects().size(), "There are 40 projects");
    assertEquals(4, helper.getRepositories().size(), "There are 4 projects");
    assertEquals(4, helper.getGroups().size(), "There are 4 groups");
    // project
    Project p = new Project("some random name not in any group");
    p.setIndexed(true);
    // group
    Group g = new Group("some random name of a group");
    // repository
    Project repo = new Project("some random name not in any other group");
    repo.setIndexed(true);
    RepositoryInfo info = new RepoRepository();
    info.setParent(repo.getName());
    info.setDirectoryName(new File("/foo"));
    List<RepositoryInfo> infos = getRepositoriesMap().get(repo);
    if (infos == null) {
        infos = new ArrayList<>();
    }
    infos.add(info);
    getRepositoriesMap().put(repo, infos);
    env.getRepositories().add(info);
    env.getProjects().put("foo", p);
    env.getProjects().put("bar", repo);
    env.getGroups().add(g);
    assertEquals(42, env.getProjects().size());
    assertEquals(21, env.getRepositories().size());
    assertEquals(5, env.getGroups().size());
    // simulate another request
    cfg = PageConfig.get(getRequest());
    helper = cfg.getProjectHelper();
    // check for updates
    assertEquals(10, helper.getAllUngrouped().size(), "The helper state should refresh");
    assertEquals(42, helper.getAllProjects().size(), "The helper state should refresh");
    assertEquals(5, helper.getRepositories().size(), "The helper state should refresh");
    assertEquals(5, helper.getGroups().size(), "The helper state should refresh");
    setRepositoriesMap(oldMap);
    env.setProjects(oldProjects);
    env.setRepositories(oldRepositories);
    env.setGroups(oldGroups);
}
Also used : Group(org.opengrok.indexer.configuration.Group) HashMap(java.util.HashMap) RepositoryInfo(org.opengrok.indexer.history.RepositoryInfo) ArrayList(java.util.ArrayList) RepoRepository(org.opengrok.indexer.history.RepoRepository) TreeMap(java.util.TreeMap) Project(org.opengrok.indexer.configuration.Project) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) List(java.util.List) File(java.io.File) Test(org.junit.jupiter.api.Test)

Example 27 with Group

use of org.opengrok.indexer.configuration.Group in project OpenGrok by OpenGrok.

the class ProjectHelperTest method testGetAllowedGroups.

/**
 * Test of getGroups method, of class ProjectHelper.
 */
@Test
public void testGetAllowedGroups() {
    Set<Group> result = helper.getGroups();
    assertEquals(2, result.size());
    for (Group g : result) {
        assertTrue(g.getName().startsWith("allowed_"));
    }
}
Also used : Group(org.opengrok.indexer.configuration.Group) Test(org.junit.jupiter.api.Test)

Example 28 with Group

use of org.opengrok.indexer.configuration.Group in project OpenGrok by OpenGrok.

the class ProjectHelperExtendedTest method testHasAllowedSubgroupUnAllowedSubgroups.

@Test
public void testHasAllowedSubgroupUnAllowedSubgroups() {
    Group g = getUnAllowedGroupWithSubgroups();
    assertFalse(helper.hasAllowedSubgroup(g));
}
Also used : Group(org.opengrok.indexer.configuration.Group) Test(org.junit.jupiter.api.Test)

Example 29 with Group

use of org.opengrok.indexer.configuration.Group in project OpenGrok by OpenGrok.

the class ProjectHelperTestBase method setUp.

@BeforeEach
public void setUp() {
    assertEquals(4, env.getGroups().size(), "Should contain 4 groups");
    assertEquals(40, env.getProjects().size(), "Should contain 40 project");
    assertEquals(20, env.getRepositories().size(), "Should contain 20 repositories");
    assertNotNull(env.getProjectRepositoriesMap(), "Repository map should not be null");
    assertEquals(20, env.getProjectRepositoriesMap().size(), "Repository map should contain 20 project");
    env.setAuthorizationFramework(new AuthorizationFramework());
    env.getAuthorizationFramework().reload();
    IAuthorizationPlugin plugin = new TestPlugin() {

        @Override
        public boolean isAllowed(HttpServletRequest request, Project project) {
            return project.getName().startsWith("allowed");
        }

        @Override
        public boolean isAllowed(HttpServletRequest request, Group group) {
            return group.getName().startsWith("allowed");
        }
    };
    invokeAddPlugin(plugin);
    cfg = PageConfig.get(getRequest());
    helper = cfg.getProjectHelper();
}
Also used : HttpServletRequest(jakarta.servlet.http.HttpServletRequest) DummyHttpServletRequest(org.opengrok.indexer.web.DummyHttpServletRequest) Project(org.opengrok.indexer.configuration.Project) Group(org.opengrok.indexer.configuration.Group) AuthorizationFramework(org.opengrok.indexer.authorization.AuthorizationFramework) IAuthorizationPlugin(org.opengrok.indexer.authorization.IAuthorizationPlugin) TestPlugin(org.opengrok.indexer.authorization.TestPlugin) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 30 with Group

use of org.opengrok.indexer.configuration.Group in project OpenGrok by OpenGrok.

the class ProjectHelperTestBase method createGroups.

protected static void createGroups(int start, int cnt, boolean allowed, List<RepositoryInfo> rps, Map<Project, List<RepositoryInfo>> map, Map<String, Project> prjs, List<Group> grps) {
    for (int i = start; i < start + cnt; i++) {
        Group g = new Group((allowed ? "allowed_" : "") + "group_" + i);
        String pattern = "";
        pattern += createProject(i, 1, true, false, false, rps, prjs, map).getName() + "|";
        pattern += createProject(i, 2, true, false, false, rps, prjs, map).getName() + "|";
        pattern += createProject(i, 1, true, true, false, rps, prjs, map).getName() + "|";
        pattern += createProject(i, 2, true, true, false, rps, prjs, map).getName() + "|";
        pattern += createRepository(i, 1, 1, true, false, rps, prjs, map).getName() + "|";
        pattern += createRepository(i, 2, 1, true, false, rps, prjs, map).getName() + "|";
        pattern += createRepository(i, 1, 1, true, true, rps, prjs, map).getName() + "|";
        pattern += createRepository(i, 2, 1, true, true, rps, prjs, map).getName();
        g.setPattern(pattern);
        grps.add(g);
    }
}
Also used : Group(org.opengrok.indexer.configuration.Group)

Aggregations

Group (org.opengrok.indexer.configuration.Group)33 Test (org.junit.jupiter.api.Test)19 Project (org.opengrok.indexer.configuration.Project)19 DummyHttpServletRequest (org.opengrok.indexer.web.DummyHttpServletRequest)7 User (opengrok.auth.plugin.entity.User)5 BeforeEach (org.junit.jupiter.api.BeforeEach)4 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)4 MethodSource (org.junit.jupiter.params.provider.MethodSource)4 HttpServletRequest (jakarta.servlet.http.HttpServletRequest)3 File (java.io.File)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 TreeSet (java.util.TreeSet)3 Entity (jakarta.ws.rs.client.Entity)2 GenericType (jakarta.ws.rs.core.GenericType)2 Response (jakarta.ws.rs.core.Response)2 IOException (java.io.IOException)2 Files (java.nio.file.Files)2 Path (java.nio.file.Path)2 Paths (java.nio.file.Paths)2