Remotely/Tests/Server.Tests/TestData.cs
2023-06-22 13:40:05 -07:00

174 lines
6.6 KiB
C#

using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using Remotely.Server.Areas.Identity.Pages.Account.Manage;
using Remotely.Server.Data;
using Remotely.Server.Services;
using Remotely.Shared.Models;
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace Remotely.Tests
{
public class TestData
{
#region Organization1
public Organization Org1 => Org1Admin1.Organization;
public RemotelyUser Org1Admin1 { get; } = new()
{
UserName = "org1admin1@test.com",
IsAdministrator = true,
IsServerAdmin = true,
Organization = new Organization(),
UserOptions = new RemotelyUserOptions()
};
public RemotelyUser Org1Admin2 { get; private set; }
public Device Org1Device1 { get; private set; } = new Device()
{
ID = "Org1Device1",
DeviceName = "Org1Device1Name"
};
public Device Org1Device2 { get; private set; } = new Device()
{
ID = "Org1Device2",
DeviceName = "Org1Device2Name"
};
public DeviceGroup Org1Group1 { get; private set; } = new DeviceGroup()
{
Name = "Org1Group1"
};
public DeviceGroup Org1Group2 { get; private set; } = new DeviceGroup()
{
Name = "Org1Group2"
};
public string Org1Id => Org1.ID;
public RemotelyUser Org1User1 { get; private set; }
public RemotelyUser Org1User2 { get; private set; }
#endregion
#region Organization2
public Organization Org2 => Org2Admin1.Organization;
public RemotelyUser Org2Admin1 { get; } = new()
{
UserName = "org2admin1@test.com",
IsAdministrator = true,
IsServerAdmin = false,
Organization = new Organization(),
UserOptions = new RemotelyUserOptions()
};
public RemotelyUser Org2Admin2 { get; private set; }
public Device Org2Device1 { get; private set; } = new Device()
{
ID = "Org2Device1",
DeviceName = "Org2Device1Name"
};
public Device Org2Device2 { get; private set; } = new Device()
{
ID = "Org2Device2",
DeviceName = "Org2Device2Name"
};
public DeviceGroup Org2Group1 { get; private set; } = new DeviceGroup()
{
Name = "Org2Group1"
};
public DeviceGroup Org2Group2 { get; private set; } = new DeviceGroup()
{
Name = "Org2Group2"
};
public string Org2Id => Org2.ID;
public RemotelyUser Org2User1 { get; private set; }
public RemotelyUser Org2User2 { get; private set; }
#endregion
public void ClearData()
{
var dbContext = IoCActivator.ServiceProvider.GetRequiredService<AppDb>();
dbContext.Devices.RemoveRange(dbContext.Devices.ToList());
dbContext.DeviceGroups.RemoveRange(dbContext.DeviceGroups.ToList());
dbContext.Users.RemoveRange(dbContext.Users.ToList());
dbContext.Organizations.RemoveRange(dbContext.Organizations.ToList());
dbContext.Alerts.RemoveRange(dbContext.Alerts.ToList());
dbContext.ScriptResults.RemoveRange(dbContext.ScriptResults.ToList());
dbContext.ScriptRuns.RemoveRange(dbContext.ScriptRuns.ToList());
dbContext.ScriptSchedules.RemoveRange(dbContext.ScriptSchedules.ToList());
dbContext.SavedScripts.RemoveRange(dbContext.SavedScripts.ToList());
dbContext.SaveChanges();
}
public async Task Init()
{
ClearData();
var dataService = IoCActivator.ServiceProvider.GetRequiredService<IDataService>();
var userManager = IoCActivator.ServiceProvider.GetRequiredService<UserManager<RemotelyUser>>();
var emailSender = IoCActivator.ServiceProvider.GetRequiredService<IEmailSenderEx>();
// Organization 1
await userManager.CreateAsync(Org1Admin1);
await dataService.CreateUser("org1admin2@test.com", true, Org1Admin1.OrganizationID);
Org1Admin2 = dataService.GetUserByNameWithOrg("org1admin2@test.com");
await dataService.CreateUser("org1testuser1@test.com", false, Org1Admin1.OrganizationID);
Org1User1 = dataService.GetUserByNameWithOrg("org1testuser1@test.com");
await dataService.CreateUser("org1testuser2@test.com", false, Org1Admin1.OrganizationID);
Org1User2 = dataService.GetUserByNameWithOrg("org1testuser2@test.com");
Org1Device1.OrganizationID = Org1Admin1.OrganizationID;
await dataService.AddOrUpdateDevice(Org1Device1); ;
Org1Device2.OrganizationID = Org1Admin1.OrganizationID;
await dataService.AddOrUpdateDevice(Org1Device2);
dataService.AddDeviceGroup(Org1Admin1.OrganizationID, Org1Group1, out _, out _);
dataService.AddDeviceGroup(Org1Admin1.OrganizationID, Org1Group2, out _, out _);
var deviceGroups1 = dataService.GetDeviceGroups(Org1Admin1.UserName);
Org1Group1 = deviceGroups1.First(x => x.Name == Org1Group1.Name);
Org1Group2 = deviceGroups1.First(x => x.Name == Org1Group2.Name);
// Organization 2
await userManager.CreateAsync(Org2Admin1);
await dataService.CreateUser("org2admin2@test.com", true, Org2Admin1.OrganizationID);
Org2Admin2 = dataService.GetUserByNameWithOrg("org2admin2@test.com");
await dataService.CreateUser("org2testuser1@test.com", false, Org2Admin1.OrganizationID);
Org2User1 = dataService.GetUserByNameWithOrg("org2testuser1@test.com");
await dataService.CreateUser("org2testuser2@test.com", false, Org2Admin1.OrganizationID);
Org2User2 = dataService.GetUserByNameWithOrg("org2testuser2@test.com");
Org2Device1.OrganizationID = Org2Admin1.OrganizationID;
await dataService.AddOrUpdateDevice(Org2Device1); ;
Org2Device2.OrganizationID = Org2Admin1.OrganizationID;
await dataService.AddOrUpdateDevice(Org2Device2);
dataService.AddDeviceGroup(Org2Admin1.OrganizationID, Org2Group1, out _, out _);
dataService.AddDeviceGroup(Org2Admin1.OrganizationID, Org2Group2, out _, out _);
var deviceGroups2 = dataService.GetDeviceGroups(Org2Admin1.UserName);
Org2Group1 = deviceGroups2.First(x => x.Name == Org2Group1.Name);
Org2Group2 = deviceGroups2.First(x => x.Name == Org2Group2.Name);
}
}
}