|
|
|
@ -15,10 +15,12 @@ namespace Volo.Abp.OpenIddict.Applications;
|
|
|
|
|
public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
{
|
|
|
|
|
private readonly IOpenIddictApplicationStore<OpenIddictApplicationModel> _applicationStore;
|
|
|
|
|
private readonly AbpOpenIddictTestData _testData;
|
|
|
|
|
|
|
|
|
|
public AbpOpenIddictApplicationStore_Tests()
|
|
|
|
|
{
|
|
|
|
|
_applicationStore = ServiceProvider.GetRequiredService<IOpenIddictApplicationStore<OpenIddictApplicationModel>>();
|
|
|
|
|
_testData = ServiceProvider.GetRequiredService<AbpOpenIddictTestData>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
@ -32,10 +34,10 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task FindByIdAsync_Should_Return_Application_If_Found()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ShouldNotBeNull();
|
|
|
|
|
application.ClientId.ShouldBe(AbpOpenIddictTestData.App1ClientId);
|
|
|
|
|
application.ClientId.ShouldBe(_testData.App1ClientId);
|
|
|
|
|
application.ConsentType.ShouldBe(OpenIddictConstants.ConsentTypes.Explicit);
|
|
|
|
|
application.DisplayName.ShouldBe("Test Application");
|
|
|
|
|
}
|
|
|
|
@ -51,10 +53,10 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task FindByClientIdAsync_Should_Return_Application_If_Found()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByClientIdAsync(AbpOpenIddictTestData.App1ClientId, CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByClientIdAsync(_testData.App1ClientId, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ShouldNotBeNull();
|
|
|
|
|
application.ClientId.ShouldBe(AbpOpenIddictTestData.App1ClientId);
|
|
|
|
|
application.ClientId.ShouldBe(_testData.App1ClientId);
|
|
|
|
|
application.ConsentType.ShouldBe(OpenIddictConstants.ConsentTypes.Explicit);
|
|
|
|
|
application.DisplayName.ShouldBe("Test Application");
|
|
|
|
|
}
|
|
|
|
@ -91,12 +93,12 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task DeleteAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
application.ShouldNotBeNull();
|
|
|
|
|
|
|
|
|
|
await _applicationStore.DeleteAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
application.ShouldBeNull();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -131,16 +133,16 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetClientIdAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var clientId = await _applicationStore.GetClientIdAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
clientId.ShouldBe(AbpOpenIddictTestData.App1ClientId);
|
|
|
|
|
clientId.ShouldBe(_testData.App1ClientId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetClientSecretAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var secret = await _applicationStore.GetClientIdAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
secret.ShouldBe("Client1");
|
|
|
|
@ -149,7 +151,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetClientTypeAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var clientType = await _applicationStore.GetClientTypeAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
clientType.ShouldBe(OpenIddictConstants.ClientTypes.Public);
|
|
|
|
@ -158,7 +160,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetConsentTypeAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var consentType = await _applicationStore.GetConsentTypeAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
consentType.ShouldBe(OpenIddictConstants.ConsentTypes.Explicit);
|
|
|
|
@ -167,7 +169,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetDisplayNameAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var displayName = await _applicationStore.GetDisplayNameAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
displayName.ShouldBe("Test Application");
|
|
|
|
@ -176,16 +178,16 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetIdAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var id = await _applicationStore.GetIdAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
id.ShouldBe(AbpOpenIddictTestData.App1Id.ToString());
|
|
|
|
|
id.ShouldBe(_testData.App1Id.ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetPermissionsAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var permissions = await _applicationStore.GetPermissionsAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
permissions.Length.ShouldBeGreaterThan(0);
|
|
|
|
@ -194,7 +196,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetPostLogoutRedirectUrisAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var postLogoutRedirectUris = await _applicationStore.GetPostLogoutRedirectUrisAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
postLogoutRedirectUris.Length.ShouldBe(1);
|
|
|
|
@ -204,7 +206,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetRedirectUrisAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var redirectUris = await _applicationStore.GetRedirectUrisAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
redirectUris.Length.ShouldBe(1);
|
|
|
|
@ -214,7 +216,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetPropertiesAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var properties = await _applicationStore.GetPropertiesAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
properties.Count.ShouldBe(0);
|
|
|
|
@ -223,7 +225,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task GetRequirementsAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var requirements = await _applicationStore.GetRequirementsAsync(application, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
requirements.Length.ShouldBe(0);
|
|
|
|
@ -254,7 +256,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
public async Task SetClientIdAsync()
|
|
|
|
|
{
|
|
|
|
|
var clientId = Guid.NewGuid().ToString();
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetClientIdAsync(application, clientId, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ClientId.ShouldBe(clientId);
|
|
|
|
@ -264,7 +266,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
public async Task SetClientSecretAsync()
|
|
|
|
|
{
|
|
|
|
|
var clientSecret = Guid.NewGuid().ToString();
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetClientSecretAsync(application, clientSecret, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ClientSecret.ShouldBe(clientSecret);
|
|
|
|
@ -273,7 +275,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetClientTypeAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetClientTypeAsync(application, OpenIddictConstants.ClientTypes.Confidential, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.Type.ShouldBe(OpenIddictConstants.ClientTypes.Confidential);
|
|
|
|
@ -282,7 +284,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetConsentTypeAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetConsentTypeAsync(application, OpenIddictConstants.ConsentTypes.Systematic, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ConsentType.ShouldBe(OpenIddictConstants.ConsentTypes.Systematic);
|
|
|
|
@ -292,7 +294,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
public async Task SetDisplayNameAsync()
|
|
|
|
|
{
|
|
|
|
|
var displayName = Guid.NewGuid().ToString();
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetDisplayNameAsync(application, displayName, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.DisplayName.ShouldBe(displayName);
|
|
|
|
@ -305,7 +307,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
displayNames = displayNames.Add(CultureInfo.GetCultureInfo("en"), "Test Application");
|
|
|
|
|
displayNames = displayNames.Add(CultureInfo.GetCultureInfo("zh-Hans"), "测试应用程序");
|
|
|
|
|
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetDisplayNamesAsync(application, displayNames, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.DisplayNames.ShouldContain("Test Application");
|
|
|
|
@ -315,7 +317,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetPermissionsAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetPermissionsAsync(application, ImmutableArray.Create(OpenIddictConstants.Permissions.Endpoints.Authorization), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.Permissions.ShouldBe("[\""+OpenIddictConstants.Permissions.Endpoints.Authorization+"\"]");
|
|
|
|
@ -324,7 +326,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetPostLogoutRedirectUrisAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetPostLogoutRedirectUrisAsync(application, ImmutableArray.Create("https://abp.io"), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.PostLogoutRedirectUris.ShouldBe("[\"https://abp.io\"]");
|
|
|
|
@ -333,7 +335,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetPropertiesAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetPropertiesAsync(application, ImmutableDictionary.Create<string, JsonElement>(), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.Properties.ShouldBeNull();
|
|
|
|
@ -342,7 +344,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetRedirectUrisAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetRedirectUrisAsync(application, ImmutableArray.Create("https://abp.io"), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.RedirectUris.ShouldBe("[\"https://abp.io\"]");
|
|
|
|
@ -351,7 +353,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task SetRequirementsAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
await _applicationStore.SetRequirementsAsync(application, ImmutableArray.Create(OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.Requirements.ShouldBe("[\""+OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange+"\"]");
|
|
|
|
@ -360,7 +362,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task UpdateAsync()
|
|
|
|
|
{
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
application.ClientId = "new_client_id";
|
|
|
|
|
application.Type = OpenIddictConstants.ClientTypes.Public;
|
|
|
|
|
application.RedirectUris = "https://new_logout_uri";
|
|
|
|
@ -368,7 +370,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase
|
|
|
|
|
application.DisplayName = "new_display_name";
|
|
|
|
|
|
|
|
|
|
await _applicationStore.UpdateAsync(application, CancellationToken.None);
|
|
|
|
|
application = await _applicationStore.FindByIdAsync(AbpOpenIddictTestData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
application.ShouldNotBeNull();
|
|
|
|
|
application.ClientId.ShouldBe("new_client_id");
|
|
|
|
|