Search in sources :

Example 11 with Group

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

the class ProjectsControllerTest method testDelete.

/**
 * This test needs to perform indexing so that it can be verified that
 * delete handling does remove the index data.
 */
@Test
void testDelete() throws Exception {
    String[] projectsToDelete = { "git" };
    // Add a group matching the project to be added.
    String groupName = "gitgroup";
    Group group = new Group(groupName, "git.*");
    env.getGroups().add(group);
    assertTrue(env.hasGroups());
    assertEquals(1, env.getGroups().stream().filter(g -> g.getName().equals(groupName)).collect(Collectors.toSet()).size());
    assertEquals(0, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    assertEquals(0, env.getProjects().size());
    assertEquals(0, env.getRepositories().size());
    assertEquals(0, env.getProjectRepositoriesMap().size());
    addProject("mercurial");
    addProject("git");
    assertEquals(2, env.getProjects().size());
    assertEquals(2, env.getRepositories().size());
    assertEquals(2, env.getProjectRepositoriesMap().size());
    // Check the group was populated properly.
    assertEquals(1, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    assertEquals(1, group.getRepositories().stream().filter(p -> p.getName().equals("git")).collect(Collectors.toSet()).size());
    // Run the indexer so that data directory is populated.
    ArrayList<String> subFiles = new ArrayList<>();
    subFiles.add("/git");
    subFiles.add("/mercurial");
    ArrayList<String> repos = new ArrayList<>();
    repos.add("/git");
    repos.add("/mercurial");
    // This is necessary so that repositories in HistoryGuru get populated.
    // For per project reindex this is called from setConfiguration() because
    // of the -R option is present.
    HistoryGuru.getInstance().invalidateRepositories(env.getRepositories(), null, CommandTimeoutType.INDEXER);
    env.setHistoryEnabled(true);
    Indexer.getInstance().prepareIndexer(env, // don't search for repositories
    false, // don't scan and add projects
    false, // don't create dictionary
    false, // subFiles - needed when refreshing history partially
    subFiles, // repositories - needed when refreshing history partially
    repos);
    Indexer.getInstance().doIndexerExecution(true, null, null);
    for (String proj : projectsToDelete) {
        deleteProject(proj);
    }
    assertEquals(1, env.getProjects().size());
    assertEquals(1, env.getRepositories().size());
    assertEquals(1, env.getProjectRepositoriesMap().size());
    // Test data removal.
    for (String projectName : projectsToDelete) {
        for (String dirName : new String[] { "historycache", IndexDatabase.XREF_DIR, IndexDatabase.INDEX_DIR }) {
            File dir = new File(env.getDataRootFile(), dirName + File.separator + projectName);
            assertFalse(dir.exists());
        }
    }
    // Check that HistoryGuru no longer maintains the removed projects.
    for (String p : projectsToDelete) {
        assertFalse(HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet()).contains(repository.getSourceRoot() + File.separator + p));
    }
    // Check the group no longer contains the removed project.
    assertEquals(0, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
}
Also used : GrizzlyWebTestContainerFactory(org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory) TestContainerFactory(org.glassfish.jersey.test.spi.TestContainerFactory) BeforeEach(org.junit.jupiter.api.BeforeEach) RepositoryFactory(org.opengrok.indexer.history.RepositoryFactory) SuggesterService(org.opengrok.web.api.v1.suggester.provider.service.SuggesterService) Arrays(java.util.Arrays) Group(org.opengrok.indexer.configuration.Group) Project(org.opengrok.indexer.configuration.Project) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) BeforeAll(org.junit.jupiter.api.BeforeAll) ApiTaskManager(org.opengrok.web.api.ApiTaskManager) ResourceConfig(org.glassfish.jersey.server.ResourceConfig) RuntimeEnvironment(org.opengrok.indexer.configuration.RuntimeEnvironment) ApiUtils.waitForTask(org.opengrok.web.api.v1.controller.ApiUtils.waitForTask) Path(java.nio.file.Path) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) ServletContainer(org.glassfish.jersey.servlet.ServletContainer) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) TestContainerException(org.glassfish.jersey.test.spi.TestContainerException) SUBVERSION(org.opengrok.indexer.condition.RepositoryInstalled.Type.SUBVERSION) IndexDatabase(org.opengrok.indexer.index.IndexDatabase) Collectors(java.util.stream.Collectors) Indexer(org.opengrok.indexer.index.Indexer) Entity(jakarta.ws.rs.client.Entity) Test(org.junit.jupiter.api.Test) IndexerException(org.opengrok.indexer.index.IndexerException) List(java.util.List) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) HistoryGuru(org.opengrok.indexer.history.HistoryGuru) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) DeploymentContext(org.glassfish.jersey.test.DeploymentContext) Mock(org.mockito.Mock) AbstractBinder(org.glassfish.jersey.internal.inject.AbstractBinder) StandardCopyOption(java.nio.file.StandardCopyOption) ArrayList(java.util.ArrayList) Response(jakarta.ws.rs.core.Response) RepositoryInfo(org.opengrok.indexer.history.RepositoryInfo) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) TestRepository(org.opengrok.indexer.util.TestRepository) CommandTimeoutType(org.opengrok.indexer.configuration.CommandTimeoutType) EnabledForRepository(org.opengrok.indexer.condition.EnabledForRepository) Files(java.nio.file.Files) IOUtils.removeRecursive(org.opengrok.indexer.util.IOUtils.removeRecursive) IOException(java.io.IOException) File(java.io.File) GenericType(jakarta.ws.rs.core.GenericType) AfterEach(org.junit.jupiter.api.AfterEach) ServletDeploymentContext(org.glassfish.jersey.test.ServletDeploymentContext) Paths(java.nio.file.Paths) MERCURIAL(org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL) Collections(java.util.Collections) Group(org.opengrok.indexer.configuration.Group) ArrayList(java.util.ArrayList) File(java.io.File) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) Test(org.junit.jupiter.api.Test)

Example 12 with Group

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

the class FalsePluginTest method shouldNotAllowRandomUserForAnyGroup.

@Test
void shouldNotAllowRandomUserForAnyGroup() {
    DummyHttpServletRequest req = new DummyHttpServletRequest();
    req.setAttribute(UserPlugin.REQUEST_ATTR, new User(RandomStringUtils.randomAlphanumeric(8)));
    Group randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    boolean projectAllowed = plugin.isAllowed(req, randomGroup);
    assertFalse(projectAllowed, "should not allow rando for random group 1");
    randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    projectAllowed = plugin.isAllowed(req, randomGroup);
    assertFalse(projectAllowed, "should not allow rando for random group 2");
}
Also used : Group(org.opengrok.indexer.configuration.Group) User(opengrok.auth.plugin.entity.User) DummyHttpServletRequest(org.opengrok.indexer.web.DummyHttpServletRequest) Test(org.junit.jupiter.api.Test)

Example 13 with Group

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

the class UserWhiteListPluginTest method shouldNotAllowRandomUserForAnyGroup.

@ParameterizedTest
@MethodSource("parameters")
public void shouldNotAllowRandomUserForAnyGroup(String param) {
    init(param);
    plugin.load(validPluginParameters);
    DummyHttpServletRequest req = new DummyHttpServletRequest();
    req.setAttribute(UserPlugin.REQUEST_ATTR, new User(RandomStringUtils.randomAlphanumeric(8)));
    Group randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    boolean projectAllowed = plugin.isAllowed(req, randomGroup);
    assertFalse(projectAllowed, "should not allow random group 1");
    randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    projectAllowed = plugin.isAllowed(req, randomGroup);
    assertFalse(projectAllowed, "should not allow random group 2");
}
Also used : Group(org.opengrok.indexer.configuration.Group) User(opengrok.auth.plugin.entity.User) DummyHttpServletRequest(org.opengrok.indexer.web.DummyHttpServletRequest) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 14 with Group

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

the class UserWhiteListPluginTest method shouldAllowWhitelistedUserForAnyGroup.

@ParameterizedTest
@MethodSource("parameters")
public void shouldAllowWhitelistedUserForAnyGroup(String param) {
    init(param);
    plugin.load(validPluginParameters);
    DummyHttpServletRequest req = new DummyHttpServletRequest();
    User user;
    if (param.equals(UserWhiteListPlugin.USERNAME_FIELD)) {
        user = new User(OK_USER);
    } else {
        user = new User("blurb", OK_ID);
    }
    req.setAttribute(UserPlugin.REQUEST_ATTR, user);
    Group randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    boolean groupAllowed = plugin.isAllowed(req, randomGroup);
    assertTrue(groupAllowed, "should allow OK entity for random group 1");
    randomGroup = new Group(RandomStringUtils.randomAlphanumeric(10));
    groupAllowed = plugin.isAllowed(req, randomGroup);
    assertTrue(groupAllowed, "should allow OK entity for random group 2");
}
Also used : Group(org.opengrok.indexer.configuration.Group) User(opengrok.auth.plugin.entity.User) DummyHttpServletRequest(org.opengrok.indexer.web.DummyHttpServletRequest) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 15 with Group

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

the class UserPluginTest method testUser.

@Test
public void testUser() {
    HttpServletRequest req;
    assertTrue(plugin.isAllowed(req = createRequest("007"), new Group()));
    assertEquals("007", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
    assertTrue(plugin.isAllowed(req = createRequest("008"), new Project()));
    assertEquals("008", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
    assertTrue(plugin.isAllowed(req = createRequest("009"), createGroup("some group")));
    assertEquals("009", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
    assertTrue(plugin.isAllowed(req = createRequest("00A"), createProject("some project")));
    assertEquals("00A", ((User) req.getAttribute(UserPlugin.REQUEST_ATTR)).getUsername());
}
Also used : HttpServletRequest(jakarta.servlet.http.HttpServletRequest) Group(org.opengrok.indexer.configuration.Group) Project(org.opengrok.indexer.configuration.Project) Test(org.junit.jupiter.api.Test)

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