Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
佳 邓
Gitlab4j Api
Commits
5ccdca2c
Commit
5ccdca2c
authored
May 04, 2021
by
Benedikt Waldvogel
Browse files
Add UserApi.getMemberships() to list projects and groups a user is member of
parent
883999bc
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/gitlab4j/api/UserApi.java
View file @
5ccdca2c
...
...
@@ -16,6 +16,8 @@ import org.gitlab4j.api.models.CustomAttribute;
import
org.gitlab4j.api.models.Email
;
import
org.gitlab4j.api.models.ImpersonationToken
;
import
org.gitlab4j.api.models.ImpersonationToken.Scope
;
import
org.gitlab4j.api.models.Membership
;
import
org.gitlab4j.api.models.Memberships
;
import
org.gitlab4j.api.models.SshKey
;
import
org.gitlab4j.api.models.User
;
import
org.gitlab4j.api.utils.EmailChecker
;
...
...
@@ -522,7 +524,7 @@ public class UserApi extends AbstractApi {
* Either password or resetPassword should be specified (resetPassword takes priority).</p>
*
* <pre><code>GitLab Endpoint: POST /users</code></pre>
*
*
* <p>The following properties of the provided User instance can be set during creation:<pre><code> email (required) - Email
* username (required) - Username
* name (required) - Name
...
...
@@ -1211,4 +1213,21 @@ public class UserApi extends AbstractApi {
public
void
deleteEmail
(
final
Object
userIdOrUsername
,
final
Long
emailId
)
throws
GitLabApiException
{
delete
(
Response
.
Status
.
NO_CONTENT
,
null
,
"users"
,
getUserIdOrUsername
(
userIdOrUsername
),
"emails"
,
emailId
);
}
/**
* Lists all projects and groups a user is a member of. (admin only)
*
* <pre><code>GitLab Endpoint: GET /users/:id/memberships</code></pre>
*
* @param userId the ID of the user to get the memberships for
* @return the list of memberships of the given user
* @throws GitLabApiException if any exception occurs
* @since GitLab 12.8
*/
public
List
<
Membership
>
getMemberships
(
Integer
userId
)
throws
GitLabApiException
{
GitLabApiForm
formData
=
new
GitLabApiForm
();
Response
response
=
get
(
Response
.
Status
.
OK
,
formData
.
asMap
(),
"users"
,
userId
,
"memberships"
);
return
(
response
.
readEntity
(
Memberships
.
class
));
}
}
src/main/java/org/gitlab4j/api/models/Membership.java
0 → 100644
View file @
5ccdca2c
package
org.gitlab4j.api.models
;
import
org.gitlab4j.api.utils.JacksonJson
;
public
class
Membership
{
private
Integer
sourceId
;
private
String
sourceName
;
private
MembershipSourceType
sourceType
;
private
AccessLevel
accessLevel
;
public
Integer
getSourceId
()
{
return
sourceId
;
}
public
void
setSourceId
(
Integer
sourceId
)
{
this
.
sourceId
=
sourceId
;
}
public
String
getSourceName
()
{
return
sourceName
;
}
public
void
setSourceName
(
String
sourceName
)
{
this
.
sourceName
=
sourceName
;
}
public
MembershipSourceType
getSourceType
()
{
return
sourceType
;
}
public
void
setSourceType
(
MembershipSourceType
sourceType
)
{
this
.
sourceType
=
sourceType
;
}
public
AccessLevel
getAccessLevel
()
{
return
accessLevel
;
}
public
void
setAccessLevel
(
AccessLevel
accessLevel
)
{
this
.
accessLevel
=
accessLevel
;
}
@Override
public
String
toString
()
{
return
(
JacksonJson
.
toJsonString
(
this
));
}
}
src/main/java/org/gitlab4j/api/models/MembershipSourceType.java
0 → 100644
View file @
5ccdca2c
package
org.gitlab4j.api.models
;
import
org.gitlab4j.api.utils.JacksonJsonEnumHelper
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonValue
;
public
enum
MembershipSourceType
{
PROJECT
,
/** Representing a group */
NAMESPACE
;
private
static
JacksonJsonEnumHelper
<
MembershipSourceType
>
enumHelper
=
new
JacksonJsonEnumHelper
<>(
MembershipSourceType
.
class
);
@JsonCreator
public
static
MembershipSourceType
forValue
(
String
value
)
{
return
enumHelper
.
forValue
(
value
);
}
@JsonValue
public
String
toValue
()
{
return
(
enumHelper
.
toString
(
this
));
}
@Override
public
String
toString
()
{
return
(
enumHelper
.
toString
(
this
));
}
}
src/main/java/org/gitlab4j/api/models/Memberships.java
0 → 100644
View file @
5ccdca2c
package
org.gitlab4j.api.models
;
import
java.util.ArrayList
;
public
class
Memberships
extends
ArrayList
<
Membership
>
{
private
static
final
long
serialVersionUID
=
1L
;
}
src/test/java/org/gitlab4j/api/TestUserApi.java
View file @
5ccdca2c
...
...
@@ -18,9 +18,12 @@ import java.util.Optional;
import
javax.ws.rs.core.Response
;
import
org.gitlab4j.api.models.AccessLevel
;
import
org.gitlab4j.api.models.Email
;
import
org.gitlab4j.api.models.ImpersonationToken
;
import
org.gitlab4j.api.models.ImpersonationToken.Scope
;
import
org.gitlab4j.api.models.Membership
;
import
org.gitlab4j.api.models.MembershipSourceType
;
import
org.gitlab4j.api.models.SshKey
;
import
org.gitlab4j.api.models.User
;
import
org.gitlab4j.api.models.Version
;
...
...
@@ -447,4 +450,33 @@ public class TestUserApi extends AbstractIntegrationTest {
found
=
emails
.
stream
().
filter
(
e
->
e
.
getEmail
().
equals
(
TEST_USER_EMAIL
)).
findAny
().
orElse
(
null
);
assertNull
(
found
);
}
@Test
public
void
testGetMemberships
()
throws
GitLabApiException
{
User
currentUser
=
gitLabApi
.
getUserApi
().
getCurrentUser
();
assertNotNull
(
currentUser
);
List
<
Membership
>
memberships
=
gitLabApi
.
getUserApi
().
getMemberships
(
currentUser
.
getId
());
assertNotNull
(
memberships
);
assertEquals
(
3
,
memberships
.
size
());
Membership
membership1
=
memberships
.
get
(
0
);
assertMembershipEquals
(
membership1
,
1
,
"test-project"
,
MembershipSourceType
.
PROJECT
,
AccessLevel
.
MAINTAINER
);
Membership
membership2
=
memberships
.
get
(
1
);
assertMembershipEquals
(
membership2
,
4
,
"Test Group"
,
MembershipSourceType
.
NAMESPACE
,
AccessLevel
.
OWNER
);
Membership
membership3
=
memberships
.
get
(
2
);
assertMembershipEquals
(
membership3
,
5
,
"subgroup"
,
MembershipSourceType
.
NAMESPACE
,
AccessLevel
.
OWNER
);
}
private
void
assertMembershipEquals
(
Membership
actualMembership
,
int
expectedSourceId
,
String
expectedSourceName
,
MembershipSourceType
expectedSourceType
,
AccessLevel
expectedAccessLevel
)
{
assertEquals
(
expectedSourceId
,
actualMembership
.
getSourceId
().
intValue
());
assertEquals
(
expectedSourceName
,
actualMembership
.
getSourceName
());
assertEquals
(
expectedSourceType
,
actualMembership
.
getSourceType
());
assertEquals
(
expectedAccessLevel
,
actualMembership
.
getAccessLevel
());
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment