Browse Source

SONAR-21643 Migrate test case UT in Junit5

tags/10.5.0.89998
Léo Geoffroy 2 months ago
parent
commit
607fc18c8d

+ 3
- 0
build.gradle View File

@@ -415,6 +415,9 @@ subprojects {
dependency('org.mockito:mockito-core:5.10.0') {
exclude 'org.hamcrest:hamcrest-core'
}
dependency('org.mockito:mockito-junit-jupiter:5.10.0') {
exclude 'org.junit.jupiter:junit-jupiter-api'
}
dependency "org.springframework:spring-test:${springVersion}"
dependency 'org.mybatis:mybatis:3.5.15'
dependencySet(group: 'org.slf4j', version: '2.0.11') {

+ 10
- 0
server/sonar-webserver-webapi/build.gradle View File

@@ -38,7 +38,9 @@ dependencies {
testImplementation 'com.tngtech.java:junit-dataprovider'
testImplementation 'com.squareup.okhttp3:mockwebserver'
testImplementation 'javax.servlet:javax.servlet-api'
testImplementation 'org.junit.jupiter:junit-jupiter-api'
testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'
testImplementation 'org.sonarsource.api.plugin:sonar-plugin-api-test-fixtures'
testImplementation 'org.springframework:spring-test'
testImplementation testFixtures(project(':server:sonar-server-common'))
@@ -48,4 +50,12 @@ dependencies {
testImplementation testFixtures(project(':server:sonar-webserver-ws'))
testImplementation project(':sonar-testing-harness')
testFixturesApi testFixtures(project(':server:sonar-db-dao'))

testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'

test {
// Enabling the JUnit Platform (see https://github.com/junit-team/junit5-samples/tree/master/junit5-migration-gradle)
useJUnitPlatform()
}
}

+ 31
- 35
server/sonar-webserver-webapi/src/test/java/org/sonar/server/almsettings/ws/GithubProjectCreatorTest.java View File

@@ -23,14 +23,14 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.sonar.alm.client.github.GithubPermissionConverter;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.web.UserRole;
@@ -72,14 +72,15 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.sonar.db.project.CreationMethod.ALM_IMPORT_API;
import static org.sonar.db.project.CreationMethod.SCANNER_API_DEVOPS_AUTO_CONFIG;

@RunWith(MockitoJUnitRunner.class)
public class GithubProjectCreatorTest {
@ExtendWith(MockitoExtension.class)
class GithubProjectCreatorTest {

private static final String ORGANIZATION_NAME = "orga2";
private static final String REPOSITORY_NAME = "repo1";
@@ -89,7 +90,6 @@ public class GithubProjectCreatorTest {
private static final String ALM_SETTING_KEY = "github_config_1";
private static final String USER_LOGIN = "userLogin";
private static final String USER_UUID = "userUuid";
private static final String BRANCH_UUID = "branchUuid1";

@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private DbClient dbClient;
@@ -118,8 +118,7 @@ public class GithubProjectCreatorTest {
private ManagedProjectService managedProjectService;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ProjectDefaultVisibility projectDefaultVisibility;
private GitHubSettings gitHubSettings = mock();
private ProjectCreator projectCreator;
private final GitHubSettings gitHubSettings = mock();

private GithubProjectCreator githubProjectCreator;

@@ -128,13 +127,13 @@ public class GithubProjectCreatorTest {
@Captor
ArgumentCaptor<ProjectAlmSettingDto> projectAlmSettingDtoCaptor;

@Before
public void setup() {
when(userSession.getLogin()).thenReturn(USER_LOGIN);
when(userSession.getUuid()).thenReturn(USER_UUID);
@BeforeEach
void setup() {
lenient().when(userSession.getLogin()).thenReturn(USER_LOGIN);
lenient().when(userSession.getUuid()).thenReturn(USER_UUID);

when(almSettingDto.getUrl()).thenReturn(DEVOPS_PROJECT_DESCRIPTOR.url());
when(almSettingDto.getKey()).thenReturn(ALM_SETTING_KEY);
lenient().when(almSettingDto.getUrl()).thenReturn(DEVOPS_PROJECT_DESCRIPTOR.url());
lenient().when(almSettingDto.getKey()).thenReturn(ALM_SETTING_KEY);

when(githubProjectCreationParameters.devOpsProjectDescriptor()).thenReturn(DEVOPS_PROJECT_DESCRIPTOR);
when(githubProjectCreationParameters.userSession()).thenReturn(userSession);
@@ -142,14 +141,14 @@ public class GithubProjectCreatorTest {
when(githubProjectCreationParameters.authAppInstallationToken()).thenReturn(authAppInstallationToken);
when(githubProjectCreationParameters.almSettingDto()).thenReturn(almSettingDto);

projectCreator = new ProjectCreator(userSession, projectDefaultVisibility, componentUpdater);
ProjectCreator projectCreator = new ProjectCreator(userSession, projectDefaultVisibility, componentUpdater);
githubProjectCreator = new GithubProjectCreator(dbClient, githubApplicationClient, githubPermissionConverter, projectKeyGenerator,
permissionUpdater, permissionService, managedProjectService, projectCreator, githubProjectCreationParameters,gitHubSettings);

}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenNoAuthToken_throws() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenNoAuthToken_throws() {
when(githubProjectCreationParameters.authAppInstallationToken()).thenReturn(null);

assertThatIllegalStateException().isThrownBy(() -> githubProjectCreator.isScanAllowedUsingPermissionsFromDevopsPlatform())
@@ -157,12 +156,12 @@ public class GithubProjectCreatorTest {
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenUserIsNotAGitHubUser_returnsFalse() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenUserIsNotAGitHubUser_returnsFalse() {
assertThat(githubProjectCreator.isScanAllowedUsingPermissionsFromDevopsPlatform()).isFalse();
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenCollaboratorHasDirectAccessButNoScanPermissions_returnsFalse() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenCollaboratorHasDirectAccessButNoScanPermissions_returnsFalse() {
GsonRepositoryCollaborator collaborator1 = mockCollaborator("collaborator1", 1, "role1", "read", "admin");
mockGithubCollaboratorsFromApi(collaborator1);
bindSessionToCollaborator(collaborator1);
@@ -171,7 +170,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenCollaboratorHasDirectAccess_returnsTrue() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenCollaboratorHasDirectAccess_returnsTrue() {
GsonRepositoryCollaborator collaborator1 = mockCollaborator("collaborator1", 1, "role1", "read", "admin");
GsonRepositoryCollaborator collaborator2 = mockCollaborator("collaborator2", 2, "role2", "read", "scan");
mockGithubCollaboratorsFromApi(collaborator1, collaborator2);
@@ -181,7 +180,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeamButNoScanPermissions_returnsFalse() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeamButNoScanPermissions_returnsFalse() {
GsonRepositoryTeam team2 = mockGithubTeam("team2", 2, "role2", "another_perm", UserRole.ADMIN);
mockTeamsFromApi(team2);
bindGroupsToUser(team2.name());
@@ -190,7 +189,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeam_returnsTrue() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeam_returnsTrue() {
GsonRepositoryTeam team1 = mockGithubTeam("team1", 1, "role1", "read", "another_perm");
GsonRepositoryTeam team2 = mockGithubTeam("team2", 2, "role2", "another_perm", UserRole.SCAN);
mockTeamsFromApi(team1, team2);
@@ -200,7 +199,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeamButUserNotInTeam_returnsFalse() {
void isScanAllowedUsingPermissionsFromDevopsPlatform_whenAccessViaTeamButUserNotInTeam_returnsFalse() {
GsonRepositoryTeam team1 = mockGithubTeam("team1", 1, "role1", "read", "another_perm");
GsonRepositoryTeam team2 = mockGithubTeam("team2", 2, "role2", "another_perm", UserRole.SCAN);
mockTeamsFromApi(team1, team2);
@@ -240,13 +239,13 @@ public class GithubProjectCreatorTest {

private void mockPermissionsConversion(GsonRepositoryCollaborator collaborator, String... sqPermissions) {
Set<GithubPermissionsMappingDto> githubPermissionsMappingDtos = mockPermissionsMappingsDtos();
when(githubPermissionConverter.toSonarqubeRolesWithFallbackOnRepositoryPermissions(githubPermissionsMappingDtos, collaborator.roleName(), collaborator.permissions()))
lenient().when(githubPermissionConverter.toSonarqubeRolesWithFallbackOnRepositoryPermissions(githubPermissionsMappingDtos, collaborator.roleName(), collaborator.permissions()))
.thenReturn(Arrays.stream(sqPermissions).collect(toSet()));
}

private void mockPermissionsConversion(GsonRepositoryTeam team, String... sqPermissions) {
Set<GithubPermissionsMappingDto> githubPermissionsMappingDtos = mockPermissionsMappingsDtos();
when(githubPermissionConverter.toSonarqubeRolesWithFallbackOnRepositoryPermissions(githubPermissionsMappingDtos, team.permission(), team.permissions()))
lenient().when(githubPermissionConverter.toSonarqubeRolesWithFallbackOnRepositoryPermissions(githubPermissionsMappingDtos, team.permission(), team.permissions()))
.thenReturn(Arrays.stream(sqPermissions).collect(toSet()));
}

@@ -264,14 +263,14 @@ public class GithubProjectCreatorTest {
}

@Test
public void createProjectAndBindToDevOpsPlatform_whenRepoNotFound_throws() {
void createProjectAndBindToDevOpsPlatform_whenRepoNotFound_throws() {
assertThatIllegalStateException().isThrownBy(
() -> githubProjectCreator.createProjectAndBindToDevOpsPlatform(mock(), SCANNER_API_DEVOPS_AUTO_CONFIG, null))
.withMessage("Impossible to find the repository 'orga2/repo1' on GitHub, using the devops config " + ALM_SETTING_KEY);
}

@Test
public void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHub_successfullyCreatesProject() {
void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHub_successfullyCreatesProject() {
// given
mockGitHubRepository();

@@ -298,7 +297,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHubAndVisibilitySynchronizationEnabled_successfullyCreatesProjectAndSetsVisibility() {
void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHubAndVisibilitySynchronizationEnabled_successfullyCreatesProjectAndSetsVisibility() {
// given
mockPublicGithubRepository();

@@ -320,7 +319,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHubAndVisibilitySynchronizationDisabled_successfullyCreatesProjectAndMakesProjectPrivate() {
void createProjectAndBindToDevOpsPlatformFromScanner_whenRepoFoundOnGitHubAndVisibilitySynchronizationDisabled_successfullyCreatesProjectAndMakesProjectPrivate() {
// given
mockGitHubRepository();

@@ -342,7 +341,7 @@ public class GithubProjectCreatorTest {
}

@Test
public void createProjectAndBindToDevOpsPlatformFromApi_whenRepoFoundOnGitHub_successfullyCreatesProject() {
void createProjectAndBindToDevOpsPlatformFromApi_whenRepoFoundOnGitHub_successfullyCreatesProject() {
// given
String projectKey = "customProjectKey";
mockGitHubRepository();
@@ -372,10 +371,8 @@ public class GithubProjectCreatorTest {
private ArgumentCaptor<Collection<UserPermissionChange>> permissionChangesCaptor;

@Test
public void createProjectAndBindToDevOpsPlatformFromApi_whenRepoFoundOnGitHubAutoProvisioningOnAndRepoPrivate_successfullyCreatesProject() {
void createProjectAndBindToDevOpsPlatformFromApi_whenRepoFoundOnGitHubAutoProvisioningOnAndRepoPrivate_successfullyCreatesProject() {
// given
when(projectDefaultVisibility.get(any()).isPrivate()).thenReturn(true);

String projectKey = "customProjectKey";
mockGitHubRepository();

@@ -428,7 +425,7 @@ public class GithubProjectCreatorTest {
when(repository.getDefaultBranch()).thenReturn(MAIN_BRANCH_NAME);
when(repository.getName()).thenReturn(REPOSITORY_NAME);
when(repository.getFullName()).thenReturn(DEVOPS_PROJECT_DESCRIPTOR.projectIdentifier());
when(repository.isPrivate()).thenReturn(true);
lenient().when(repository.isPrivate()).thenReturn(true);
when(githubApplicationClient.getRepository(DEVOPS_PROJECT_DESCRIPTOR.url(), devOpsAppInstallationToken, DEVOPS_PROJECT_DESCRIPTOR.projectIdentifier())).thenReturn(
Optional.of(repository));
when(projectKeyGenerator.generateUniqueProjectKey(repository.getFullName())).thenReturn("generated_" + DEVOPS_PROJECT_DESCRIPTOR.projectIdentifier());
@@ -440,7 +437,6 @@ public class GithubProjectCreatorTest {
ProjectDto projectDto = mockProjectDto(projectKey);
when(componentCreationData.projectDto()).thenReturn(projectDto);
BranchDto branchDto = mock();
when(branchDto.getUuid()).thenReturn(BRANCH_UUID);
when(componentCreationData.mainBranchDto()).thenReturn(branchDto);
when(componentUpdater.createWithoutCommit(any(), componentCreationParametersCaptor.capture())).thenReturn(componentCreationData);
return componentCreationData;

Loading…
Cancel
Save