|
|
|
@ -21,6 +21,13 @@ namespace Bit.Identity.IntegrationTest.Endpoints; |
|
|
|
[SutProviderCustomize] |
|
|
|
[SutProviderCustomize] |
|
|
|
public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
private static readonly KeysRequestModel TEST_ACCOUNT_KEYS = new KeysRequestModel |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
AccountKeys = null, |
|
|
|
|
|
|
|
PublicKey = "public-key", |
|
|
|
|
|
|
|
EncryptedPrivateKey = "encrypted-private-key", |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
private const int SecondsInMinute = 60; |
|
|
|
private const int SecondsInMinute = 60; |
|
|
|
private const int MinutesInHour = 60; |
|
|
|
private const int MinutesInHour = 60; |
|
|
|
private const int SecondsInHour = SecondsInMinute * MinutesInHour; |
|
|
|
private const int SecondsInHour = SecondsInMinute * MinutesInHour; |
|
|
|
@ -53,6 +60,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_Success(RegisterFinishRequestModel requestModel) |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_Success(RegisterFinishRequestModel requestModel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(requestModel); |
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(requestModel); |
|
|
|
|
|
|
|
|
|
|
|
@ -78,6 +86,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyDisabled_WithEnforceSsoPolicyForAllUsersTrue_Success( |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyDisabled_WithEnforceSsoPolicyForAllUsersTrue_Success( |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
|
|
|
|
|
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
@ -103,6 +112,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyDisabled_WithEnforceSsoPolicyForAllUsersFalse_Success( |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyDisabled_WithEnforceSsoPolicyForAllUsersFalse_Success( |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
|
|
|
|
|
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
@ -129,6 +139,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersTrue_Throw( |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithAllUserTypes_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersTrue_Throw( |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
|
|
|
|
|
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
@ -152,6 +163,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithOwnerOrAdmin_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersFalse_Success( |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithOwnerOrAdmin_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersFalse_Success( |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
|
|
|
|
|
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
@ -175,6 +187,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithNonOwnerOrAdmin_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersFalse_Throws( |
|
|
|
public async Task TokenEndpoint_GrantTypePassword_WithNonOwnerOrAdmin_WithSsoPolicyEnabled_WithEnforceSsoPolicyForAllUsersFalse_Throws( |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
OrganizationUserType organizationUserType, RegisterFinishRequestModel requestModel, Guid organizationId, int generatedUsername) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
requestModel.Email = $"{generatedUsername}@example.com"; |
|
|
|
|
|
|
|
|
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
@ -196,6 +209,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
public async Task TokenEndpoint_GrantTypeRefreshToken_Success(RegisterFinishRequestModel requestModel) |
|
|
|
public async Task TokenEndpoint_GrantTypeRefreshToken_Success(RegisterFinishRequestModel requestModel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
|
|
|
|
|
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(requestModel); |
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(requestModel); |
|
|
|
@ -218,6 +232,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
[Theory, BitAutoData, RegisterFinishRequestModelCustomize] |
|
|
|
public async Task TokenEndpoint_GrantTypeClientCredentials_Success(RegisterFinishRequestModel model) |
|
|
|
public async Task TokenEndpoint_GrantTypeClientCredentials_Success(RegisterFinishRequestModel model) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
model.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(model); |
|
|
|
var user = await localFactory.RegisterNewIdentityFactoryUserAsync(model); |
|
|
|
|
|
|
|
|
|
|
|
@ -242,6 +257,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
RegisterFinishRequestModel model, |
|
|
|
RegisterFinishRequestModel model, |
|
|
|
string deviceId) |
|
|
|
string deviceId) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
model.UserAsymmetricKeys.AccountKeys = null; |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var localFactory = new IdentityApplicationFactory(); |
|
|
|
var server = localFactory.WithWebHostBuilder(builder => |
|
|
|
var server = localFactory.WithWebHostBuilder(builder => |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -445,6 +461,7 @@ public class IdentityServerTests : IClassFixture<IdentityApplicationFactory> |
|
|
|
public async Task TokenEndpoint_TooQuickInOneSecond_BlockRequest( |
|
|
|
public async Task TokenEndpoint_TooQuickInOneSecond_BlockRequest( |
|
|
|
RegisterFinishRequestModel requestModel) |
|
|
|
RegisterFinishRequestModel requestModel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
requestModel.UserAsymmetricKeys = TEST_ACCOUNT_KEYS; |
|
|
|
const int AmountInOneSecondAllowed = 10; |
|
|
|
const int AmountInOneSecondAllowed = 10; |
|
|
|
|
|
|
|
|
|
|
|
// The rule we are testing is 10 requests in 1 second |
|
|
|
// The rule we are testing is 10 requests in 1 second |
|
|
|
|