From b9b63bafe243004d1d4a2752c4979fe68a174ca6 Mon Sep 17 00:00:00 2001 From: Morgan Seznec Date: Mon, 23 Oct 2017 16:53:29 +0200 Subject: [PATCH 1/4] Fix skip_confirmation --- src/main/java/org/gitlab/api/GitlabAPI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index 8e982757..89e24dbc 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -189,7 +189,7 @@ public GitlabUser createUser(String email, String password, String username, Query query = new Query() .append("email", email) - .appendIf("confirm", skip_confirmation == null ? null : !skip_confirmation) + .appendIf("skip_confirmation", skip_confirmation) .appendIf("password", password) .appendIf("username", username) .appendIf("name", fullName) From 7822f43dea26a7e8c5da57c5388754ece70e13e4 Mon Sep 17 00:00:00 2001 From: Morgan Seznec Date: Fri, 15 Dec 2017 12:37:33 +0100 Subject: [PATCH 2/4] Fixed create user test Changed skip_confirmation value to true --- src/test/java/org/gitlab/api/GitlabAPIIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gitlab/api/GitlabAPIIT.java b/src/test/java/org/gitlab/api/GitlabAPIIT.java index 5c25dc7a..fafeb7c2 100644 --- a/src/test/java/org/gitlab/api/GitlabAPIIT.java +++ b/src/test/java/org/gitlab/api/GitlabAPIIT.java @@ -127,7 +127,7 @@ public void testCreateUpdateDeleteUser() throws IOException, InterruptedExceptio randVal("bio"), false, false, - false); + true); assertNotNull(gitUser); GitlabUser refetched = api.getUserViaSudo(gitUser.getUsername()); From 169a4ead6e5812db7c9aa371ef3be748b24605df Mon Sep 17 00:00:00 2001 From: Morgan Seznec Date: Mon, 19 Feb 2018 12:02:11 +0100 Subject: [PATCH 3/4] Add external property to GitlabUser model Add the possibility to set/get external property on GitlabUser. --- src/main/java/org/gitlab/api/GitlabAPI.java | 12 ++++++++---- src/main/java/org/gitlab/api/models/GitlabUser.java | 11 +++++++++++ src/test/java/org/gitlab/api/GitlabAPIIT.java | 10 ++++------ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index 89e24dbc..e4fbbb85 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -176,6 +176,7 @@ public GitlabUser getUserViaSudo(String username) throws IOException { * @param isAdmin Is Admin * @param can_create_group Can Create Group * @param skip_confirmation Skip Confirmation + * @param external External * @return A GitlabUser * @throws IOException on gitlab api call error * @see http://doc.gitlab.com/ce/api/users.html @@ -185,7 +186,7 @@ public GitlabUser createUser(String email, String password, String username, String twitter, String website_url, Integer projects_limit, String extern_uid, String extern_provider_name, String bio, Boolean isAdmin, Boolean can_create_group, - Boolean skip_confirmation) throws IOException { + Boolean skip_confirmation, Boolean external) throws IOException { Query query = new Query() .append("email", email) @@ -202,7 +203,8 @@ public GitlabUser createUser(String email, String password, String username, .appendIf("provider", extern_provider_name) .appendIf("bio", bio) .appendIf("admin", isAdmin) - .appendIf("can_create_group", can_create_group); + .appendIf("can_create_group", can_create_group) + .appendIf("external", external); String tailUrl = GitlabUser.USERS_URL + query.toString(); @@ -239,6 +241,7 @@ public GitlabUser createUser(CreateUserRequest request) throws IOException { * @param bio Bio * @param isAdmin Is Admin * @param can_create_group Can Create Group + * @param external External * @return The Updated User * @throws IOException on gitlab api call error */ @@ -247,7 +250,7 @@ public GitlabUser updateUser(Integer targetUserId, String fullName, String skypeId, String linkedIn, String twitter, String website_url, Integer projects_limit, String extern_uid, String extern_provider_name, - String bio, Boolean isAdmin, Boolean can_create_group) throws IOException { + String bio, Boolean isAdmin, Boolean can_create_group, Boolean external) throws IOException { Query query = new Query() .append("email", email) @@ -263,7 +266,8 @@ public GitlabUser updateUser(Integer targetUserId, .appendIf("provider", extern_provider_name) .appendIf("bio", bio) .appendIf("admin", isAdmin) - .appendIf("can_create_group", can_create_group); + .appendIf("can_create_group", can_create_group) + .appendIf("external", external); String tailUrl = GitlabUser.USERS_URL + "/" + targetUserId + query.toString(); diff --git a/src/main/java/org/gitlab/api/models/GitlabUser.java b/src/main/java/org/gitlab/api/models/GitlabUser.java index fcc3906d..82a4afac 100644 --- a/src/main/java/org/gitlab/api/models/GitlabUser.java +++ b/src/main/java/org/gitlab/api/models/GitlabUser.java @@ -64,6 +64,9 @@ public class GitlabUser { @JsonProperty("can_create_team") private boolean _canCreateTeam; + @JsonProperty("external") + private boolean _external; + @JsonProperty("avatar_url") private String _avatarUrl; @@ -247,6 +250,14 @@ public void setCanCreateTeam(boolean canCreateTeam) { _canCreateTeam = canCreateTeam; } + public boolean isExternal() { + return _external; + } + + public void setExternal(boolean external) { + _external = external; + } + public String getAvatarUrl() { return _avatarUrl; } diff --git a/src/test/java/org/gitlab/api/GitlabAPIIT.java b/src/test/java/org/gitlab/api/GitlabAPIIT.java index fafeb7c2..9ce0e81d 100644 --- a/src/test/java/org/gitlab/api/GitlabAPIIT.java +++ b/src/test/java/org/gitlab/api/GitlabAPIIT.java @@ -1,9 +1,6 @@ package org.gitlab.api; -import org.gitlab.api.models.GitlabBuildVariable; -import org.gitlab.api.models.GitlabGroup; -import org.gitlab.api.models.GitlabProject; -import org.gitlab.api.models.GitlabUser; +import org.gitlab.api.models.*; import org.junit.BeforeClass; import org.junit.Test; @@ -127,7 +124,8 @@ public void testCreateUpdateDeleteUser() throws IOException, InterruptedExceptio randVal("bio"), false, false, - true); + true, + false); assertNotNull(gitUser); GitlabUser refetched = api.getUserViaSudo(gitUser.getUsername()); @@ -138,7 +136,7 @@ public void testCreateUpdateDeleteUser() throws IOException, InterruptedExceptio api.updateUser(gitUser.getId(), gitUser.getEmail(), password, gitUser.getUsername(), gitUser.getName(), "newSkypeId", gitUser.getLinkedin(), gitUser.getTwitter(), gitUser.getWebsiteUrl(), 10 /* project limit does not come back on GET */, gitUser.getExternUid(), gitUser.getExternProviderName(), - gitUser.getBio(), gitUser.isAdmin(), gitUser.isCanCreateGroup()); + gitUser.getBio(), gitUser.isAdmin(), gitUser.isCanCreateGroup(), gitUser.isExternal()); GitlabUser postUpdate = api.getUserViaSudo(gitUser.getUsername()); From f8d94d63ad9ec75d037c13f63f3fc04184eb6e68 Mon Sep 17 00:00:00 2001 From: Morgan Seznec Date: Mon, 19 Feb 2018 12:04:51 +0100 Subject: [PATCH 4/4] Add methods to create/update group --- src/main/java/org/gitlab/api/GitlabAPI.java | 59 +++++++++++++++ .../org/gitlab/api/models/GitlabGroup.java | 75 +++++++++++++++++++ src/test/java/org/gitlab/api/GitlabAPIIT.java | 32 ++++++++ 3 files changed, 166 insertions(+) diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index e4fbbb85..624ef965 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -544,6 +544,65 @@ public GitlabGroup createGroup(String name, String path, String ldapCn, GitlabAc return dispatch().to(tailUrl, GitlabGroup.class); } + + /** + * Creates a Group + * + * @param group The gitlab Group object + * @param sudoUser The user to create the group on behalf of + * + * @return The GitLab Group + * @throws IOException on gitlab api call error + */ + public GitlabGroup createGroup(GitlabGroup group, GitlabUser sudoUser) throws IOException { + + Query query = new Query() + .append("name", group.getName()) + .append("path", group.getPath()) + .appendIf("description", group.getDescription()) + .appendIf("membership_lock", group.getMembershipLock()) + .appendIf("share_with_group_lock", group.getShareWithGroupLock()) + .appendIf("visibility", group.getVisibility().toString()) + .appendIf("lfs_enabled", group.getLfsEnabled()) + .appendIf("request_access_enabled", group.getRequestAccessEnabled()) + .appendIf("shared_runners_minutes_limit", group.getSharedRunnersMinutesLimit()) + .appendIf("ldap_cn", group.getLdapCn()) + .appendIf("ldap_access", group.getLdapAccess()) + .appendIf(PARAM_SUDO, sudoUser != null ? sudoUser.getId() : null); + + String tailUrl = GitlabGroup.URL + query.toString(); + + return dispatch().to(tailUrl, GitlabGroup.class); + } + + /** + * Updates a Group + * + * @param group the group object + * @param sudoUser The user to create the group on behalf of + * @return The GitLab Group + * @throws IOException on gitlab api call error + */ + public GitlabGroup updateGroup(GitlabGroup group, GitlabUser sudoUser) throws IOException { + + Query query = new Query() + .appendIf("name", group.getName()) + .appendIf("path", group.getPath()) + .appendIf("description", group.getDescription()) + .appendIf("membership_lock", group.getMembershipLock()) + .appendIf("share_with_group_lock", group.getShareWithGroupLock()) + .appendIf("visibility", group.getVisibility().toString()) + .appendIf("lfs_enabled", group.getLfsEnabled()) + .appendIf("request_access_enabled", group.getRequestAccessEnabled()) + .appendIf("shared_runners_minutes_limit", group.getSharedRunnersMinutesLimit()) + .appendIf("ldap_cn", group.getLdapCn()) + .appendIf("ldap_access", group.getLdapAccess()) + .appendIf(PARAM_SUDO, sudoUser != null ? sudoUser.getId() : null); + + String tailUrl = GitlabGroup.URL + "/" + group.getId() + query.toString(); + + return retrieve().method("PUT").to(tailUrl, GitlabGroup.class); + } /** * Add a group member. diff --git a/src/main/java/org/gitlab/api/models/GitlabGroup.java b/src/main/java/org/gitlab/api/models/GitlabGroup.java index 19fa1be8..4266415d 100644 --- a/src/main/java/org/gitlab/api/models/GitlabGroup.java +++ b/src/main/java/org/gitlab/api/models/GitlabGroup.java @@ -11,6 +11,25 @@ public class GitlabGroup { private Integer id; private String name; private String path; + private String description; + + @JsonProperty("membership_lock") + private Boolean membershipLock; + + @JsonProperty("share_with_group_lock") + private Boolean shareWithGroupLock; + + @JsonProperty("visibility") + private GitlabVisibility visibility; + + @JsonProperty("lfs_enabled") + private Boolean lfsEnabled; + + @JsonProperty("request_access_enabled") + private Boolean requestAccessEnabled; + + @JsonProperty("shared_runners_minutes_limit") + private Integer sharedRunnersMinutesLimit; @JsonProperty("ldap_cn") private String ldapCn; @@ -67,6 +86,62 @@ public void setLdapCn(String ldapCn) { this.ldapCn = ldapCn; } + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Boolean getMembershipLock() { + return membershipLock; + } + + public void setMembershipLock(Boolean membershipLock) { + this.membershipLock = membershipLock; + } + + public Boolean getShareWithGroupLock() { + return shareWithGroupLock; + } + + public void setShareWithGroupLock(Boolean shareWithGroupLock) { + this.shareWithGroupLock = shareWithGroupLock; + } + + public GitlabVisibility getVisibility() { + return visibility; + } + + public void setVisibility(GitlabVisibility visibility) { + this.visibility = visibility; + } + + public Boolean getLfsEnabled() { + return lfsEnabled; + } + + public void setLfsEnabled(Boolean lfsEnabled) { + this.lfsEnabled = lfsEnabled; + } + + public Boolean getRequestAccessEnabled() { + return requestAccessEnabled; + } + + public void setRequestAccessEnabled(Boolean requestAccessEnabled) { + this.requestAccessEnabled = requestAccessEnabled; + } + + public Integer getSharedRunnersMinutesLimit() { + return sharedRunnersMinutesLimit; + } + + public void setSharedRunnersMinutesLimit(Integer sharedRunnersMinutesLimit) { + this.sharedRunnersMinutesLimit = sharedRunnersMinutesLimit; + } + public GitlabAccessLevel getLdapAccess() { if (ldapAccess == null) { return null; diff --git a/src/test/java/org/gitlab/api/GitlabAPIIT.java b/src/test/java/org/gitlab/api/GitlabAPIIT.java index 9ce0e81d..7f9830d9 100644 --- a/src/test/java/org/gitlab/api/GitlabAPIIT.java +++ b/src/test/java/org/gitlab/api/GitlabAPIIT.java @@ -183,6 +183,38 @@ public void testGetGroupByPath() throws IOException { // Cleanup api.deleteGroup(group.getId()); } + + @Test + public void testCreateAndUpdateGroup() throws IOException { + // Given + GitlabGroup originalGroup = new GitlabGroup(); + originalGroup.setDescription("test description"); + originalGroup.setName("groupNameTest"); + originalGroup.setPath("groupPathTest"); + originalGroup.setVisibility(GitlabVisibility.INTERNAL); + + GitlabGroup newGroup = api.createGroup(originalGroup, null); + assertNotNull(newGroup); + assertEquals(originalGroup.getId(), newGroup.getId()); + assertEquals(originalGroup.getName(), newGroup.getName()); + assertEquals(originalGroup.getPath(), newGroup.getPath()); + assertEquals(originalGroup.getDescription(), newGroup.getDescription()); + assertEquals(originalGroup.getVisibility(), newGroup.getVisibility()); + + GitlabGroup groupToUpdate = new GitlabGroup(); + groupToUpdate.setId(newGroup.getId()); + groupToUpdate.setVisibility(GitlabVisibility.PRIVATE); + + // When + GitlabGroup updatedGroup = api.updateGroup(newGroup, null); + + // Then: + assertNotNull(updatedGroup); + assertEquals(groupToUpdate.getVisibility(), updatedGroup.getVisibility()); + + // Cleanup + api.deleteGroup(updatedGroup.getId()); + } @Test public void testGetMembershipProjects() throws IOException {