You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.4 KiB
68 lines
2.4 KiB
using Bit.Core; |
|
using Bit.Core.Auth.Models.Api.Request.Accounts; |
|
using Bit.Core.Enums; |
|
using Bit.IntegrationTestCommon.Factories; |
|
using Microsoft.AspNetCore.Authentication.JwtBearer; |
|
using Microsoft.AspNetCore.Hosting; |
|
using Microsoft.AspNetCore.TestHost; |
|
using Microsoft.Data.Sqlite; |
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
namespace Bit.Events.IntegrationTest; |
|
|
|
public class EventsApplicationFactory : WebApplicationFactoryBase<Startup> |
|
{ |
|
private readonly IdentityApplicationFactory _identityApplicationFactory; |
|
private const string _connectionString = "DataSource=:memory:"; |
|
|
|
public EventsApplicationFactory() |
|
{ |
|
SqliteConnection = new SqliteConnection(_connectionString); |
|
SqliteConnection.Open(); |
|
|
|
_identityApplicationFactory = new IdentityApplicationFactory(); |
|
_identityApplicationFactory.SqliteConnection = SqliteConnection; |
|
} |
|
|
|
protected override void ConfigureWebHost(IWebHostBuilder builder) |
|
{ |
|
base.ConfigureWebHost(builder); |
|
|
|
builder.ConfigureTestServices(services => |
|
{ |
|
services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options => |
|
{ |
|
options.BackchannelHttpHandler = _identityApplicationFactory.Server.CreateHandler(); |
|
}); |
|
}); |
|
} |
|
|
|
/// <summary> |
|
/// Helper for registering and logging in to a new account |
|
/// </summary> |
|
public async Task<(string Token, string RefreshToken)> LoginWithNewAccount(string email = "integration-test@bitwarden.com", string masterPasswordHash = "master_password_hash") |
|
{ |
|
await _identityApplicationFactory.RegisterNewIdentityFactoryUserAsync( |
|
new RegisterFinishRequestModel |
|
{ |
|
Email = email, |
|
MasterPasswordHash = masterPasswordHash, |
|
Kdf = KdfType.PBKDF2_SHA256, |
|
KdfIterations = AuthConstants.PBKDF2_ITERATIONS.Default, |
|
UserAsymmetricKeys = new KeysRequestModel() |
|
{ |
|
PublicKey = "public_key", |
|
EncryptedPrivateKey = "private_key" |
|
}, |
|
UserSymmetricKey = "sym_key", |
|
}); |
|
|
|
return await _identityApplicationFactory.TokenFromPasswordAsync(email, masterPasswordHash); |
|
} |
|
|
|
protected override void Dispose(bool disposing) |
|
{ |
|
base.Dispose(disposing); |
|
SqliteConnection!.Dispose(); |
|
} |
|
}
|
|
|