Skip to content

Commit 88b1a9e

Browse files
MayueCifMayue
and
Mayue
authored
Feat/auth sdk user (#155)
* feat:identiymodel split * feat:AddHttpContextAccessor * feat:reset identitymodel * fix:remove test csproj Co-authored-by: Mayue <mayue@lonsid.cn>
1 parent afd946c commit 88b1a9e

File tree

6 files changed

+116
-9
lines changed

6 files changed

+116
-9
lines changed

Masa.Contrib.sln

+5-5
Original file line numberDiff line numberDiff line change
@@ -310,15 +310,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.BasicAbility.M
310310
EndProject
311311
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Data.UoW.EF", "src\Data\Masa.Contrib.Data.UoW.EF\Masa.Contrib.Data.UoW.EF.csproj", "{FC4E526A-DBFC-406A-8ED3-64983B67F688}"
312312
EndProject
313-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Contrib.Data.DistributedLock.Medallion.Redis", "src\Data\DistributedLock\Masa.Contrib.Data.DistributedLock.Medallion.Redis\Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj", "{AE3607C0-3278-46D7-97CD-4E6F37C120D3}"
313+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Data.DistributedLock.Medallion.Redis", "src\Data\DistributedLock\Masa.Contrib.Data.DistributedLock.Medallion.Redis\Masa.Contrib.Data.DistributedLock.Medallion.Redis.csproj", "{AE3607C0-3278-46D7-97CD-4E6F37C120D3}"
314314
EndProject
315-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Contrib.Data.DistributedLock.Medallion", "src\Data\DistributedLock\Masa.Contrib.Data.DistributedLock.Medallion\Masa.Contrib.Data.DistributedLock.Medallion.csproj", "{A1232A01-3927-4EDE-B7D4-657E08DEB36D}"
315+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Data.DistributedLock.Medallion", "src\Data\DistributedLock\Masa.Contrib.Data.DistributedLock.Medallion\Masa.Contrib.Data.DistributedLock.Medallion.csproj", "{A1232A01-3927-4EDE-B7D4-657E08DEB36D}"
316316
EndProject
317-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Contrib.Data.DistributedLock.Local.Tests", "test\Masa.Contrib.Data.DistributedLock.Local.Tests\Masa.Contrib.Data.DistributedLock.Local.Tests.csproj", "{2870B6BB-4188-45A0-A2D3-085834EBDC2A}"
317+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Data.DistributedLock.Local.Tests", "test\Masa.Contrib.Data.DistributedLock.Local.Tests\Masa.Contrib.Data.DistributedLock.Local.Tests.csproj", "{2870B6BB-4188-45A0-A2D3-085834EBDC2A}"
318318
EndProject
319-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Contrib.Data.DistributedLock.Medallion.Tests", "test\Masa.Contrib.Data.DistributedLock.Medallion.Tests\Masa.Contrib.Data.DistributedLock.Medallion.Tests.csproj", "{913DA066-8A23-4671-AC8F-B5B61134F8FE}"
319+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Data.DistributedLock.Medallion.Tests", "test\Masa.Contrib.Data.DistributedLock.Medallion.Tests\Masa.Contrib.Data.DistributedLock.Medallion.Tests.csproj", "{913DA066-8A23-4671-AC8F-B5B61134F8FE}"
320320
EndProject
321-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.Contrib.Dispatcher.Tests", "test\Masa.Contrib.Dispatcher.Tests\Masa.Contrib.Dispatcher.Tests.csproj", "{4CD3D849-7277-4C9C-9461-7ABB66F78629}"
321+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.Dispatcher.Tests", "test\Masa.Contrib.Dispatcher.Tests\Masa.Contrib.Dispatcher.Tests.csproj", "{4CD3D849-7277-4C9C-9461-7ABB66F78629}"
322322
EndProject
323323
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.BasicAbility.Tsc.Tests", "test\Masa.Contrib.BasicAbility.Tsc.Test\Masa.Contrib.BasicAbility.Tsc.Tests.csproj", "{FED315CF-7CA2-4653-AD37-BC0C1D7FFD22}"
324324
EndProject

src/BasicAbility/Masa.Contrib.BasicAbility.Auth/Service/UserService.cs

+17
Original file line numberDiff line numberDiff line change
@@ -132,5 +132,22 @@ public async Task<List<UserPortraitModel>> GetUserPortraitsAsync(params Guid[] u
132132
var requestUri = $"api/user/portraits";
133133
return await _callerProvider.PostAsync<Guid[], List<UserPortraitModel>>(requestUri, userIds) ?? new();
134134
}
135+
136+
public async Task SaveUserSystemDataAsync<T>(string systemId, T data)
137+
{
138+
var userId = _userContext.GetUserId<Guid>();
139+
var requestUri = $"api/user/UserSystemData";
140+
await _callerProvider.PostAsync<object>(requestUri,
141+
new { UserId = userId, SystemId = systemId, Data = JsonSerializer.Serialize(data) },
142+
true);
143+
}
144+
145+
public async Task<T?> GetUserSystemDataAsync<T>(string systemId)
146+
{
147+
var userId = _userContext.GetUserId<Guid>();
148+
var requestUri = $"api/user/GetUserSystemData";
149+
var data = await _callerProvider.GetAsync<object, string>(requestUri, new { userId = userId, systemId = systemId });
150+
return JsonSerializer.Deserialize<T>(data);
151+
}
135152
}
136153

