diff options
author | Julien Camus <julien.camus@sonarsource.com> | 2024-12-10 16:00:22 +0100 |
---|---|---|
committer | Steve Marion <steve.marion@sonarsource.com> | 2024-12-18 11:13:21 +0100 |
commit | 48d5ec5040eccf6e7638170135426f247807a585 (patch) | |
tree | bee1e1787e6f33e43e3f7bdbdd584bf000b47b61 /server/sonar-alm-client/src/test/java | |
parent | d639a965bce7acafb004906cd07a8f0b5f7af993 (diff) | |
download | sonarqube-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.java | 57 |
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() |