Browse Source

SONAR-13221 Feedback from review and fix tests

tags/8.4.0.35506
Duarte Meneses 4 years ago
parent
commit
bde9afd00f
42 changed files with 145 additions and 75 deletions
  1. 5
    3
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/source/PersistFileSourcesStep.java
  2. 6
    3
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistIssuesStep.java
  3. 2
    1
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/source/PersistFileSourcesStepTest.java
  4. 2
    1
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistIssuesStepTest.java
  5. 0
    3
      server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueChangeDto.java
  6. 0
    2
      server/sonar-db-dao/src/main/java/org/sonar/db/permission/GroupPermissionDao.java
  7. 2
    0
      server/sonar-db-dao/src/test/java/org/sonar/db/issue/IssueMapperTest.java
  8. 4
    1
      server/sonar-db-dao/src/testFixtures/java/org/sonar/db/issue/IssueDbTester.java
  9. 4
    0
      server/sonar-db-dao/src/testFixtures/java/org/sonar/db/user/UserDbTester.java
  10. 5
    1
      server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueStorage.java
  11. 8
    2
      server/sonar-webserver-auth/src/main/java/org/sonar/server/organization/OrganisationSupport.java
  12. 1
    0
      server/sonar-webserver-auth/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java
  13. 2
    1
      server/sonar-webserver-auth/src/test/java/org/sonar/server/organization/OrganisationSupportTest.java
  14. 2
    0
      server/sonar-webserver-es/src/test/java/org/sonar/server/permission/index/PermissionIndexerDaoTest.java
  15. 6
    3
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/WebIssueStorage.java
  16. 5
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/GroupPermissionChanger.java
  17. 7
    4
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/PermissionTemplateService.java
  18. 5
    3
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/UserPermissionChanger.java
  19. 5
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java
  20. 1
    2
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
  21. 1
    2
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DeleteConditionAction.java
  22. 1
    2
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
  23. 1
    2
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java
  24. 4
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/WebIssueStorageTest.java
  25. 7
    4
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java
  26. 2
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java
  27. 2
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java
  28. 3
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java
  29. 3
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/IssueUpdaterTest.java
  30. 14
    4
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SearchActionTest.java
  31. 3
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java
  32. 3
    3
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java
  33. 3
    3
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java
  34. 4
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/GroupPermissionChangerTest.java
  35. 3
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java
  36. 2
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/UserPermissionChangerTest.java
  37. 3
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/BasePermissionWsTest.java
  38. 2
    0
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
  39. 2
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java
  40. 2
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/BulkApplyTemplateActionTest.java
  41. 5
    2
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/project/ws/UpdateVisibilityActionTest.java
  42. 3
    3
      sonar-ws/src/main/protobuf/ws-qualitygates.proto

+ 5
- 3
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/source/PersistFileSourcesStep.java View File

@@ -35,7 +35,7 @@ import org.sonar.ce.task.projectanalysis.component.TreeRootHolder;
import org.sonar.ce.task.projectanalysis.component.TypeAwareVisitorAdapter;
import org.sonar.ce.task.projectanalysis.scm.Changeset;
import org.sonar.ce.task.step.ComputationStep;
import org.sonar.core.util.Uuids;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.protobuf.DbFileSources;
@@ -50,16 +50,18 @@ public class PersistFileSourcesStep implements ComputationStep {
private final SourceLinesHashRepository sourceLinesHash;
private final FileSourceDataComputer fileSourceDataComputer;
private final FileSourceDataWarnings fileSourceDataWarnings;
private final UuidFactory uuidFactory;

public PersistFileSourcesStep(DbClient dbClient, System2 system2, TreeRootHolder treeRootHolder,
SourceLinesHashRepository sourceLinesHash, FileSourceDataComputer fileSourceDataComputer,
FileSourceDataWarnings fileSourceDataWarnings) {
FileSourceDataWarnings fileSourceDataWarnings, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.system2 = system2;
this.treeRootHolder = treeRootHolder;
this.sourceLinesHash = sourceLinesHash;
this.fileSourceDataComputer = fileSourceDataComputer;
this.fileSourceDataWarnings = fileSourceDataWarnings;
this.uuidFactory = uuidFactory;
}

@Override
@@ -116,7 +118,7 @@ public class PersistFileSourcesStep implements ComputationStep {
FileSourceDto previousDto = previousFileSourcesByUuid.get(file.getUuid());
if (previousDto == null) {
FileSourceDto dto = new FileSourceDto()
.setUuid(Uuids.create())
.setUuid(uuidFactory.create())
.setProjectUuid(projectUuid)
.setFileUuid(file.getUuid())
.setBinaryData(binaryData)

+ 6
- 3
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistIssuesStep.java View File

@@ -30,6 +30,7 @@ import org.sonar.ce.task.projectanalysis.issue.UpdateConflictResolver;
import org.sonar.ce.task.step.ComputationStep;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.util.CloseableIterator;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.BatchSession;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -52,15 +53,17 @@ public class PersistIssuesStep implements ComputationStep {
private final RuleRepository ruleRepository;
private final ProtoIssueCache protoIssueCache;
private final IssueStorage issueStorage;
private final UuidFactory uuidFactory;

public PersistIssuesStep(DbClient dbClient, System2 system2, UpdateConflictResolver conflictResolver,
RuleRepository ruleRepository, ProtoIssueCache protoIssueCache, IssueStorage issueStorage) {
RuleRepository ruleRepository, ProtoIssueCache protoIssueCache, IssueStorage issueStorage, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.system2 = system2;
this.conflictResolver = conflictResolver;
this.ruleRepository = ruleRepository;
this.protoIssueCache = protoIssueCache;
this.issueStorage = issueStorage;
this.uuidFactory = uuidFactory;
}

@Override
@@ -112,7 +115,7 @@ public class PersistIssuesStep implements ComputationStep {
statistics.inserts++;
});

addedIssues.forEach(i -> issueStorage.insertChanges(changeMapper, i));
addedIssues.forEach(i -> issueStorage.insertChanges(changeMapper, i, uuidFactory));
}

private void persistUpdatedIssues(IssueStatistics statistics, List<DefaultIssue> updatedIssues, IssueMapper mapper, IssueChangeMapper changeMapper) {
@@ -140,7 +143,7 @@ public class PersistIssuesStep implements ComputationStep {
});
}

updatedIssues.forEach(i -> issueStorage.insertChanges(changeMapper, i));
updatedIssues.forEach(i -> issueStorage.insertChanges(changeMapper, i, uuidFactory));
}

private static void flushSession(DbSession dbSession) {

+ 2
- 1
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/source/PersistFileSourcesStepTest.java View File

@@ -38,6 +38,7 @@ import org.sonar.ce.task.projectanalysis.scm.Changeset;
import org.sonar.ce.task.projectanalysis.step.BaseStepTest;
import org.sonar.ce.task.step.ComputationStep;
import org.sonar.ce.task.step.TestComputationStepContext;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -83,7 +84,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
public void setup() {
when(system2.now()).thenReturn(NOW);
when(sourceLinesHashRepository.getLineHashesComputerToPersist(Mockito.any(Component.class))).thenReturn(lineHashesComputer);
underTest = new PersistFileSourcesStep(dbClient, system2, treeRootHolder, sourceLinesHashRepository, fileSourceDataComputer, fileSourceDataWarnings);
underTest = new PersistFileSourcesStep(dbClient, system2, treeRootHolder, sourceLinesHashRepository, fileSourceDataComputer, fileSourceDataWarnings, new SequenceUuidFactory());
initBasicReport(1);
}


+ 2
- 1
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistIssuesStepTest.java View File

@@ -43,6 +43,7 @@ import org.sonar.ce.task.step.TestComputationStepContext;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.DefaultIssueComment;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
@@ -104,7 +105,7 @@ public class PersistIssuesStepTest extends BaseStepTest {
reportReader.setMetadata(ScannerReport.Metadata.getDefaultInstance());

underTest = new PersistIssuesStep(dbClient, system2, conflictResolver, new RuleRepositoryImpl(adHocRuleCreator, dbClient, analysisMetadataHolder), protoIssueCache,
new IssueStorage());
new IssueStorage(), new SequenceUuidFactory());
}

@After

+ 0
- 3
server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueChangeDto.java View File

@@ -28,7 +28,6 @@ import org.apache.commons.lang.builder.ToStringStyle;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.DefaultIssueComment;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.Uuids;