src/BasicAbility/Masa.Contrib.BasicAbility.Auth/_Imports.cs

+1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
global using Masa.Utils.Caller.Core;
1111
global using Masa.Utils.Caller.HttpClient;
1212
global using Microsoft.AspNetCore.Http;
13+
global using System.Text.Json;
1314
global using static Masa.Contrib.BasicAbility.Auth.Constants;

test/Masa.Contrib.BasicAbility.Auth.Tests/UserServiceTest.cs

+91-3
Original file line numberDiff line numberDiff line change
@@ -233,16 +233,22 @@ public async Task TestVisitedAsync(string url)
233233
public async Task TestGetVisitedListAsync()
234234
{
235235
var userId = Guid.Parse("A9C8E0DD-1E9C-474D-8FE7-8BA9672D53D1");
236-
var data = new List<UserVisitedModel>();
236+
var data = new List<UserVisitedModel>() {
237+
new UserVisitedModel
238+
{
239+
Name="baidu",
240+
Url = "https://www.baidu.com/"
241+
}
242+
};
237243
var requestUri = $"api/user/visitedList";
238244
var callerProvider = new Mock<ICallerProvider>();
239-
callerProvider.Setup(provider => provider.GetAsync<object, List<UserVisitedModel>>(requestUri, new { userId = userId }, default)).ReturnsAsync(data).Verifiable();
245+
callerProvider.Setup(provider => provider.GetAsync<object, List<UserVisitedModel>>(requestUri, It.IsAny<object>(), default)).ReturnsAsync(data).Verifiable();
240246
var userContext = new Mock<IUserContext>();
241247
userContext.Setup(user => user.GetUserId<Guid>()).Returns(userId).Verifiable();
242248
var userService = new UserService(callerProvider.Object, userContext.Object);
243249
var result = await userService.GetVisitedListAsync();
244250
callerProvider.Verify(provider => provider.GetAsync<object, List<UserVisitedModel>>(requestUri, It.IsAny<object>(), default), Times.Once);
245-
Assert.IsTrue(result is not null);
251+
Assert.IsTrue(result.Count == 1);
246252
}
247253

