aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-alm-client/src/test/java
diff options
context:
space:
mode:
authorJulien Camus <julien.camus@sonarsource.com>2024-12-10 16:00:22 +0100
committerSteve Marion <steve.marion@sonarsource.com>2024-12-18 11:13:21 +0100
commit48d5ec5040eccf6e7638170135426f247807a585 (patch)
treebee1e1787e6f33e43e3f7bdbdd584bf000b47b61 /server/sonar-alm-client/src/test/java
parentd639a965bce7acafb004906cd07a8f0b5f7af993 (diff)
downloadsonarqube-48d5ec5040eccf6e7638170135426f247807a585.tar.gz
sonarqube-48d5ec5040eccf6e7638170135426f247807a585.zip
SONAR-23845 Add pagination to SearchBitbucketServerReposAction
Diffstat (limited to 'server/sonar-alm-client/src/test/java')
-rw-r--r--server/sonar-alm-client/src/test/java/org/sonar/alm/client/bitbucketserver/BitbucketServerRestClientTest.java57
1 files changed, 56 insertions, 1 deletions
diff --git a/server/sonar-alm-client/src/test/java/org/sonar/alm/client/bitbucketserver/BitbucketServerRestClientTest.java b/server/sonar-alm-client/src/test/java/org/sonar/alm/client/bitbucketserver/BitbucketServerRestClientTest.java
index dc719609ab1..52176ae199b 100644
--- a/server/sonar-alm-client/src/test/java/org/sonar/alm/client/bitbucketserver/BitbucketServerRestClientTest.java
+++ b/server/sonar-alm-client/src/test/java/org/sonar/alm/client/bitbucketserver/BitbucketServerRestClientTest.java
@@ -123,7 +123,7 @@ public class BitbucketServerRestClientTest {
}
"""));
- RepositoryList gsonBBSRepoList = underTest.getRepos(server.url("/").toString(), "token", "", "");
+ RepositoryList gsonBBSRepoList = underTest.getRepos(server.url("/").toString(), "token", "", "", null, 25);
assertThat(gsonBBSRepoList.isLastPage()).isTrue();
assertThat(gsonBBSRepoList.getValues()).hasSize(2);
assertThat(gsonBBSRepoList.getValues()).extracting(Repository::getId, Repository::getName, Repository::getSlug,
@@ -702,6 +702,61 @@ public class BitbucketServerRestClientTest {
@Test
@UseDataProvider("validStartAndPageSizeProvider")
+ public void get_repositories_with_pagination(int start, int pageSize, boolean isLastPage, int totalRepos) {
+ String body = generateRepositoriesResponse(totalRepos, start, pageSize, isLastPage);
+ server.enqueue(new MockResponse()
+ .setHeader("Content-Type", "application/json;charset=UTF-8")
+ .setBody(body));
+
+ RepositoryList gsonBBSRepoList = underTest.getRepos(server.url("/").toString(), "token", null, null, start, pageSize);
+
+ int expectedSize = Math.min(pageSize, totalRepos - start + 1);
+ assertThat(gsonBBSRepoList.getValues()).hasSize(expectedSize);
+
+ // Verify that the correct items are returned
+ IntStream.rangeClosed(start, start + expectedSize - 1).forEach(i -> {
+ assertThat(gsonBBSRepoList.getValues())
+ .extracting(Repository::getId, Repository::getName, Repository::getSlug)
+ .contains(tuple((long) i, "Repository_" + i, "repo_" + i));
+ });
+
+ assertThat(gsonBBSRepoList.isLastPage()).isEqualTo(isLastPage);
+ assertThat(gsonBBSRepoList.getNextPageStart()).isEqualTo(isLastPage ? start : start + expectedSize);
+ }
+
+ private String generateRepositoriesResponse(int totalRepos, int start, int pageSize, boolean isLastPage) {
+ int end = Math.min(totalRepos, start + pageSize - 1);
+
+ StringBuilder values = new StringBuilder();
+ for (int i = start; i <= end; i++) {
+ values.append("""
+ {
+ "slug": "repo_%d",
+ "id": %d,
+ "name": "Repository_%d",
+ "project": {
+ "key": "KEY_%d",
+ "id": %d,
+ "name": "Project_%d"
+ }
+ }
+ """.formatted(i, i, i, i, i, i));
+ if (i < end) {
+ values.append(",");
+ }
+ }
+
+ return """
+ {
+ "isLastPage": %s,
+ "nextPageStart": %s,
+ "values": [%s]
+ }
+ """.formatted(isLastPage, isLastPage ? start : end + 1, values.toString());
+ }
+
+ @Test
+ @UseDataProvider("validStartAndPageSizeProvider")
public void get_projects_with_pagination(int start, int pageSize, boolean isLastPage, int totalProjects) {
String body = generateProjectsResponse(totalProjects, start, pageSize, isLastPage);
server.enqueue(new MockResponse()