Skip to content

Commit 86c9d4e

Browse files
Add CreateAsync to UserClient (#641)
* Add CreateAsync to UserClient * UserClient: `CreateAsync` call-though to `Create` Co-authored-by: John Belcher <jebelche@rockwellautomation.com> --------- Co-authored-by: John Belcher <jebelche@rockwellautomation.com>
1 parent 1c4f546 commit 86c9d4e

File tree

5 files changed

+38
-3
lines changed

5 files changed

+38
-3
lines changed

NGitLab.Mock/Clients/UserClient.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ public Models.User Create(UserUpsert user)
6464
}
6565
}
6666

67+
public async Task<Models.User> CreateAsync(UserUpsert user, CancellationToken cancellationToken = default)
68+
{
69+
await Task.Yield();
70+
return Create(user);
71+
}
72+
6773
public UserToken CreateToken(UserTokenCreate tokenRequest)
6874
{
6975
throw new NotSupportedException();

NGitLab.Tests/UsersTests.cs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,19 @@ public async Task CreateUpdateDelete()
5252
await GitLabTestContext.RetryUntilAsync(() => users.Get(addedUser.Username).ToList(), users => !users.Any(), TimeSpan.FromMinutes(2));
5353
}
5454

55+
[Test]
56+
[NGitLabRetry]
57+
public async Task CreateAsync()
58+
{
59+
using var context = await GitLabTestContext.CreateAsync();
60+
var users = context.AdminClient.Users;
61+
62+
var addedUser = await CreateNewUserAsync(context);
63+
Assert.That(addedUser.Bio, Is.EqualTo("bio"));
64+
65+
await GitLabTestContext.RetryUntilAsync(() => users.Get(addedUser.Username).ToList(), users => users.Any(), TimeSpan.FromMinutes(2));
66+
}
67+
5568
[Test]
5669
[NGitLabRetry]
5770
public async Task GetUserByEmailDoesNotWorkOnNonAdminClient()
@@ -182,10 +195,10 @@ public async Task GetLastActivityDates_UsingNonAdminCredentials_ThrowsForbidden(
182195
Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.Forbidden));
183196
}
184197

185-
private static User CreateNewUser(GitLabTestContext context)
198+
private static UserUpsert CreateNewUserUpsert(GitLabTestContext context)
186199
{
187200
var randomNumber = context.GetRandomNumber().ToString(CultureInfo.InvariantCulture);
188-
return context.AdminClient.Users.Create(new UserUpsert
201+
return new UserUpsert
189202
{
190203
Email = $"test{randomNumber}@test.pl",
191204
Bio = "bio",
@@ -201,7 +214,17 @@ private static User CreateNewUser(GitLabTestContext context)
201214
Twitter = "twitter",
202215
Username = $"ngitlabtestuser{randomNumber}",
203216
WebsiteURL = "https://www.example.com",
204-
});
217+
};
218+
}
219+
220+
private static User CreateNewUser(GitLabTestContext context)
221+
{
222+
return context.AdminClient.Users.Create(CreateNewUserUpsert(context));
223+
}
224+
225+
private static Task<User> CreateNewUserAsync(GitLabTestContext context)
226+
{
227+
return context.AdminClient.Users.CreateAsync(CreateNewUserUpsert(context));
205228
}
206229

207230
// Comes from https://github.com/meziantou/Meziantou.GitLabClient/blob/main/test/Meziantou.GitLabClient.Tests/Internals/RsaSshKey.cs

NGitLab/IUserClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public interface IUserClient
1818

1919
User Create(UserUpsert user);
2020

21+
Task<User> CreateAsync(UserUpsert user, CancellationToken cancellationToken = default);
22+
2123
User Update(int id, UserUpsert user);
2224

2325
/// <summary>

NGitLab/Impl/UserClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public IEnumerable<User> Get(UserQuery query)
5656

5757
public User Create(UserUpsert user) => _api.Post().With(user).To<User>(User.Url);
5858

59+
public Task<User> CreateAsync(UserUpsert user, CancellationToken cancellationToken = default) => _api.Post().With(user).ToAsync<User>(User.Url, cancellationToken);
60+
5961
public UserToken CreateToken(UserTokenCreate tokenRequest) => _api.Post().With(tokenRequest).To<UserToken>(User.Url + "/" + tokenRequest.UserId.ToStringInvariant() + "/impersonation_tokens");
6062

6163
public User Update(int id, UserUpsert user) => _api.Put().With(user).To<User>(User.Url + "/" + id.ToStringInvariant());

NGitLab/PublicAPI.Unshipped.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ NGitLab.Impl.UserClient
922922
NGitLab.Impl.UserClient.Activate(int userId) -> void
923923
NGitLab.Impl.UserClient.All.get -> System.Collections.Generic.IEnumerable<NGitLab.Models.User>
924924
NGitLab.Impl.UserClient.Create(NGitLab.Models.UserUpsert user) -> NGitLab.Models.User
925+
NGitLab.Impl.UserClient.CreateAsync(NGitLab.Models.UserUpsert user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<NGitLab.Models.User>
925926
NGitLab.Impl.UserClient.CreateToken(NGitLab.Models.UserTokenCreate tokenRequest) -> NGitLab.Models.UserToken
926927
NGitLab.Impl.UserClient.Current.get -> NGitLab.Models.Session
927928
NGitLab.Impl.UserClient.CurrentUserSShKeys.get -> NGitLab.ISshKeyClient
@@ -1131,6 +1132,7 @@ NGitLab.IUserClient
11311132
NGitLab.IUserClient.Activate(int id) -> void
11321133
NGitLab.IUserClient.All.get -> System.Collections.Generic.IEnumerable<NGitLab.Models.User>
11331134
NGitLab.IUserClient.Create(NGitLab.Models.UserUpsert user) -> NGitLab.Models.User
1135+
NGitLab.IUserClient.CreateAsync(NGitLab.Models.UserUpsert user, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<NGitLab.Models.User>
11341136
NGitLab.IUserClient.CreateToken(NGitLab.Models.UserTokenCreate tokenRequest) -> NGitLab.Models.UserToken
11351137
NGitLab.IUserClient.Current.get -> NGitLab.Models.Session
11361138
NGitLab.IUserClient.CurrentUserSShKeys.get -> NGitLab.ISshKeyClient

0 commit comments

Comments
 (0)