assertThat(picoContainer.getParent().getParent().getParent().getComponentAdapters()).hasSize(
COMPONENTS_IN_LEVEL_1_AT_CONSTRUCTION
+ 25 // level 1
- + 47 // content of DaoModule
+ + 46 // content of DaoModule
+ 3 // content of EsSearchModule
+ 58 // content of CorePropertyDefinitions
);
import org.sonar.db.component.ComponentDao;
import org.sonar.db.component.ComponentKeyUpdaterDao;
import org.sonar.db.component.ComponentLinkDao;
-import org.sonar.db.component.ResourceDao;
import org.sonar.db.component.SnapshotDao;
import org.sonar.db.duplication.DuplicationDao;
+import org.sonar.db.es.EsQueueDao;
import org.sonar.db.event.EventDao;
import org.sonar.db.issue.IssueChangeDao;
import org.sonar.db.issue.IssueDao;
-import org.sonar.db.es.EsQueueDao;
import org.sonar.db.loadedtemplate.LoadedTemplateDao;
import org.sonar.db.measure.MeasureDao;
import org.sonar.db.measure.custom.CustomMeasureDao;
QualityGateConditionDao.class,
QualityGateDao.class,
QualityProfileDao.class,
- ResourceDao.class,
RoleDao.class,
RuleDao.class,
RuleRepositoryDao.class,
import org.sonar.db.component.ComponentDao;
import org.sonar.db.component.ComponentKeyUpdaterDao;
import org.sonar.db.component.ComponentLinkDao;
-import org.sonar.db.component.ResourceDao;
import org.sonar.db.component.SnapshotDao;
import org.sonar.db.duplication.DuplicationDao;
+import org.sonar.db.es.EsQueueDao;
import org.sonar.db.event.EventDao;
import org.sonar.db.issue.IssueChangeDao;
import org.sonar.db.issue.IssueDao;
-import org.sonar.db.es.EsQueueDao;
import org.sonar.db.loadedtemplate.LoadedTemplateDao;
import org.sonar.db.measure.MeasureDao;
import org.sonar.db.measure.custom.CustomMeasureDao;
private final InternalPropertiesDao internalPropertiesDao;
private final SnapshotDao snapshotDao;
private final ComponentDao componentDao;
- private final ResourceDao resourceDao;
private final ComponentKeyUpdaterDao componentKeyUpdaterDao;
private final MeasureDao measureDao;
private final UserDao userDao;
internalPropertiesDao = getDao(map, InternalPropertiesDao.class);
snapshotDao = getDao(map, SnapshotDao.class);
componentDao = getDao(map, ComponentDao.class);
- resourceDao = getDao(map, ResourceDao.class);
componentKeyUpdaterDao = getDao(map, ComponentKeyUpdaterDao.class);
measureDao = getDao(map, MeasureDao.class);
userDao = getDao(map, UserDao.class);
return componentDao;
}
- public ResourceDao resourceDao() {
- return resourceDao;
- }
-
public ComponentKeyUpdaterDao componentKeyUpdaterDao() {
return componentKeyUpdaterDao;
}
import org.sonar.db.component.ComponentMapper;
import org.sonar.db.component.FilePathWithHashDto;
import org.sonar.db.component.ResourceDto;
-import org.sonar.db.component.ResourceMapper;
import org.sonar.db.component.SnapshotDto;
import org.sonar.db.component.SnapshotMapper;
import org.sonar.db.component.UuidWithProjectUuidDto;
import org.sonar.db.debt.RequirementMigrationDto;
import org.sonar.db.duplication.DuplicationMapper;
import org.sonar.db.duplication.DuplicationUnitDto;
+import org.sonar.db.es.EsQueueMapper;
import org.sonar.db.event.EventDto;
import org.sonar.db.event.EventMapper;
import org.sonar.db.issue.IssueChangeDto;
import org.sonar.db.issue.IssueChangeMapper;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.issue.IssueMapper;
-import org.sonar.db.es.EsQueueMapper;
import org.sonar.db.loadedtemplate.LoadedTemplateDto;
import org.sonar.db.loadedtemplate.LoadedTemplateMapper;
import org.sonar.db.measure.MeasureDto;
confBuilder.loadAlias("UuidWithProjectUuid", UuidWithProjectUuidDto.class);
confBuilder.loadAlias("ViewsSnapshot", ViewsSnapshotDto.class);
- // ResourceMapper has to be loaded before IssueMapper because this last one used it
- confBuilder.loadMapper(ResourceMapper.class);
-
// keep them sorted alphabetically
Class<?>[] mappers = {
ActiveRuleMapper.class,
private boolean isPrivate = false;
private Date createdAt;
- private Long authorizationUpdatedAt;
public static String formatUuidPathFromParent(ComponentDto parent) {
checkArgument(!Strings.isNullOrEmpty(parent.getUuidPath()));
return this;
}
- /**
- * Only available on projects
- */
- @CheckForNull
- public Long getAuthorizationUpdatedAt() {
- return authorizationUpdatedAt;
- }
-
- public ComponentDto setAuthorizationUpdatedAt(@Nullable Long authorizationUpdatedAt) {
- this.authorizationUpdatedAt = authorizationUpdatedAt;
- return this;
- }
-
public String getKey() {
return key();
}
.append("longName", longName)
.append("language", language)
.append("enabled", enabled)
- .append("authorizationUpdatedAt", authorizationUpdatedAt)
.append("private", isPrivate)
.toString();
}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.component;
-
-import org.sonar.api.utils.System2;
-import org.sonar.db.Dao;
-import org.sonar.db.DbSession;
-
-public class ResourceDao implements Dao {
-
- private final System2 system2;
-
- public ResourceDao(System2 system2) {
- this.system2 = system2;
- }
-
- public void updateAuthorizationDate(Long projectId, DbSession session) {
- session.getMapper(ResourceMapper.class).updateAuthorizationDate(projectId, system2.now());
- }
-
-}
private String copyComponentUuid;
private String developerUuid;
private Date createdAt;
- private Long authorizationUpdatedAt;
public Long getId() {
return id;
this.createdAt = date;
return this;
}
-
- public Long getAuthorizationUpdatedAt() {
- return authorizationUpdatedAt;
- }
-
- public ResourceDto setAuthorizationUpdatedAt(Long authorizationUpdatedAt) {
- this.authorizationUpdatedAt = authorizationUpdatedAt;
- return this;
- }
}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.component;
-
-import org.apache.ibatis.annotations.Param;
-
-public interface ResourceMapper {
-
- void updateAuthorizationDate(@Param("projectId") Long projectId, @Param("authorizationDate") Long authorizationDate);
-
-}
p.copy_component_uuid as copyComponentUuid,
p.developer_uuid as developerUuid,
p.private as isPrivate,
- p.authorization_updated_at as authorizationUpdatedAt,
p.created_at as createdAt
</sql>
developer_uuid,
enabled,
created_at,
- authorization_updated_at,
b_changed,
b_copy_component_uuid,
b_description,
#{developerUuid,jdbcType=VARCHAR},
#{enabled,jdbcType=BOOLEAN},
#{createdAt,jdbcType=TIMESTAMP},
- #{authorizationUpdatedAt,jdbcType=BIGINT},
${_false},
null,
null,
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
-
-<mapper namespace="org.sonar.db.component.ResourceMapper">
-
- <update id="updateAuthorizationDate" parameterType="map">
- update projects set authorization_updated_at=#{authorizationDate}
- where id=#{projectId,jdbcType=BIGINT}
- </update>
-
-</mapper>
-
public void verify_count_of_added_components() {
ComponentContainer container = new ComponentContainer();
new DaoModule().configure(container);
- assertThat(container.size()).isEqualTo(2 + 47);
+ assertThat(container.size()).isEqualTo(2 + 46);
}
}
assertThat(result.scope()).isEqualTo("PRJ");
assertThat(result.getRootUuid()).isEqualTo("U1");
assertThat(result.projectUuid()).isEqualTo("U1");
- assertThat(result.getAuthorizationUpdatedAt()).isEqualTo(123_456_789L);
}
@Test
.setDeveloperUuid("uuid_7")
.setEnabled(true)
.setCreatedAt(DateUtils.parseDate("2014-06-18"))
- .setAuthorizationUpdatedAt(123456789L)
.setTags(newArrayList("platform", "analyzers"));
underTest.insert(dbSession, componentDto);
.setPath("src/org/struts/RequestContext.java")
.setRootUuid("uuid_3")
.setEnabled(false)
- .setCreatedAt(DateUtils.parseDate("2014-06-18"))
- .setAuthorizationUpdatedAt(123456789L);
+ .setCreatedAt(DateUtils.parseDate("2014-06-18"));
underTest.insert(dbSession, componentDto);
dbSession.commit();
.setPath("src/org/struts/RequestContext.java")
.setCopyComponentUuid("uuid_5")
.setRootUuid("uuid_3")
- .setDeveloperUuid("uuid_6")
- .setAuthorizationUpdatedAt(123456789L)
- ;
+ .setDeveloperUuid("uuid_6");
assertThat(componentDto.getId()).isEqualTo(1L);
assertThat(componentDto.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
assertThat(componentDto.getRootUuid()).isEqualTo("uuid_3");
assertThat(componentDto.getCopyResourceUuid()).isEqualTo("uuid_5");
assertThat(componentDto.getDeveloperUuid()).isEqualTo("uuid_6");
- assertThat(componentDto.getAuthorizationUpdatedAt()).isEqualTo(123456789L);
assertThat(componentDto.isPrivate()).isFalse();
}
+++ /dev/null
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.db.component;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbTester;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class ResourceDaoTest {
-
- private static System2 system = mock(System2.class);
-
- @Rule
- public DbTester dbTester = DbTester.create(system);
-
- private ResourceDao underTest = dbTester.getDbClient().resourceDao();
-
- @Test
- public void update_authorization_date() {
- dbTester.prepareDbUnit(getClass(), "update_authorization_date.xml");
-
- when(system.now()).thenReturn(987654321L);
- underTest.updateAuthorizationDate(1L, dbTester.getSession());
- dbTester.getSession().commit();
-
- dbTester.assertDbUnit(getClass(), "update_authorization_date-result.xml", "projects");
- }
-}
copy_resource_id="[null]"
person_id="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- module -->
<projects organization_uuid="org1"
enabled="[true]"
copy_component_uuid="uuid_5"
developer_uuid="uuid_7"
- authorization_updated_at="123456789"
+ authorization_updated_at="[null]"
created_at="2014-06-18"
b_changed="[false]"
b_copy_component_uuid="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
deprecated_kee="[null]"
- authorization_updated_at="123456789"
+ authorization_updated_at="[null]"
created_at="2014-06-18"
b_changed="[false]"
b_copy_component_uuid="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="path_of_U1"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- module -->
<projects organization_uuid="org1"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="path_of_U5"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- module -->
<projects organization_uuid="org1"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- root project -->
<projects organization_uuid="org1"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<snapshots id="1"
uuid="u1"
component_uuid="ABCD"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- Developer and technical project copy -->
<projects organization_uuid="org1"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<projects organization_uuid="org1"
id="12"
root_uuid="OPQR"
copy_component_uuid="ABCD"
developer_uuid="OPQR"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
</dataset>
copy_component_uuid="[null]"
developer_uuid="[null]"
path="path_of_U1"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<snapshots id="1"
uuid="u1"
component_uuid="ABCD"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<!-- Developer and technical project copy -->
<projects organization_uuid="org1"
copy_component_uuid="[null]"
developer_uuid="[null]"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
<projects organization_uuid="org1"
id="12"
scope="PRJ"
copy_component_uuid="U1"
developer_uuid="developer_uuid_of_U7"
path="[null]"
- authorization_updated_at="123456789"/>
+ authorization_updated_at="[null]"/>
</dataset>
enabled="[false]"
copy_component_uuid="uuid_6"
developer_uuid="uuid_9"
- authorization_updated_at="12345678910"
+ authorization_updated_at="[null]"
created_at="2014-06-18"
/>
enabled="[true]"
copy_component_uuid="uuid_5"
developer_uuid="[null]"
- authorization_updated_at="123456789"
+ authorization_updated_at="[null]"
created_at="2014-06-18"
/>
created_at="[null]"
path="/old/foo/bar"
deprecated_kee="old deprecated key"
- authorization_updated_at="987654321"
+ authorization_updated_at="[null]"
b_changed="[false]"
b_copy_component_uuid="[null]"
b_description="[null]"
}
private void copyPermissions(DbSession dbSession, PermissionTemplateDto template, ComponentDto project, @Nullable Integer projectCreatorUserId) {
- dbClient.resourceDao().updateAuthorizationDate(project.getId(), dbSession);
dbClient.groupPermissionDao().deleteByRootComponentId(dbSession, project.getId());
dbClient.userPermissionDao().deleteProjectPermissions(dbSession, project.getId());
projectOrViewUuids.add(projectId.get().getUuid());
}
}
- for (Long projectId : projectIds) {
- dbClient.resourceDao().updateAuthorizationDate(projectId, dbSession);
- }
-
projectIndexers.commitAndIndexByProjectUuids(dbSession, projectOrViewUuids, ProjectIndexer.Cause.PERMISSION_CHANGE);
}
public static final String TYPE_AUTHORIZATION = "authorization";
public static final String FIELD_GROUP_IDS = "groupIds";
public static final String FIELD_USER_IDS = "userIds";
- public static final String FIELD_UPDATED_AT = "updatedAt";
/**
* When true, then anybody can access to the project. In that case
NewIndex.NewIndexType authType = type.getIndex().createType(TYPE_AUTHORIZATION);
authType.setAttribute("_routing", ImmutableMap.of("required", true));
- authType.createDateTimeField(FIELD_UPDATED_AT);
authType.createLongField(FIELD_GROUP_IDS);
authType.createLongField(FIELD_USER_IDS);
authType.createBooleanField(FIELD_ALLOW_ANYONE);
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.elasticsearch.action.index.IndexRequest;
-import org.sonar.api.utils.DateUtils;
import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
private static IndexRequest newIndexRequest(PermissionIndexerDao.Dto dto, IndexType indexType) {
Map<String, Object> doc = new HashMap<>();
- doc.put(AuthorizationTypeSupport.FIELD_UPDATED_AT, DateUtils.longToDate(dto.getUpdatedAt()));
if (dto.isAllowAnyone()) {
doc.put(AuthorizationTypeSupport.FIELD_ALLOW_ANYONE, true);
// no need to feed users and groups
public static final class Dto {
private final String projectUuid;
- private final long updatedAt;
private final String qualifier;
private final List<Integer> userIds = new ArrayList<>();
private final List<Integer> groupIds = new ArrayList<>();
private boolean allowAnyone = false;
- public Dto(String projectUuid, long updatedAt, String qualifier) {
+ public Dto(String projectUuid, String qualifier) {
this.projectUuid = projectUuid;
- this.updatedAt = updatedAt;
this.qualifier = qualifier;
}
return projectUuid;
}
- public long getUpdatedAt() {
- return updatedAt;
- }
-
public String getQualifier() {
return qualifier;
}
" project_authorization.project as project, " +
" project_authorization.user_id as user_id, " +
" project_authorization.group_id as group_id, " +
- " project_authorization.updated_at as updated_at, " +
" project_authorization.qualifier as qualifier " +
"FROM ( " +
" SELECT '" + RowKind.USER + "' as kind," +
" projects.uuid AS project, " +
- " projects.authorization_updated_at AS updated_at, " +
" projects.qualifier AS qualifier, " +
" user_roles.user_id AS user_id, " +
" NULL AS group_id " +
" SELECT '" + RowKind.GROUP + "' as kind," +
" projects.uuid AS project, " +
- " projects.authorization_updated_at AS updated_at, " +
" projects.qualifier AS qualifier, " +
" NULL AS user_id, " +
" groups.id AS group_id " +
" SELECT '" + RowKind.ANYONE + "' as kind," +
" projects.uuid AS project, " +
- " projects.authorization_updated_at AS updated_at, " +
" projects.qualifier AS qualifier, " +
" NULL AS user_id, " +
" NULL AS group_id " +
// private project is returned when no authorization
" SELECT '" + RowKind.NONE + "' as kind," +
" projects.uuid AS project, " +
- " projects.authorization_updated_at AS updated_at, " +
" projects.qualifier AS qualifier, " +
" NULL AS user_id, " +
" NULL AS group_id " +
Dto dto = dtosByProjectUuid.get(projectUuid);
if (dto == null) {
- long updatedAt = rs.getLong(5);
- String qualifier = rs.getString(6);
- dto = new Dto(projectUuid, updatedAt, qualifier);
+ String qualifier = rs.getString(5);
+ dto = new Dto(projectUuid, qualifier);
dtosByProjectUuid.put(projectUuid, dto);
}
switch (rowKind) {
}
private void addIssueAuthorization(String projectUuid) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(projectUuid, system2.now(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(projectUuid, Qualifiers.PROJECT);
access.allowAnyone();
authorizationIndexerTester.allow(access);
}
private void indexIssues(IssueDoc... issues) {
issueIndexer.index(asList(issues).iterator());
for (IssueDoc issue : issues) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.projectUuid(), system2.now(), "TRK");
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.projectUuid(), "TRK");
access.allowAnyone();
authorizationIndexerTester.allow(access);
}
private void indexIssues(IssueDoc... issues) {
issueIndexer.index(asList(issues).iterator());
for (IssueDoc issue : issues) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.projectUuid(), system2.now(), "TRK");
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.projectUuid(), "TRK");
access.allowAnyone();
authorizationIndexerTester.allow(access);
}
*/
package org.sonar.server.issue.index;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Date;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
assertThat(scope.getIndexType().getType()).isEqualTo(TYPE_AUTHORIZATION);
Predicate<PermissionIndexerDao.Dto> projectPredicate = scope.getProjectPredicate();
- PermissionIndexerDao.Dto project = new PermissionIndexerDao.Dto("P1", 1_000, Qualifiers.PROJECT);
- PermissionIndexerDao.Dto file = new PermissionIndexerDao.Dto("F1", 1_000, Qualifiers.FILE);
+ PermissionIndexerDao.Dto project = new PermissionIndexerDao.Dto("P1", Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto file = new PermissionIndexerDao.Dto("F1", Qualifiers.FILE);
assertThat(projectPredicate.test(project)).isTrue();
assertThat(projectPredicate.test(file)).isFalse();
}
}
private void grantAccess(IssueDto issue) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.getProjectUuid(), System2.INSTANCE.now(), "TRK");
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(issue.getProjectUuid(), "TRK");
access.addUserId(userSession.getUserId());
permissionIndexerTester.allow(access);
}
private void index(ProjectMeasuresDoc... docs) {
es.putDocuments(INDEX_TYPE_PROJECT_MEASURES, docs);
for (ProjectMeasuresDoc doc : docs) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), System.currentTimeMillis(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), Qualifiers.PROJECT);
access.allowAnyone();
authorizationIndexerTester.allow(access);
}
private void indexForUser(UserDto user, ProjectMeasuresDoc... docs) {
es.putDocuments(INDEX_TYPE_PROJECT_MEASURES, docs);
for (ProjectMeasuresDoc doc : docs) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), System.currentTimeMillis(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), Qualifiers.PROJECT);
access.addUserId(user.getId());
authorizationIndexerTester.allow(access);
}
private void indexForGroup(GroupDto group, ProjectMeasuresDoc... docs) {
es.putDocuments(INDEX_TYPE_PROJECT_MEASURES, docs);
for (ProjectMeasuresDoc doc : docs) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), System.currentTimeMillis(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), Qualifiers.PROJECT);
access.addGroupId(group.getId());
authorizationIndexerTester.allow(access);
}
private void index(ProjectMeasuresDoc... docs) {
es.putDocuments(INDEX_TYPE_PROJECT_MEASURES, docs);
stream(docs).forEach(doc -> {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), System.currentTimeMillis(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), Qualifiers.PROJECT);
access.allowAnyone();
authorizationIndexerTester.allow(access);
});
assertThat(selectProjectPermissionsOfGroup(organization, userGroup, project)).containsOnly("user", "codeviewer");
assertThat(selectProjectPermissionsOfGroup(organization, null, project)).isEmpty();
assertThat(selectProjectPermissionsOfUser(user, project)).containsOnly("admin");
-
- checkAuthorizationUpdatedAtIsUpdated(project);
}
private List<String> selectProjectPermissionsOfGroup(OrganizationDto organizationDto, @Nullable GroupDto groupDto, ComponentDto project) {
.isEqualTo(expectedResult);
}
- private void checkAuthorizationUpdatedAtIsUpdated(ComponentDto project) {
- assertThat(dbTester.getDbClient().componentDao().selectOrFailById(session, project.getId()).getAuthorizationUpdatedAt())
- .isNotNull();
- }
-
}
assertThat(privateProject1Authorization.getGroupIds()).containsOnly(group.getId());
assertThat(privateProject1Authorization.isAllowAnyone()).isFalse();
assertThat(privateProject1Authorization.getUserIds()).containsOnly(user1.getId(), user2.getId());
- assertThat(privateProject1Authorization.getUpdatedAt()).isNotNull();
assertThat(privateProject1Authorization.getQualifier()).isEqualTo(PROJECT);
PermissionIndexerDao.Dto privateProject2Authorization = getByProjectUuid(privateProject2.uuid(), dtos);
assertThat(privateProject2Authorization.getGroupIds()).isEmpty();
assertThat(privateProject2Authorization.isAllowAnyone()).isFalse();
assertThat(privateProject2Authorization.getUserIds()).containsOnly(user1.getId());
- assertThat(privateProject2Authorization.getUpdatedAt()).isNotNull();
assertThat(privateProject2Authorization.getQualifier()).isEqualTo(PROJECT);
PermissionIndexerDao.Dto view2Authorization = getByProjectUuid(view2.uuid(), dtos);
assertThat(privateProject1Authorization.getGroupIds()).containsOnly(group.getId());
assertThat(privateProject1Authorization.isAllowAnyone()).isFalse();
assertThat(privateProject1Authorization.getUserIds()).containsOnly(user1.getId(), user2.getId());
- assertThat(privateProject1Authorization.getUpdatedAt()).isNotNull();
assertThat(privateProject1Authorization.getQualifier()).isEqualTo(PROJECT);
PermissionIndexerDao.Dto privateProject2Authorization = dtos.get(privateProject2.uuid());
assertThat(privateProject2Authorization.getGroupIds()).isEmpty();
assertThat(privateProject2Authorization.isAllowAnyone()).isFalse();
assertThat(privateProject2Authorization.getUserIds()).containsOnly(user1.getId());
- assertThat(privateProject2Authorization.getUpdatedAt()).isNotNull();
assertThat(privateProject2Authorization.getQualifier()).isEqualTo(PROJECT);
PermissionIndexerDao.Dto view2Authorization = dtos.get(view2.uuid());
assertThat(view1Authorization.getGroupIds()).isEmpty();
assertThat(view1Authorization.isAllowAnyone()).isTrue();
assertThat(view1Authorization.getUserIds()).isEmpty();
- assertThat(view1Authorization.getUpdatedAt()).isNotNull();
assertThat(view1Authorization.getQualifier()).isEqualTo(qualifier);
}
}
public PermissionIndexerTester allowOnlyAnyone(ComponentDto project) {
- PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), System.currentTimeMillis(), project.qualifier());
+ PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), project.qualifier());
dto.allowAnyone();
permissionIndexer.index(asList(dto));
return this;
}
public PermissionIndexerTester allowOnlyUser(ComponentDto project, UserDto user) {
- PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), System.currentTimeMillis(), project.qualifier())
+ PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), project.qualifier())
.addUserId(user.getId());
permissionIndexer.index(asList(dto));
return this;
}
public PermissionIndexerTester allowOnlyGroup(ComponentDto project, GroupDto group) {
- PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), System.currentTimeMillis(), project.qualifier())
+ PermissionIndexerDao.Dto dto = new PermissionIndexerDao.Dto(project.uuid(), project.qualifier())
.addGroupId(group.getId());
permissionIndexer.index(asList(dto));
return this;
private void index(ProjectMeasuresDoc... docs) {
es.putDocuments(INDEX_TYPE_PROJECT_MEASURES, docs);
for (ProjectMeasuresDoc doc : docs) {
- PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), System.currentTimeMillis(), Qualifiers.PROJECT);
+ PermissionIndexerDao.Dto access = new PermissionIndexerDao.Dto(doc.getId(), Qualifiers.PROJECT);
access.allowAnyone();
authorizationIndexerTester.allow(access);
}