Skip to content

Commit df7e1ec

Browse files
committed
Added support for transfer project (#276).
1 parent 437b75a commit df7e1ec

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

example-test-gitlab4j.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ TEST_GROUP=
2020
TEST_GROUP_PROJECT=
2121
TEST_GROUP_MEMBER_USERNAME=
2222

23+
# OPTIONAL: Used to test transfer project
24+
TEST_XFER_NAMESPACE=
25+
2326
# OPTIONAL: To test oauth2Login, set these properties
2427
TEST_LOGIN_USERNAME=
2528
TEST_LOGIN_PASSWORD=

src/main/java/org/gitlab4j/api/ProjectApi.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,4 +2165,20 @@ public Map<String, Float> getProjectLanguages(Object projectIdOrPath) throws Git
21652165
Response response = get(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "languages");
21662166
return (response.readEntity(new GenericType<Map<String, Float>>() {}));
21672167
}
2168+
2169+
/**
2170+
* Transfer a project to a new namespace. This was added in GitLab 11.1
2171+
*
2172+
* PUT /projects/:id/transfer.
2173+
*
2174+
* @param projectIdOrPath projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance, required
2175+
* @param namespace the namespace to transfer the project to
2176+
* @return the updated Project
2177+
* @throws GitLabApiException if any exception occurs
2178+
*/
2179+
public Project transferProject(Object projectIdOrPath, String namespace) throws GitLabApiException {
2180+
GitLabApiForm formData = new GitLabApiForm().withParam("namespace", namespace, true);
2181+
Response response = put(Response.Status.OK, formData.asMap(), "projects", getProjectIdOrPath(projectIdOrPath), "transfer");
2182+
return (response.readEntity(Project.class));
2183+
}
21682184
}

src/test/java/org/gitlab4j/api/TestProjectApi.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class TestProjectApi {
7171
private static final String TEST_PRIVATE_TOKEN;
7272
private static final String TEST_GROUP;
7373
private static final String TEST_GROUP_PROJECT;
74+
private static final String TEST_XFER_NAMESPACE;
7475

7576
static {
7677
TEST_NAMESPACE = TestUtils.getProperty("TEST_NAMESPACE");
@@ -79,11 +80,13 @@ public class TestProjectApi {
7980
TEST_PRIVATE_TOKEN = TestUtils.getProperty("TEST_PRIVATE_TOKEN");
8081
TEST_GROUP = TestUtils.getProperty("TEST_GROUP");
8182
TEST_GROUP_PROJECT = TestUtils.getProperty("TEST_GROUP_PROJECT");
83+
TEST_XFER_NAMESPACE = TestUtils.getProperty("TEST_XFER_NAMESPACE");
8284
}
8385

8486
private static final String TEST_PROJECT_NAME_1 = "test-gitlab4j-create-project";
8587
private static final String TEST_PROJECT_NAME_2 = "test-gitlab4j-create-project-2";
8688
private static final String TEST_PROJECT_NAME_UPDATE = "test-gitlab4j-create-project-update";
89+
private static final String TEST_XFER_PROJECT_NAME = "test-gitlab4j-xfer-project";
8790
private static GitLabApi gitLabApi;
8891

8992
public TestProjectApi() {
@@ -153,6 +156,14 @@ private static void deleteAllTestProjects() {
153156
} catch (GitLabApiException ignore) {
154157
}
155158
}
159+
160+
if (TEST_XFER_NAMESPACE != null) {
161+
try {
162+
Project project = gitLabApi.getProjectApi().getProject(TEST_XFER_NAMESPACE, TEST_XFER_PROJECT_NAME);
163+
gitLabApi.getProjectApi().deleteProject(project);
164+
} catch (GitLabApiException ignore) {
165+
}
166+
}
156167
}
157168
}
158169

@@ -556,4 +567,21 @@ public void testStarAndUnstarProject() throws GitLabApiException {
556567
assertNotNull(unstarredProject);
557568
assertEquals(0, (int)unstarredProject.getStarCount());
558569
}
570+
571+
@Test
572+
public void testTransferProject() throws GitLabApiException {
573+
574+
assumeTrue(TEST_XFER_NAMESPACE != null && TEST_XFER_NAMESPACE.trim().length() > 0);
575+
576+
Project project = new Project()
577+
.withName(TEST_XFER_PROJECT_NAME)
578+
.withDescription("GitLab4J test project - transfer.")
579+
.withVisibility(Visibility.PUBLIC);
580+
581+
Project newProject = gitLabApi.getProjectApi().createProject(project);
582+
assertNotNull(newProject);
583+
584+
Project transferedProject = gitLabApi.getProjectApi().transferProject(newProject, TEST_XFER_NAMESPACE);
585+
assertNotNull(transferedProject);
586+
}
559587
}

0 commit comments

Comments
 (0)