import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Objects.requireNonNull;
@@ -62,7 +61,6 @@ public final class IssueChangeDto implements Serializable {
public static IssueChangeDto of(DefaultIssueComment comment) {
IssueChangeDto dto = newDto(comment.issueKey());
dto.setKey(comment.key());
dto.setUuid(Uuids.create());
dto.setChangeType(IssueChangeDto.TYPE_COMMENT);
dto.setChangeData(comment.markdownText());
dto.setUserUuid(comment.userUuid());
@@ -73,7 +71,6 @@ public final class IssueChangeDto implements Serializable {

public static IssueChangeDto of(String issueKey, FieldDiffs diffs) {
IssueChangeDto dto = newDto(issueKey);
dto.setUuid(Uuids.create());
dto.setChangeType(IssueChangeDto.TYPE_FIELD_CHANGE);
dto.setChangeData(diffs.toEncodedString());
dto.setUserUuid(diffs.userUuid());

+ 0
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/permission/GroupPermissionDao.java View File

@@ -27,7 +27,6 @@ import javax.annotation.Nullable;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.sonar.api.security.DefaultGroups;
import org.sonar.core.util.Uuids;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
import org.sonar.db.component.ComponentMapper;
@@ -115,7 +114,6 @@ public class GroupPermissionDao implements Dao {
}

public void insert(DbSession dbSession, GroupPermissionDto dto) {
dto.setUuid(Uuids.create());
ensureComponentPermissionConsistency(dbSession, dto);
ensureGroupPermissionConsistency(dbSession, dto);
mapper(dbSession).insert(dto);

+ 2
- 0
server/sonar-db-dao/src/test/java/org/sonar/db/issue/IssueMapperTest.java View File

@@ -42,6 +42,7 @@ import org.sonar.api.utils.DateUtils;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.UuidFactoryFast;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -478,6 +479,7 @@ public class IssueMapperTest {
IntStream.range(0, random.nextInt(3)).forEach(i -> diffs.setDiff("key_a" + i, "old_" + i, "new_" + i));

IssueChangeDto changeDto = IssueChangeDto.of(issue.getKey(), diffs);
changeDto.setUuid(Uuids.createFast());
dbTester.getDbClient().issueChangeDao().insert(dbSession, changeDto);
return changeDto;
}

+ 4
- 1
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/issue/IssueDbTester.java View File

@@ -27,6 +27,7 @@ import org.sonar.api.issue.Issue;
import org.sonar.api.rules.RuleType;
import org.sonar.core.issue.DefaultIssueComment;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.organization.OrganizationDto;
@@ -224,11 +225,13 @@ public class IssueDbTester {

public IssueChangeDto insertComment(IssueDto issueDto, @Nullable UserDto user, String text) {
IssueChangeDto issueChangeDto = IssueChangeDto.of(DefaultIssueComment.create(issueDto.getKey(), user == null ? null : user.getUuid(), text));
issueChangeDto.setUuid(Uuids.create());
return insertChange(issueChangeDto);
}

public void insertFieldDiffs(IssueDto issueDto, FieldDiffs... diffs) {
Arrays.stream(diffs).forEach(diff -> db.getDbClient().issueChangeDao().insert(db.getSession(), IssueChangeDto.of(issueDto.getKey(), diff)));
Arrays.stream(diffs).forEach(diff -> db.getDbClient().issueChangeDao().insert(db.getSession(), IssueChangeDto.of(issueDto.getKey(), diff)
.setUuid(Uuids.createFast())));
db.commit();
}


+ 4
- 0
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/user/UserDbTester.java View File

@@ -223,6 +223,7 @@ public class UserDbTester {

public GroupPermissionDto insertPermissionOnAnyone(OrganizationDto org, String permission) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(org.getUuid())
.setGroupId(null)
.setRole(permission);
@@ -237,6 +238,7 @@ public class UserDbTester {

public GroupPermissionDto insertPermissionOnGroup(GroupDto group, String permission) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
.setRole(permission);
@@ -260,6 +262,7 @@ public class UserDbTester {
"permission %s can't be granted on a public project", permission);
checkArgument(project.getMainBranchProjectUuid() == null, "Permissions can't be granted on branches");
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(project.getOrganizationUuid())
.setGroupId(null)
.setRole(permission)
@@ -280,6 +283,7 @@ public class UserDbTester {
"%s can't be granted on a public project", permission);
checkArgument(project.getMainBranchProjectUuid() == null, "Permissions can't be granted on branches");
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
.setRole(permission)

+ 5
- 1
server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueStorage.java View File

@@ -22,14 +22,16 @@ package org.sonar.server.issue;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.DefaultIssueComment;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.issue.IssueChangeDto;
import org.sonar.db.issue.IssueChangeMapper;

public class IssueStorage {
public void insertChanges(IssueChangeMapper mapper, DefaultIssue issue) {
public void insertChanges(IssueChangeMapper mapper, DefaultIssue issue, UuidFactory uuidFactory) {
for (DefaultIssueComment comment : issue.defaultIssueComments()) {
if (comment.isNew()) {
IssueChangeDto changeDto = IssueChangeDto.of(comment);
changeDto.setUuid(uuidFactory.create());
mapper.insert(changeDto);
}
}
@@ -37,10 +39,12 @@ public class IssueStorage {
if (issue.isCopied()) {
for (FieldDiffs d : issue.changes()) {
IssueChangeDto changeDto = IssueChangeDto.of(issue.key(), d);
changeDto.setUuid(uuidFactory.create());
mapper.insert(changeDto);
}
} else if (!issue.isNew() && diffs != null) {
IssueChangeDto changeDto = IssueChangeDto.of(issue.key(), diffs);
changeDto.setUuid(uuidFactory.create());
mapper.insert(changeDto);
}
}

+ 8
- 2
server/sonar-webserver-auth/src/main/java/org/sonar/server/organization/OrganisationSupport.java View File

@@ -22,6 +22,7 @@ package org.sonar.server.organization;
import java.util.List;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.server.ServerSide;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.permission.GroupPermissionDto;
@@ -43,16 +44,18 @@ public class OrganisationSupport {
private final DefaultGroupCreator defaultGroupCreator;
private final DefaultGroupFinder defaultGroupFinder;
private final RuleIndexer ruleIndexer;
private final UuidFactory uuidFactory;

public OrganisationSupport(DbClient dbClient, DefaultOrganizationProvider defaultOrganizationProvider,
OrganizationFlags organizationFlags, DefaultGroupCreator defaultGroupCreator, DefaultGroupFinder defaultGroupFinder,
RuleIndexer ruleIndexer) {
RuleIndexer ruleIndexer, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.defaultOrganizationProvider = defaultOrganizationProvider;
this.organizationFlags = organizationFlags;
this.defaultGroupCreator = defaultGroupCreator;
this.defaultGroupFinder = defaultGroupFinder;
this.ruleIndexer = ruleIndexer;
this.uuidFactory = uuidFactory;
}

public void enable(String login) {
@@ -90,7 +93,10 @@ public class OrganisationSupport {
context -> {
GroupPermissionDto groupPermissionDto = (GroupPermissionDto) context.getResultObject();
dbClient.groupPermissionDao().insert(dbSession,
new GroupPermissionDto().setOrganizationUuid(defaultOrganizationUuid).setGroupId(membersGroup.getId())
new GroupPermissionDto()
.setUuid(uuidFactory.create())
.setOrganizationUuid(defaultOrganizationUuid)
.setGroupId(membersGroup.getId())
.setRole(groupPermissionDto.getRole())
.setComponentUuid(groupPermissionDto.getComponentUuid()));
});

+ 1
- 0
server/sonar-webserver-auth/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java View File

@@ -231,6 +231,7 @@ public class OrganizationUpdaterImpl implements OrganizationUpdater {
dbClient.groupPermissionDao().insert(
dbSession,
new GroupPermissionDto()
.setUuid(uuidFactory.create())
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
.setRole(permission.getKey()));

+ 2
- 1
server/sonar-webserver-auth/src/test/java/org/sonar/server/organization/OrganisationSupportTest.java View File

@@ -27,6 +27,7 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.ArgumentCaptor;
import org.sonar.api.rule.RuleStatus;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.organization.OrganizationDto;
@@ -60,7 +61,7 @@ public class OrganisationSupportTest {
private OrganizationFlags organizationFlags = new OrganizationFlagsImpl(dbTester.getDbClient());
private RuleIndexer ruleIndexer = spy(new RuleIndexer(es.client(), dbTester.getDbClient()));
private OrganisationSupport underTest = new OrganisationSupport(dbTester.getDbClient(), defaultOrganizationProvider, organizationFlags,
new DefaultGroupCreatorImpl(dbTester.getDbClient()), new DefaultGroupFinder(dbTester.getDbClient()), ruleIndexer);
new DefaultGroupCreatorImpl(dbTester.getDbClient()), new DefaultGroupFinder(dbTester.getDbClient()), ruleIndexer, new SequenceUuidFactory());

@Test
public void enabling_support_saves_internal_property_and_flags_caller_as_root() {

+ 2
- 0
server/sonar-webserver-es/src/test/java/org/sonar/server/permission/index/PermissionIndexerDaoTest.java View File

@@ -29,6 +29,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.utils.System2;
import org.sonar.core.util.Uuids;
import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -172,6 +173,7 @@ public class PermissionIndexerDaoTest {
dbClient.componentDao().insert(dbSession, project);
projectUuids.add(project.uuid());
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
.setRole(USER)

+ 6
- 3
server/sonar-webserver-webapi/src/main/java/org/sonar/server/issue/WebIssueStorage.java View File

@@ -33,6 +33,7 @@ import org.sonar.api.rules.RuleFinder;
import org.sonar.api.server.ServerSide;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.BatchSession;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -61,12 +62,14 @@ public class WebIssueStorage extends IssueStorage {
private final RuleFinder ruleFinder;
private final DbClient dbClient;
private final IssueIndexer indexer;
private final UuidFactory uuidFactory;

public WebIssueStorage(System2 system2, DbClient dbClient, RuleFinder ruleFinder, IssueIndexer indexer) {
public WebIssueStorage(System2 system2, DbClient dbClient, RuleFinder ruleFinder, IssueIndexer indexer, UuidFactory uuidFactory) {
this.system2 = system2;
this.dbClient = dbClient;
this.ruleFinder = ruleFinder;
this.indexer = indexer;
this.uuidFactory = uuidFactory;
}

protected DbClient getDbClient() {
@@ -106,7 +109,7 @@ public class WebIssueStorage extends IssueStorage {
for (DefaultIssue issue : issuesToInsert) {
IssueDto issueDto = doInsert(session, now, issue);
inserted.add(issueDto);
insertChanges(issueChangeMapper, issue);
insertChanges(issueChangeMapper, issue, uuidFactory);
if (count > BatchSession.MAX_BATCH_SIZE) {
session.commit();
count = 0;
@@ -146,7 +149,7 @@ public class WebIssueStorage extends IssueStorage {
for (DefaultIssue issue : issuesToUpdate) {
IssueDto issueDto = doUpdate(dbSession, now, issue);
updated.add(issueDto);
insertChanges(issueChangeMapper, issue);
insertChanges(issueChangeMapper, issue, uuidFactory);
}
dbSession.commit();
}

+ 5
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/GroupPermissionChanger.java View File

@@ -21,6 +21,7 @@ package org.sonar.server.permission;

import java.util.List;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.permission.GroupPermissionDto;
@@ -35,9 +36,11 @@ import static org.sonar.server.permission.PermissionChange.Operation.REMOVE;
public class GroupPermissionChanger {

private final DbClient dbClient;
private final UuidFactory uuidFactory;

public GroupPermissionChanger(DbClient dbClient) {
public GroupPermissionChanger(DbClient dbClient, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.uuidFactory = uuidFactory;
}

public boolean apply(DbSession dbSession, GroupPermissionChange change) {
@@ -109,6 +112,7 @@ public class GroupPermissionChanger {

validateNotAnyoneAndAdminPermission(change.getPermission(), change.getGroupIdOrAnyone());
GroupPermissionDto addedDto = new GroupPermissionDto()
.setUuid(uuidFactory.create())
.setRole(change.getPermission())
.setOrganizationUuid(change.getOrganizationUuid())
.setGroupId(change.getGroupIdOrAnyone().getId())

+ 7
- 4
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/PermissionTemplateService.java View File

@@ -30,7 +30,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang.StringUtils;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.server.ServerSide;
import org.sonar.core.util.Uuids;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.component.ComponentDto;
@@ -59,13 +59,15 @@ public class PermissionTemplateService {
private final ProjectIndexers projectIndexers;
private final UserSession userSession;
private final DefaultTemplatesResolver defaultTemplatesResolver;
private final UuidFactory uuidFactory;

public PermissionTemplateService(DbClient dbClient, ProjectIndexers projectIndexers, UserSession userSession,
DefaultTemplatesResolver defaultTemplatesResolver) {
DefaultTemplatesResolver defaultTemplatesResolver, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.projectIndexers = projectIndexers;
this.userSession = userSession;
this.defaultTemplatesResolver = defaultTemplatesResolver;
this.uuidFactory = uuidFactory;
}

public boolean wouldUserHaveScanPermissionWithDefaultTemplate(DbSession dbSession, String organizationUuid, @Nullable Integer userId, String projectKey) {
@@ -130,7 +132,7 @@ public class PermissionTemplateService {
.stream()
.filter(up -> permissionValidForProject(project, up.getPermission()))
.forEach(up -> {
UserPermissionDto dto = new UserPermissionDto(Uuids.create(), organizationUuid, up.getPermission(), up.getUserId(), project.uuid());
UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), organizationUuid, up.getPermission(), up.getUserId(), project.uuid());
dbClient.userPermissionDao().insert(dbSession, dto);
});

@@ -141,6 +143,7 @@ public class PermissionTemplateService {
.filter(gp -> permissionValidForProject(project, gp.getPermission()))
.forEach(gp -> {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(uuidFactory.create())
.setOrganizationUuid(organizationUuid)
.setGroupId(isAnyone(gp.getGroupName()) ? null : gp.getGroupId())
.setRole(gp.getPermission())
@@ -159,7 +162,7 @@ public class PermissionTemplateService {
.filter(up -> permissionValidForProject(project, up.getPermission()))
.filter(characteristic -> !permissionsForCurrentUserAlreadyInDb.contains(characteristic.getPermission()))
.forEach(c -> {
UserPermissionDto dto = new UserPermissionDto(Uuids.create(), organizationUuid, c.getPermission(), projectCreatorUserId, project.uuid());
UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), organizationUuid, c.getPermission(), projectCreatorUserId, project.uuid());
dbClient.userPermissionDao().insert(dbSession, dto);
});
}

+ 5
- 3
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/UserPermissionChanger.java View File

@@ -20,7 +20,7 @@
package org.sonar.server.permission;

import java.util.List;
import org.sonar.core.util.Uuids;
import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.permission.UserPermissionDto;
@@ -37,9 +37,11 @@ import static org.sonar.server.permission.PermissionChange.Operation.REMOVE;
public class UserPermissionChanger {

private final DbClient dbClient;
private final UuidFactory uuidFactory;

public UserPermissionChanger(DbClient dbClient) {
public UserPermissionChanger(DbClient dbClient, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.uuidFactory = uuidFactory;
}

public boolean apply(DbSession dbSession, UserPermissionChange change) {
@@ -91,7 +93,7 @@ public class UserPermissionChanger {
if (loadExistingPermissions(dbSession, change).contains(change.getPermission())) {
return false;
}
UserPermissionDto dto = new UserPermissionDto(Uuids.create(), change.getOrganizationUuid(), change.getPermission(), change.getUserId().getId(), change.getProjectUuid());
UserPermissionDto dto = new UserPermissionDto(uuidFactory.create(), change.getOrganizationUuid(), change.getPermission(), change.getUserId().getId(), change.getProjectUuid());
dbClient.userPermissionDao().insert(dbSession, dto);
return true;
}

+ 5
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/project/ws/UpdateVisibilityAction.java View File

@@ -26,6 +26,7 @@ import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.UuidFactory;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -58,14 +59,16 @@ public class UpdateVisibilityAction implements ProjectsWsAction {
private final UserSession userSession;
private final ProjectIndexers projectIndexers;
private final ProjectsWsSupport projectsWsSupport;
private final UuidFactory uuidFactory;

public UpdateVisibilityAction(DbClient dbClient, ComponentFinder componentFinder, UserSession userSession,
ProjectIndexers projectIndexers, ProjectsWsSupport projectsWsSupport) {
ProjectIndexers projectIndexers, ProjectsWsSupport projectsWsSupport, UuidFactory uuidFactory) {
this.dbClient = dbClient;
this.componentFinder = componentFinder;
this.userSession = userSession;
this.projectIndexers = projectIndexers;
this.projectsWsSupport = projectsWsSupport;
this.uuidFactory = uuidFactory;
}

public void define(WebService.NewController context) {
@@ -154,6 +157,7 @@ public class UpdateVisibilityAction implements ProjectsWsAction {

private void insertProjectPermissionOnGroup(DbSession dbSession, ComponentDto component, String permission, Integer groupId) {
dbClient.groupPermissionDao().insert(dbSession, new GroupPermissionDto()
.setUuid(uuidFactory.create())
.setOrganizationUuid(component.getOrganizationUuid())
.setComponentUuid(component.uuid())
.setGroupId(groupId)

+ 1
- 2
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java View File

@@ -88,8 +88,7 @@ public class CreateConditionAction implements QualityGatesWsAction {
wsSupport.checkCanEdit(qualityGate);
QualityGateConditionDto condition = qualityGateConditionsUpdater.createCondition(dbSession, qualityGate, metric, operator, error);
CreateConditionResponse.Builder createConditionResponse = CreateConditionResponse.newBuilder()
// TODO
//.setId(condition.getUuid())
.setId(condition.getUuid())
.setMetric(condition.getMetricKey())
.setError(condition.getErrorThreshold())
.setOp(condition.getOperator());

+ 1
- 2
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DeleteConditionAction.java View File

@@ -53,7 +53,7 @@ public class DeleteConditionAction implements QualityGatesWsAction {
createCondition
.createParam(PARAM_ID)
.setRequired(true)
.setDescription("Condition ID")
.setDescription("Condition UUID")
.setExampleValue("2");

wsSupport.createOrganizationParam(createCondition);
@@ -61,7 +61,6 @@ public class DeleteConditionAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
// TODO
String conditionUuid = request.mandatoryParam(PARAM_ID);
try (DbSession dbSession = dbClient.openSession(false)) {
OrganizationDto organization = wsSupport.getOrganization(dbSession, request);

+ 1
- 2
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java View File

@@ -140,8 +140,7 @@ public class ShowAction implements QualityGatesWsAction {
MetricDto metric = metricsById.get(metricId);
checkState(metric != null, "Could not find metric with id %s", metricId);
ShowWsResponse.Condition.Builder builder = ShowWsResponse.Condition.newBuilder()
// TODO
//.setId(condition.getUuid())
.setId(condition.getUuid())
.setMetric(metric.getKey())
.setOp(condition.getOperator());
ofNullable(condition.getErrorThreshold()).ifPresent(builder::setError);

+ 1
- 2
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java View File

@@ -90,8 +90,7 @@ public class UpdateConditionAction implements QualityGatesWsAction {
wsSupport.checkCanEdit(qualityGateDto);
QualityGateConditionDto updatedCondition = qualityGateConditionsUpdater.updateCondition(dbSession, condition, metric, operator, error);
UpdateConditionResponse.Builder updateConditionResponse = UpdateConditionResponse.newBuilder()
// TODO
// .setId(updatedCondition.getUuid())
.setId(updatedCondition.getUuid())
.setMetric(updatedCondition.getMetricKey())
.setError(updatedCondition.getErrorThreshold())
.setOp(updatedCondition.getOperator());

+ 4
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/WebIssueStorageTest.java View File

@@ -32,6 +32,7 @@ import org.sonar.api.impl.utils.TestSystem2;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.DefaultIssueComment;
import org.sonar.core.issue.IssueChangeContext;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -62,7 +63,8 @@ public class WebIssueStorageTest {
private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);

private IssueIndexer issueIndexer = mock(IssueIndexer.class);
private WebIssueStorage underTest = new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(db.getDbClient(), defaultOrganizationProvider), issueIndexer);
private WebIssueStorage underTest = new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(db.getDbClient(), defaultOrganizationProvider), issueIndexer,
new SequenceUuidFactory());

@Test
public void load_component_id_from_db() {
@@ -212,7 +214,7 @@ public class WebIssueStorageTest {
.containsEntry("STATUS", updated.status())
.containsEntry("SEVERITY", updated.severity());

List<Map<String, Object>> rows = db.select("select * from issue_changes order by id");
List<Map<String, Object>> rows = db.select("select * from issue_changes order by uuid");
assertThat(rows).hasSize(2);
assertThat(rows.get(0))
.extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")

+ 7
- 4
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/AddCommentActionTest.java View File

@@ -29,6 +29,7 @@ import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -94,9 +95,11 @@ public class AddCommentActionTest {
private IssueDbTester issueDbTester = new IssueDbTester(dbTester);

private IssueIndexer issueIndexer = new IssueIndexer(es.client(), dbClient, new IssueIteratorFactory(dbClient));
private WebIssueStorage serverIssueStorage = new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer);
private WebIssueStorage serverIssueStorage = new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer,
new SequenceUuidFactory());
private TestIssueChangePostProcessor issueChangePostProcessor = new TestIssueChangePostProcessor();
private IssueUpdater issueUpdater = new IssueUpdater(dbClient, serverIssueStorage, mock(NotificationManager.class), issueChangePostProcessor, new IssuesChangesNotificationSerializer());
private IssueUpdater issueUpdater = new IssueUpdater(dbClient, serverIssueStorage, mock(NotificationManager.class), issueChangePostProcessor,
new IssuesChangesNotificationSerializer());
private OperationResponseWriter responseWriter = mock(OperationResponseWriter.class);
private ArgumentCaptor<SearchResponseData> preloadedSearchResponseDataCaptor = ArgumentCaptor.forClass(SearchResponseData.class);

@@ -225,8 +228,8 @@ public class AddCommentActionTest {
UserDto user = dbTester.users().insertUser("john");
userSession.logIn(user)
.addProjectPermission(permission,
dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(),
dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get());
dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getProjectUuid()).get(),
dbClient.componentDao().selectByUuid(dbTester.getSession(), issueDto.getComponentUuid()).get());
}

}

+ 2
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/AssignActionTest.java View File

@@ -26,6 +26,7 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.impl.utils.TestSystem2;
import org.sonar.api.rules.RuleType;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
@@ -58,7 +59,6 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.sonar.api.rules.RuleType.CODE_SMELL;
import static org.sonar.api.rules.RuleType.SECURITY_HOTSPOT;
import static org.sonar.api.web.UserRole.CODEVIEWER;
import static org.sonar.api.web.UserRole.USER;
import static org.sonar.server.tester.UserSessionRule.standalone;
@@ -93,7 +93,7 @@ public class AssignActionTest {
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();
private AssignAction underTest = new AssignAction(system2, userSession, dbClient, new IssueFinder(dbClient, userSession), new IssueFieldsSetter(),
new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer),
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()),
notificationManager, issueChangePostProcessor, issuesChangesSerializer),
responseWriter);
private WsActionTester ws = new WsActionTester(underTest);

+ 2
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/BulkChangeActionTest.java View File

@@ -34,6 +34,7 @@ import org.sonar.api.impl.utils.TestSystem2;
import org.sonar.api.rules.RuleType;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.BranchType;
@@ -119,7 +120,7 @@ public class BulkChangeActionTest {
private IssueWorkflow issueWorkflow = new IssueWorkflow(new FunctionExecutor(issueFieldsSetter), issueFieldsSetter);
private WebIssueStorage issueStorage = new WebIssueStorage(system2, dbClient,
new DefaultRuleFinder(dbClient, TestDefaultOrganizationProvider.from(db)),
new IssueIndexer(es.client(), dbClient, new IssueIteratorFactory(dbClient)));
new IssueIndexer(es.client(), dbClient, new IssueIteratorFactory(dbClient)), new SequenceUuidFactory());
private NotificationManager notificationManager = mock(NotificationManager.class);
private TestIssueChangePostProcessor issueChangePostProcessor = new TestIssueChangePostProcessor();
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();

+ 3
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/DoTransitionActionTest.java View File

@@ -30,6 +30,7 @@ import org.sonar.api.rules.RuleType;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
import org.sonar.api.utils.System2;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -101,8 +102,8 @@ public class DoTransitionActionTest {
private TestIssueChangePostProcessor issueChangePostProcessor = new TestIssueChangePostProcessor();
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();
private IssueUpdater issueUpdater = new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer), mock(NotificationManager.class),
issueChangePostProcessor, issuesChangesSerializer);
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()),
mock(NotificationManager.class), issueChangePostProcessor, issuesChangesSerializer);
private ArgumentCaptor<SearchResponseData> preloadedSearchResponseDataCaptor = ArgumentCaptor.forClass(SearchResponseData.class);

private WsAction underTest = new DoTransitionAction(dbClient, userSession, new IssueFinder(dbClient, userSession), issueUpdater, transitionService, responseWriter, system2);

+ 3
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/IssueUpdaterTest.java View File

@@ -28,6 +28,7 @@ import org.sonar.api.rule.RuleStatus;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.IssueChangeContext;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.BranchType;
@@ -89,8 +90,8 @@ public class IssueUpdaterTest {
private TestIssueChangePostProcessor issueChangePostProcessor = new TestIssueChangePostProcessor();
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();
private IssueUpdater underTest = new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer), notificationManager, issueChangePostProcessor,
issuesChangesSerializer);
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()), notificationManager,
issueChangePostProcessor, issuesChangesSerializer);

@Test
public void update_issue() {

+ 14
- 4
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SearchActionTest.java View File

@@ -41,6 +41,7 @@ import org.sonar.api.rules.RuleType;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.Durations;
import org.sonar.api.utils.System2;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
@@ -283,14 +284,18 @@ public class SearchActionTest {
RuleDefinitionDto rule = newIssueRule().getDefinition();
IssueDto issue = db.issues().insertIssue(rule, project, file, i -> i.setKee("82fd47d4-b650-4037-80bc-7b112bd4eac2"));
dbClient.issueChangeDao().insert(session,
new IssueChangeDto().setIssueKey(issue.getKey())
new IssueChangeDto()
.setUuid(Uuids.createFast())
.setIssueKey(issue.getKey())
.setKey("COMMENT-ABCD")
.setChangeData("*My comment*")
.setChangeType(IssueChangeDto.TYPE_COMMENT)
.setUserUuid(john.getUuid())
.setIssueChangeCreationDate(parseDateTime("2014-09-09T12:00:00+0000").getTime()));
dbClient.issueChangeDao().insert(session,
new IssueChangeDto().setIssueKey(issue.getKey())
new IssueChangeDto()
.setUuid(Uuids.createFast())
.setIssueKey(issue.getKey())
.setKey("COMMENT-ABCE")
.setChangeData("Another comment")
.setChangeType(IssueChangeDto.TYPE_COMMENT)
@@ -316,14 +321,18 @@ public class SearchActionTest {
RuleDefinitionDto rule = newIssueRule().getDefinition();
IssueDto issue = db.issues().insertIssue(rule, project, file, i -> i.setKee("82fd47d4-b650-4037-80bc-7b112bd4eac2"));
dbClient.issueChangeDao().insert(session,
new IssueChangeDto().setIssueKey(issue.getKey())
new IssueChangeDto()
.setUuid(Uuids.createFast())
.setIssueKey(issue.getKey())
.setKey("COMMENT-ABCD")
.setChangeData("*My comment*")
.setChangeType(IssueChangeDto.TYPE_COMMENT)
.setUserUuid(john.getUuid())
.setCreatedAt(parseDateTime("2014-09-09T12:00:00+0000").getTime()));
dbClient.issueChangeDao().insert(session,
new IssueChangeDto().setIssueKey(issue.getKey())
new IssueChangeDto()
.setUuid(Uuids.createFast())
.setIssueKey(issue.getKey())
.setKey("COMMENT-ABCE")
.setChangeData("Another comment")
.setChangeType(IssueChangeDto.TYPE_COMMENT)
@@ -1146,6 +1155,7 @@ public class SearchActionTest {
private void grantPermissionToAnyone(ComponentDto project, String permission) {
dbClient.groupPermissionDao().insert(session,
new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(project.getOrganizationUuid())
.setGroupId(null)
.setComponentUuid(project.uuid())

+ 3
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetSeverityActionTest.java View File

@@ -30,6 +30,7 @@ import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -93,8 +94,8 @@ public class SetSeverityActionTest {
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();
private WsActionTester tester = new WsActionTester(new SetSeverityAction(userSession, dbClient, new IssueFinder(dbClient, userSession), new IssueFieldsSetter(),
new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer), mock(NotificationManager.class), issueChangePostProcessor,
issuesChangesSerializer),
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()),
mock(NotificationManager.class), issueChangePostProcessor, issuesChangesSerializer),
responseWriter));

@Test

+ 3
- 3
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetTagsActionTest.java View File

@@ -34,6 +34,7 @@ import org.sonar.api.server.ws.WebService.Action;
import org.sonar.api.server.ws.WebService.Param;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -94,9 +95,8 @@ public class SetTagsActionTest {

private WsActionTester ws = new WsActionTester(new SetTagsAction(userSession, dbClient, new IssueFinder(dbClient, userSession), new IssueFieldsSetter(),
new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer), mock(NotificationManager.class),
issueChangePostProcessor, issuesChangesSerializer),
responseWriter));
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()),
mock(NotificationManager.class), issueChangePostProcessor, issuesChangesSerializer), responseWriter));

@Test
public void set_tags() {

+ 3
- 3
server/sonar-webserver-webapi/src/test/java/org/sonar/server/issue/ws/SetTypeActionTest.java View File

@@ -39,6 +39,7 @@ import org.sonar.api.server.ws.Response;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.core.issue.FieldDiffs;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -106,9 +107,8 @@ public class SetTypeActionTest {
private IssuesChangesNotificationSerializer issuesChangesSerializer = new IssuesChangesNotificationSerializer();
private WsActionTester tester = new WsActionTester(new SetTypeAction(userSession, dbClient, new IssueFinder(dbClient, userSession), new IssueFieldsSetter(),
new IssueUpdater(dbClient,
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer), mock(NotificationManager.class),
issueChangePostProcessor, issuesChangesSerializer),
responseWriter, system2));
new WebIssueStorage(system2, dbClient, new DefaultRuleFinder(dbClient, defaultOrganizationProvider), issueIndexer, new SequenceUuidFactory()),
mock(NotificationManager.class), issueChangePostProcessor, issuesChangesSerializer), responseWriter, system2));

@Test
@UseDataProvider("allTypesFromToExceptHotspots")

+ 4
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/GroupPermissionChangerTest.java View File

@@ -29,6 +29,8 @@ import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.utils.System2;
import org.sonar.api.web.UserRole;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.core.util.Uuids;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ResourceTypesRule;
@@ -54,7 +56,7 @@ public class GroupPermissionChangerTest {

private ResourceTypes resourceTypes = new ResourceTypesRule().setRootQualifiers(Qualifiers.PROJECT);
private PermissionService permissionService = new PermissionServiceImpl(resourceTypes);
private GroupPermissionChanger underTest = new GroupPermissionChanger(db.getDbClient());
private GroupPermissionChanger underTest = new GroupPermissionChanger(db.getDbClient(), new SequenceUuidFactory());
private OrganizationDto org;
private GroupDto group;
private ComponentDto privateProject;
@@ -430,6 +432,7 @@ public class GroupPermissionChangerTest {

private void unsafeInsertProjectPermissionOnAnyone(String perm) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(privateProject.getOrganizationUuid())
.setGroupId(null)
.setRole(perm)

+ 3
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java View File

@@ -28,6 +28,7 @@ import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
@@ -64,7 +65,8 @@ public class PermissionTemplateServiceTest {
private DbSession session = dbTester.getSession();
private ProjectIndexers projectIndexers = new TestProjectIndexers();

private PermissionTemplateService underTest = new PermissionTemplateService(dbTester.getDbClient(), projectIndexers, userSession, defaultTemplatesResolver);
private PermissionTemplateService underTest = new PermissionTemplateService(dbTester.getDbClient(), projectIndexers, userSession, defaultTemplatesResolver,
new SequenceUuidFactory());

@Test
public void apply_does_not_insert_permission_to_group_AnyOne_when_applying_template_on_private_project() {

+ 2
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/UserPermissionChangerTest.java View File

@@ -27,6 +27,7 @@ import org.junit.rules.ExpectedException;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.utils.System2;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ResourceTypesRule;
@@ -59,7 +60,7 @@ public class UserPermissionChangerTest {

private ResourceTypes resourceTypes = new ResourceTypesRule().setRootQualifiers(Qualifiers.PROJECT);
private PermissionService permissionService = new PermissionServiceImpl(resourceTypes);
private UserPermissionChanger underTest = new UserPermissionChanger(db.getDbClient());
private UserPermissionChanger underTest = new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory());
private OrganizationDto org1;
private OrganizationDto org2;
private UserDto user1;

+ 3
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/BasePermissionWsTest.java View File

@@ -24,6 +24,7 @@ import org.junit.Rule;
import org.junit.rules.ExpectedException;
import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
import org.sonar.api.resources.Qualifiers;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ResourceTypesRule;
@@ -85,8 +86,8 @@ public abstract class BasePermissionWsTest<A extends PermissionsWsAction> {
protected PermissionUpdater newPermissionUpdater() {
return new PermissionUpdater(
new ProjectIndexersImpl(new PermissionIndexer(db.getDbClient(), es.client())),
new UserPermissionChanger(db.getDbClient()),
new GroupPermissionChanger(db.getDbClient()));
new UserPermissionChanger(db.getDbClient(), new SequenceUuidFactory()),
new GroupPermissionChanger(db.getDbClient(), new SequenceUuidFactory()));
}

protected TestRequest newRequest() {

+ 2
- 0
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java View File

@@ -24,6 +24,7 @@ import org.junit.Test;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.Uuids;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.component.ResourceTypesRule;
@@ -473,6 +474,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio

private void unsafeInsertProjectPermissionOnAnyone(String perm, ComponentDto project) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(project.getOrganizationUuid())
.setGroupId(null)
.setRole(perm)

+ 2
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java View File

@@ -25,6 +25,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.permission.PermissionQuery;
import org.sonar.db.permission.template.PermissionTemplateDto;
@@ -59,7 +60,7 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest<ApplyTemplateA
private PermissionTemplateDto template2;

private PermissionTemplateService permissionTemplateService = new PermissionTemplateService(db.getDbClient(),
new TestProjectIndexers(), userSession, defaultTemplatesResolver);
new TestProjectIndexers(), userSession, defaultTemplatesResolver, new SequenceUuidFactory());

@Override
protected ApplyTemplateAction buildWsAction() {

+ 2
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/BulkApplyTemplateActionTest.java View File

@@ -27,6 +27,7 @@ import org.junit.Test;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.server.ws.WebService.Param;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.organization.OrganizationDto;
@@ -74,7 +75,7 @@ public class BulkApplyTemplateActionTest extends BasePermissionWsTest<BulkApplyT
@Override
protected BulkApplyTemplateAction buildWsAction() {
PermissionTemplateService permissionTemplateService = new PermissionTemplateService(db.getDbClient(),
projectIndexers, userSession, defaultTemplatesResolver);
projectIndexers, userSession, defaultTemplatesResolver, new SequenceUuidFactory());
return new BulkApplyTemplateAction(db.getDbClient(), userSession, permissionTemplateService, newPermissionWsSupport(), new I18nRule(), newRootResourceTypes());
}


+ 5
- 2
server/sonar-webserver-webapi/src/test/java/org/sonar/server/project/ws/UpdateVisibilityActionTest.java View File

@@ -32,6 +32,7 @@ import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.server.ws.WebService;
import org.sonar.api.utils.System2;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.SequenceUuidFactory;
import org.sonar.core.util.Uuids;
import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.db.DbClient;
@@ -107,7 +108,8 @@ public class UpdateVisibilityActionTest {
private BillingValidationsProxy billingValidations = mock(BillingValidationsProxy.class);

private ProjectsWsSupport wsSupport = new ProjectsWsSupport(dbClient, TestDefaultOrganizationProvider.from(dbTester), billingValidations);
private UpdateVisibilityAction underTest = new UpdateVisibilityAction(dbClient, TestComponentFinder.from(dbTester), userSessionRule, projectIndexers, wsSupport);
private UpdateVisibilityAction underTest = new UpdateVisibilityAction(dbClient, TestComponentFinder.from(dbTester),
userSessionRule, projectIndexers, wsSupport, new SequenceUuidFactory());
private WsActionTester ws = new WsActionTester(underTest);

private final Random random = new Random();
@@ -593,7 +595,6 @@ public class UpdateVisibilityActionTest {
.containsOnly(UserRole.ADMIN);
}


@Test
public void fail_to_update_visibility_to_private_when_organization_is_not_allowed_to_use_private_projects() {
OrganizationDto organization = dbTester.organizations().insert();
@@ -656,6 +657,7 @@ public class UpdateVisibilityActionTest {

private void unsafeInsertProjectPermissionOnAnyone(ComponentDto component, String permission) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(component.getOrganizationUuid())
.setGroupId(null)
.setRole(permission)
@@ -666,6 +668,7 @@ public class UpdateVisibilityActionTest {

private void unsafeInsertProjectPermissionOnGroup(ComponentDto component, GroupDto group, String permission) {
GroupPermissionDto dto = new GroupPermissionDto()
.setUuid(Uuids.createFast())
.setOrganizationUuid(group.getOrganizationUuid())
.setGroupId(group.getId())
.setRole(permission)

+ 3
- 3
sonar-ws/src/main/protobuf/ws-qualitygates.proto View File

@@ -102,7 +102,7 @@ message CreateResponse {

// POST api/qualitygates/create_condition
message CreateConditionResponse {
optional int64 id = 1;
optional string id = 1;
optional string metric = 2;
optional string op = 3;
optional string error = 5;
@@ -110,7 +110,7 @@ message CreateConditionResponse {

// POST api/qualitygates/update_condition
message UpdateConditionResponse {
optional int64 id = 1;
optional string id = 1;
optional string metric = 2;
optional string op = 3;
optional string error = 5;
@@ -125,7 +125,7 @@ message ShowWsResponse {
optional Actions actions = 5;

message Condition {
optional int64 id = 1;
optional string id = 1;
optional string metric = 2;
optional string op = 4;
optional string error = 6;

Loading…
Cancel
Save