248254
[TestMethod]
@@ -306,5 +312,87 @@ public async Task GetUserPortraitsAsync()
306312
callerProvider.Verify(provider => provider.PostAsync<Guid[], List<UserPortraitModel>>(requestUri, new Guid[] { userId }, default), Times.Once);
307313
Assert.IsTrue(data.Count == 1);
308314
}
315+
316+
[TestMethod]
317+
[DataRow("masa-auth")]
318+
public async Task TestIntGetUserSystemDataAsync(string systemId)
319+
{
320+
var userId = Guid.Parse("A9C8E0DD-1E9C-474D-8FE7-8BA9672D53D1");
321+
var data = 1;
322+
var requestUri = $"api/user/GetUserSystemData";
323+
var callerProvider = new Mock<ICallerProvider>();
324+
callerProvider.Setup(provider => provider.GetAsync<object, string>(requestUri, It.IsAny<object>(), default))
325+
.ReturnsAsync(data.ToString()).Verifiable();
326+
var userContext = new Mock<IUserContext>();
327+
userContext.Setup(user => user.GetUserId<Guid>()).Returns(userId).Verifiable();
328+
var userService = new UserService(callerProvider.Object, userContext.Object);
329+
var result = await userService.GetUserSystemDataAsync<int>(systemId);
330+
Assert.IsTrue(result == 1);
331+
}
332+
333+
[TestMethod]
334+
[DataRow("masa-auth")]
335+
public async Task TestObjectGetUserSystemDataAsync(string systemId)
336+
{
337+
var userId = Guid.Parse("A9C8E0DD-1E9C-474D-8FE7-8BA9672D53D1");
338+
var data = new SystemData
339+
{
340+
Name = "name",
341+
Value = "value"
342+
};
343+
var requestUri = $"api/user/GetUserSystemData";
344+
var callerProvider = new Mock<ICallerProvider>();
345+
callerProvider.Setup(provider => provider.GetAsync<object, string>(requestUri, It.IsAny<object>(), default))
346+
.ReturnsAsync(JsonSerializer.Serialize(data)).Verifiable();
347+
var userContext = new Mock<IUserContext>();
348+
userContext.Setup(user => user.GetUserId<Guid>()).Returns(userId).Verifiable();
349+
var userService = new UserService(callerProvider.Object, userContext.Object);
350+
var result = await userService.GetUserSystemDataAsync<SystemData>(systemId);
351+
Assert.IsTrue(result is not null);
352+
}
353+
354+
[TestMethod]
355+
[DataRow("masa-auth")]
356+
public async Task TestIntSaveUserSystemDataAsync(string systemId)
357+
{
358+
var userId = Guid.Parse("A9C8E0DD-1E9C-474D-8FE7-8BA9672D53D1");
359+
var requestUri = $"api/user/UserSystemData";
360+
var value = 1;
361+
var data = new { UserId = userId, SystemId = systemId, Data = JsonSerializer.Serialize(value) };
362+
var callerProvider = new Mock<ICallerProvider>();
363+
callerProvider.Setup(provider => provider.PostAsync<object>(requestUri, data, true, default)).Verifiable();
364+
var userContext = new Mock<IUserContext>();
365+
userContext.Setup(user => user.GetUserId<Guid>()).Returns(userId).Verifiable();
366+
var userService = new UserService(callerProvider.Object, userContext.Object);
367+
await userService.SaveUserSystemDataAsync(systemId, value);
368+
callerProvider.Verify(provider => provider.PostAsync<object>(requestUri, It.IsAny<object>(), true, default), Times.Once);
369+
}
370+
371+
[TestMethod]
372+
[DataRow("masa-auth")]
373+
public async Task TestObjectSaveUserSystemDataAsync(string systemId)
374+
{
375+
var userId = Guid.Parse("A9C8E0DD-1E9C-474D-8FE7-8BA9672D53D1");
376+
var requestUri = $"api/user/UserSystemData";
377+
var value = new SystemData
378+
{
379+
Name = "name",
380+
Value = "value"
381+
};
382+
var data = new { UserId = userId, SystemId = systemId, Data = JsonSerializer.Serialize(value) };
383+
var callerProvider = new Mock<ICallerProvider>();
384+
callerProvider.Setup(provider => provider.PostAsync<object>(requestUri, data, true, default)).Verifiable();
385+
var userContext = new Mock<IUserContext>();
386+
userContext.Setup(user => user.GetUserId<Guid>()).Returns(userId).Verifiable();
387+
var userService = new UserService(callerProvider.Object, userContext.Object);
388+
await userService.SaveUserSystemDataAsync(systemId, value);
389+
callerProvider.Verify(provider => provider.PostAsync<object>(requestUri, It.IsAny<object>(), true, default), Times.Once);
390+
}
309391
}
310392

393+
394+
class SystemData
395+
{
396+
public string Name { get; set; }
397+
public string Value { get; set; }
398+
}

test/Masa.Contrib.BasicAbility.Auth.Tests/_Imports.cs

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@
1010
global using Microsoft.Extensions.DependencyInjection;
1111
global using Microsoft.VisualStudio.TestTools.UnitTesting;
1212
global using Moq;
13+
global using System.Text.Json;

0 commit comments

Comments
 (0)