mirror of
https://github.com/bitwarden/server.git
synced 2026-01-31 06:03:12 +08:00
* Scenes should return resulting data in the result object The result is for data that cannot be known by the client requesting the scene and the mangle map used for mangling input values to enable parallelizing tests * Fix filenames * SingleUserScene now has a return value of various created User data * 1/100 too frequent for false test failures
76 lines
4.3 KiB
C#
76 lines
4.3 KiB
C#
using Bit.Core.Entities;
|
|
using Bit.Core.Enums;
|
|
using Bit.Core.Utilities;
|
|
using Bit.RustSDK;
|
|
using Microsoft.AspNetCore.Identity;
|
|
|
|
namespace Bit.Seeder.Factories;
|
|
|
|
public struct UserData
|
|
{
|
|
public string Email;
|
|
}
|
|
|
|
public class UserSeeder(RustSdkService sdkService, IPasswordHasher<Bit.Core.Entities.User> passwordHasher, MangleId mangleId)
|
|
{
|
|
private string MangleEmail(string email)
|
|
{
|
|
return $"{mangleId}+{email}";
|
|
}
|
|
|
|
public User CreateUser(string email, bool emailVerified = false, bool premium = false)
|
|
{
|
|
email = MangleEmail(email);
|
|
var keys = sdkService.GenerateUserKeys(email, "asdfasdfasdf");
|
|
|
|
var user = new User
|
|
{
|
|
Id = CoreHelpers.GenerateComb(),
|
|
Email = email,
|
|
EmailVerified = emailVerified,
|
|
MasterPassword = null,
|
|
SecurityStamp = "4830e359-e150-4eae-be2a-996c81c5e609",
|
|
Key = keys.EncryptedUserKey,
|
|
PublicKey = keys.PublicKey,
|
|
PrivateKey = keys.PrivateKey,
|
|
Premium = premium,
|
|
ApiKey = "7gp59kKHt9kMlks0BuNC4IjNXYkljR",
|
|
|
|
Kdf = KdfType.PBKDF2_SHA256,
|
|
KdfIterations = 5_000,
|
|
};
|
|
|
|
user.MasterPassword = passwordHasher.HashPassword(user, keys.MasterPasswordHash);
|
|
|
|
return user;
|
|
}
|
|
|
|
public static User CreateUserNoMangle(string email)
|
|
{
|
|
return new User
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Email = email,
|
|
MasterPassword = "AQAAAAIAAYagAAAAEBATmF66OHMpHuHKc1CsGZQ1ltHUHyhYK+7e4re3bVFi16SOpLpDfzdFswnvFQs2Rg==",
|
|
SecurityStamp = "4830e359-e150-4eae-be2a-996c81c5e609",
|
|
Key = "2.z/eLKFhd62qy9RzXu3UHgA==|fF6yNupiCIguFKSDTB3DoqcGR0Xu4j+9VlnMyT5F3PaWIcGhzQKIzxdB95nhslaCQv3c63M7LBnvzVo1J9SUN85RMbP/57bP1HvhhU1nvL8=|IQPtf8v7k83MFZEhazSYXSdu98BBU5rqtvC4keVWyHM=",
|
|
PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Ww2chogqCpaAR7Uw448am4b7vDFXiM5kXjFlGfXBlrAdAqTTggEvTDlMNYqPlCo+mBM6iFmTTUY9rpZBvFskMnKvsvpJ47/fehAH2o2e3Ulv/5NFevaVCMCmpkBDtbMbO1A4a3btdRtCP8DsKWMefHauEpaoLxNTLWnOIZVfCMjsSgx2EvULHAZPTtbFwm4+UVKniM4ds4jvOsD85h4jn2aLs/jWJXFfxN8iVSqEqpC2TBvsPdyHb49xQoWWfF0Z6BiNqeNGKEU9Uos1pjL+kzhEzzSpH31PZT/ufJ/oo4+93wrUt57hb6f0jxiXhwd5yQ+9F6wVwpbfkq0IwhjOwIDAQAB",
|
|
PrivateKey = "2.yN7l00BOlUE0Sb0M//Q53w==|EwKG/BduQRQ33Izqc/ogoBROIoI5dmgrxSo82sgzgAMIBt3A2FZ9vPRMY+GWT85JiqytDitGR3TqwnFUBhKUpRRAq4x7rA6A1arHrFp5Tp1p21O3SfjtvB3quiOKbqWk6ZaU1Np9HwqwAecddFcB0YyBEiRX3VwF2pgpAdiPbSMuvo2qIgyob0CUoC/h4Bz1be7Qa7B0Xw9/fMKkB1LpOm925lzqosyMQM62YpMGkjMsbZz0uPopu32fxzDWSPr+kekNNyLt9InGhTpxLmq1go/pXR2uw5dfpXc5yuta7DB0EGBwnQ8Vl5HPdDooqOTD9I1jE0mRyuBpWTTI3FRnu3JUh3rIyGBJhUmHqGZvw2CKdqHCIrQeQkkEYqOeJRJVdBjhv5KGJifqT3BFRwX/YFJIChAQpebNQKXe/0kPivWokHWwXlDB7S7mBZzhaAPidZvnuIhalE2qmTypDwHy22FyqV58T8MGGMchcASDi/QXI6kcdpJzPXSeU9o+NC68QDlOIrMVxKFeE7w7PvVmAaxEo0YwmuAzzKy9QpdlK0aab/xEi8V4iXj4hGepqAvHkXIQd+r3FNeiLfllkb61p6WTjr5urcmDQMR94/wYoilpG5OlybHdbhsYHvIzYoLrC7fzl630gcO6t4nM24vdB6Ymg9BVpEgKRAxSbE62Tqacxqnz9AcmgItb48NiR/He3n3ydGjPYuKk/ihZMgEwAEZvSlNxYONSbYrIGDtOY+8Nbt6KiH3l06wjZW8tcmFeVlWv+tWotnTY9IqlAfvNVTjtsobqtQnvsiDjdEVtNy/s2ci5TH+NdZluca2OVEr91Wayxh70kpM6ib4UGbfdmGgCo74gtKvKSJU0rTHakQ5L9JlaSDD5FamBRyI0qfL43Ad9qOUZ8DaffDCyuaVyuqk7cz9HwmEmvWU3VQ+5t06n/5kRDXttcw8w+3qClEEdGo1KeENcnXCB32dQe3tDTFpuAIMLqwXs6FhpawfZ5kPYvLPczGWaqftIs/RXJ/EltGc0ugw2dmTLpoQhCqrcKEBDoYVk0LDZKsnzitOGdi9mOWse7Se8798ib1UsHFUjGzISEt6upestxOeupSTOh0v4+AjXbDzRUyogHww3V+Bqg71bkcMxtB+WM+pn1XNbVTyl9NR040nhP7KEf6e9ruXAtmrBC2ah5cFEpLIot77VFZ9ilLuitSz+7T8n1yAh1IEG6xxXxninAZIzi2qGbH69O5RSpOJuJTv17zTLJQIIc781JwQ2TTwTGnx5wZLbffhCasowJKd2EVcyMJyhz6ru0PvXWJ4hUdkARJs3Xu8dus9a86N8Xk6aAPzBDqzYb1vyFIfBxP0oO8xFHgd30Cgmz8UrSE3qeWRrF8ftrI6xQnFjHBGWD/JWSvd6YMcQED0aVuQkuNW9ST/DzQThPzRfPUoiL10yAmV7Ytu4fR3x2sF0Yfi87YhHFuCMpV/DsqxmUizyiJuD938eRcH8hzR/VO53Qo3UIsqOLcyXtTv6THjSlTopQ+JOLOnHm1w8dzYbLN44OG44rRsbihMUQp+wUZ6bsI8rrOnm9WErzkbQFbrfAINdoCiNa6cimYIjvvnMTaFWNymqY1vZxGztQiMiHiHYwTfwHTXrb9j0uPM=|09J28iXv9oWzYtzK2LBT6Yht4IT4MijEkk0fwFdrVQ4=",
|
|
ApiKey = "7gp59kKHt9kMlks0BuNC4IjNXYkljR",
|
|
|
|
Kdf = KdfType.PBKDF2_SHA256,
|
|
KdfIterations = 600_000,
|
|
};
|
|
}
|
|
|
|
public Dictionary<string, string?> GetMangleMap(User user, UserData expectedUserData)
|
|
{
|
|
var mangleMap = new Dictionary<string, string?>
|
|
{
|
|
{ expectedUserData.Email, user.Email },
|
|
};
|
|
|
|
return mangleMap;
|
|
}
|
|
}
|