diff --git a/Agent.Installer.Win/Agent.Installer.Win.csproj b/Agent.Installer.Win/Agent.Installer.Win.csproj
index 310b1431..e05b6e8f 100644
--- a/Agent.Installer.Win/Agent.Installer.Win.csproj
+++ b/Agent.Installer.Win/Agent.Installer.Win.csproj
@@ -43,6 +43,50 @@
app.manifest
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ x64
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll
diff --git a/Agent/Services/DeviceSocket.cs b/Agent/Services/DeviceSocket.cs
index 4f3e10e8..65103749 100644
--- a/Agent/Services/DeviceSocket.cs
+++ b/Agent/Services/DeviceSocket.cs
@@ -60,7 +60,7 @@ namespace Remotely.Agent.Services
await HubConnection.StartAsync();
- var device = await DeviceInformation.Create(ConnectionInfo);
+ var device = await DeviceInformation.Create(ConnectionInfo.DeviceID, ConnectionInfo.OrganizationID);
var result = await HubConnection.InvokeAsync("DeviceCameOnline", device);
@@ -98,7 +98,7 @@ namespace Remotely.Agent.Services
public async Task SendHeartbeat()
{
- var currentInfo = await DeviceInformation.Create(ConnectionInfo);
+ var currentInfo = await DeviceInformation.Create(ConnectionInfo.DeviceID, ConnectionInfo.OrganizationID);
await HubConnection.InvokeAsync("DeviceHeartbeat", currentInfo);
}
diff --git a/Remotely.sln b/Remotely.sln
index 58206189..56f5abb2 100644
--- a/Remotely.sln
+++ b/Remotely.sln
@@ -47,7 +47,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Desktop.Win", "Desktop.Win\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Agent.Installer.Win", "Agent.Installer.Win\Agent.Installer.Win.csproj", "{A3D0368C-0850-4614-B5B5-41B9D5135AA9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{48D9D0E6-5781-44A9-84C0-56F56C2A1193}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{48D9D0E6-5781-44A9-84C0-56F56C2A1193}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -157,28 +157,28 @@ Global
{6B726FC4-A907-4813-BF38-3342E02AA8D2}.Release|x86.Build.0 = Release|x86
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.Build.0 = Debug|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.Build.0 = Debug|Any CPU
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.ActiveCfg = Debug|x64
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x64.Build.0 = Debug|x64
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.ActiveCfg = Debug|x86
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Debug|x86.Build.0 = Debug|x86
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|Any CPU.Build.0 = Release|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x64.ActiveCfg = Release|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x64.Build.0 = Release|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x86.ActiveCfg = Release|Any CPU
- {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x86.Build.0 = Release|Any CPU
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x64.ActiveCfg = Release|x64
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x64.Build.0 = Release|x64
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x86.ActiveCfg = Release|x86
+ {A3D0368C-0850-4614-B5B5-41B9D5135AA9}.Release|x86.Build.0 = Release|x86
{48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x64.ActiveCfg = Debug|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x64.Build.0 = Debug|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x86.ActiveCfg = Debug|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x86.Build.0 = Debug|Any CPU
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x64.ActiveCfg = Debug|x64
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x64.Build.0 = Debug|x64
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x86.ActiveCfg = Debug|x86
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Debug|x86.Build.0 = Debug|x86
{48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|Any CPU.Build.0 = Release|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x64.ActiveCfg = Release|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x64.Build.0 = Release|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x86.ActiveCfg = Release|Any CPU
- {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x86.Build.0 = Release|Any CPU
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x64.ActiveCfg = Release|x64
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x64.Build.0 = Release|x64
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x86.ActiveCfg = Release|x86
+ {48D9D0E6-5781-44A9-84C0-56F56C2A1193}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Server/API/OrganizationManagementController.cs b/Server/API/OrganizationManagementController.cs
index d58dc90f..6954d936 100644
--- a/Server/API/OrganizationManagementController.cs
+++ b/Server/API/OrganizationManagementController.cs
@@ -249,14 +249,20 @@ namespace Remotely.Server.API
if (!DataService.DoesUserExist(invite.InvitedUser))
{
- var user = new RemotelyUser { UserName = invite.InvitedUser, Email = invite.InvitedUser, OrganizationID = orgID };
+ var user = new RemotelyUser
+ {
+ UserName = invite.InvitedUser,
+ Email = invite.InvitedUser,
+ OrganizationID = orgID,
+ IsAdministrator = invite.IsAdmin
+ };
var result = await UserManager.CreateAsync(user);
if (result.Succeeded)
{
- if (!DataService.SetNewUserProperties(user.UserName, orgID, invite.IsAdmin))
- {
- return BadRequest();
- }
+ //if (!DataService.SetNewUserProperties(user.UserName, orgID, invite.IsAdmin))
+ //{
+ // return BadRequest();
+ //}
user = await UserManager.FindByEmailAsync(invite.InvitedUser);
diff --git a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs
index c11e7c34..03e0281e 100644
--- a/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs
+++ b/Server/Areas/Identity/Pages/Account/Manage/Organization.cshtml.cs
@@ -57,6 +57,40 @@ namespace Remotely.Server.Areas.Identity.Pages.Account.Manage
public async Task OnPostSendInviteAsync()
{
var currentUser = await UserManager.FindByEmailAsync(User.Identity.Name);
+ return await SendInvite(currentUser);
+ }
+
+ public async Task OnPostCreateDeviceGroupAsync()
+ {
+ var currentUser = await UserManager.FindByEmailAsync(User.Identity.Name);
+ if (!currentUser.IsAdministrator)
+ {
+ return RedirectToPage("Index");
+ }
+
+ if (ModelState.IsValid)
+ {
+ var deviceGroup = new DeviceGroup()
+ {
+ Name = Input.DeviceGroupName
+ };
+
+ var result = DataService.AddDeviceGroup(currentUser.OrganizationID, deviceGroup, out _, out var errorMessage);
+ if (!result)
+ {
+ PopulateViewModel();
+ ModelState.AddModelError("AddDeviceGroup", errorMessage);
+ return Page();
+ }
+ StatusMessage = "Device group created.";
+ return RedirectToPage();
+ }
+ PopulateViewModel();
+ return Page();
+ }
+
+ public async Task SendInvite(RemotelyUser currentUser)
+ {
if (!currentUser.IsAdministrator)
{
return RedirectToPage("Index");
@@ -66,15 +100,22 @@ namespace Remotely.Server.Areas.Identity.Pages.Account.Manage
{
if (!DataService.DoesUserExist(Input.UserEmail))
{
- var user = new RemotelyUser { UserName = Input.UserEmail, Email = Input.UserEmail };
+ var user = new RemotelyUser
+ {
+ UserName = Input.UserEmail,
+ Email = Input.UserEmail,
+ OrganizationID = currentUser.OrganizationID,
+ Organization = currentUser.Organization,
+ IsAdministrator = Input.IsAdmin
+ };
var result = await UserManager.CreateAsync(user);
if (result.Succeeded)
{
- if (!DataService.SetNewUserProperties(user.UserName, currentUser.OrganizationID, Input.IsAdmin))
- {
- ModelState.AddModelError("OrgID", "Failed to set organization ID.");
- return Page();
- }
+ //if (!DataService.SetNewUserProperties(user.UserName, currentUser.OrganizationID, Input.IsAdmin))
+ //{
+ // ModelState.AddModelError("OrgID", "Failed to set organization ID.");
+ // return Page();
+ //}
user = await UserManager.FindByEmailAsync(Input.UserEmail);
@@ -118,35 +159,6 @@ namespace Remotely.Server.Areas.Identity.Pages.Account.Manage
return Page();
}
- public async Task OnPostCreateDeviceGroupAsync()
- {
- var currentUser = await UserManager.FindByEmailAsync(User.Identity.Name);
- if (!currentUser.IsAdministrator)
- {
- return RedirectToPage("Index");
- }
-
- if (ModelState.IsValid)
- {
- var deviceGroup = new DeviceGroup()
- {
- Name = Input.DeviceGroupName
- };
-
- var result = DataService.AddDeviceGroup(currentUser.OrganizationID, deviceGroup, out _, out var errorMessage);
- if (!result)
- {
- PopulateViewModel();
- ModelState.AddModelError("AddDeviceGroup", errorMessage);
- return Page();
- }
- StatusMessage = "Device group created.";
- return RedirectToPage();
- }
- PopulateViewModel();
- return Page();
- }
-
private void PopulateViewModel()
{
OrganizationName = DataService.GetOrganizationName(User.Identity.Name);
diff --git a/Shared/Services/DeviceInformation.cs b/Shared/Services/DeviceInformation.cs
index 94c6d880..7a58b1ee 100644
--- a/Shared/Services/DeviceInformation.cs
+++ b/Shared/Services/DeviceInformation.cs
@@ -14,7 +14,7 @@ namespace Remotely.Shared.Services
{
public class DeviceInformation
{
- public static async Task Create(ConnectionInfo connectionInfo)
+ public static async Task Create(string deviceID, string orgID)
{
OSPlatform platform = OSUtils.GetPlatform();
@@ -24,7 +24,7 @@ namespace Remotely.Shared.Services
var device = new Device()
{
- ID = connectionInfo.DeviceID,
+ ID = deviceID,
DeviceName = Environment.MachineName,
Platform = platform.ToString(),
ProcessorCount = Environment.ProcessorCount,
@@ -42,7 +42,7 @@ namespace Remotely.Shared.Services
TotalSize = x.TotalSize > 0 ? Math.Round((double)(x.TotalSize / 1024 / 1024 / 1024), 2) : 0,
VolumeLabel = x.VolumeLabel
}).ToList(),
- OrganizationID = connectionInfo.OrganizationID,
+ OrganizationID = orgID,
CurrentUser = DeviceInformation.GetCurrentUser()
};
@@ -53,11 +53,11 @@ namespace Remotely.Shared.Services
}
- var (usedMemory, totalMemory) = DeviceInformation.GetMemoryInGB();
+ var (usedMemory, totalMemory) = GetMemoryInGB();
device.UsedMemory = usedMemory;
device.TotalMemory = totalMemory;
- device.CpuUtilization = await DeviceInformation.GetCpuUtilization();
+ device.CpuUtilization = await GetCpuUtilization();
if (File.Exists("Remotely_Agent.dll"))
{
diff --git a/Tests/DataServiceTests.cs b/Tests/DataServiceTests.cs
index 15eba44f..01d3152c 100644
--- a/Tests/DataServiceTests.cs
+++ b/Tests/DataServiceTests.cs
@@ -3,14 +3,17 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Remotely.Server.Data;
using Remotely.Server.Services;
using Remotely.Shared.Models;
+using Remotely.Shared.Services;
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -19,47 +22,81 @@ namespace Remotely.Tests
[TestClass]
public class DataServiceTests
{
- [ClassInitialize]
- public static void ClassInit(TestContext context)
- {
- IoCActivator.Activate();
- }
-
-
private DataService DataService { get; set; }
- private DataService GetDataService()
+ [TestInitialize]
+ public async Task TestInit()
{
- //var contextOptions = new DbContextOptions();
- //var appDbContext = new ApplicationDbContext(contextOptions);
- //var appConfig = new ApplicationConfig(new ConfigurationRoot());
- //var dataService = new DataService(appDbContext);
+ await TestData.PopulateTestData();
+ DataService = IoCActivator.ServiceProvider.GetRequiredService();
+ }
- //return dataService;
- return null;
+ [TestCleanup]
+ public void TestCleanup()
+ {
+ TestData.ClearData();
}
[TestMethod]
- public async Task Test()
+ [DoNotParallelize]
+ public void VerifyInitialData()
{
- var dataService = IoCActivator.ServiceProvider.GetRequiredService();
- var userManager = IoCActivator.ServiceProvider.GetRequiredService >();
+ Assert.IsNotNull(DataService.GetUserByName(TestData.Admin1.UserName));
+ Assert.IsNotNull(DataService.GetUserByName(TestData.Admin2.UserName));
+ Assert.IsNotNull(DataService.GetUserByName(TestData.User1.UserName));
+ Assert.IsNotNull(DataService.GetUserByName(TestData.User2.UserName));
+ Assert.AreEqual(1, DataService.GetOrganizationCount());
- Assert.IsNull(dataService.GetUserByName(TestData.TestAdmin1.UserName));
- Assert.AreEqual(0, dataService.GetOrganizationCount());
+ var devices = DataService.GetAllDevices(TestData.Admin1.OrganizationID);
- await userManager.CreateAsync(TestData.TestAdmin1);
+ Assert.AreEqual(2, devices.Count());
+ Assert.IsTrue(devices.Any(x => x.ID == "Device1"));
+ Assert.IsTrue(devices.Any(x => x.ID == "Device2"));
- Assert.IsNotNull(dataService.GetUserByName(TestData.TestAdmin1.UserName));
- Assert.AreEqual(1, dataService.GetOrganizationCount());
+ var orgIDs = new string[]
+ {
+ TestData.Group1.OrganizationID,
+ TestData.Group2.OrganizationID,
+ TestData.Admin1.OrganizationID,
+ TestData.Admin2.OrganizationID,
+ TestData.User1.OrganizationID,
+ TestData.User2.OrganizationID,
+ TestData.Device1.OrganizationID,
+ TestData.Device2.OrganizationID
+ };
+
+ Assert.IsTrue(orgIDs.All(x => x == TestData.Admin1.OrganizationID));
}
+
[TestMethod]
- public void Test2()
+ [DoNotParallelize]
+ public void UpdateOrganizationName()
{
- var test = IoCActivator.ServiceProvider;
+ Assert.IsTrue(string.IsNullOrWhiteSpace(TestData.Admin1.Organization.OrganizationName));
+ DataService.UpdateOrganizationName(TestData.Admin1.OrganizationID, "Test Org");
+ Assert.AreEqual(TestData.Admin1.Organization.OrganizationName, "Test Org");
}
+
+ [TestMethod]
+ [DoNotParallelize]
+ public void DeviceGroupPermissions()
+ {
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.Admin1.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.Admin2.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.User1.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.User2.UserName).Count() == 2);
+
+ var groupID = DataService.GetDeviceGroups(TestData.Admin1.UserName).First().ID;
+
+ DataService.UpdateDevice(TestData.Device1.ID, "", "", groupID);
+ DataService.AddUserToDeviceGroup(TestData.Admin1.OrganizationID, groupID, TestData.User1.UserName, out _);
+
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.Admin1.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.Admin2.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.User1.UserName).Count() == 2);
+ Assert.IsTrue(DataService.GetDevicesForUser(TestData.User2.UserName).Count() == 1);
+ }
}
-
}
diff --git a/Tests/IoCActivator.cs b/Tests/IoCActivator.cs
index 2671a7cc..93e0ed7b 100644
--- a/Tests/IoCActivator.cs
+++ b/Tests/IoCActivator.cs
@@ -11,9 +11,13 @@ using Microsoft.EntityFrameworkCore.InMemory.Internal;
using Microsoft.EntityFrameworkCore;
using Remotely.Shared.Models;
using Microsoft.AspNetCore.Identity;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity.UI.Services;
namespace Remotely.Tests
{
+ [TestClass]
public class IoCActivator
{
public static IServiceProvider ServiceProvider { get; set; }
@@ -30,6 +34,13 @@ namespace Remotely.Tests
builder.Build();
}
}
+
+
+ [AssemblyInitialize]
+ public static void AssemblyInit(TestContext context)
+ {
+ Activate();
+ }
}
public class Startup
@@ -44,14 +55,17 @@ namespace Remotely.Tests
.AddDefaultUI()
.AddDefaultTokenProviders();
- services.AddScoped();
- services.AddScoped();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
IoCActivator.ServiceProvider = services.BuildServiceProvider();
}
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ApplicationDbContext context, DataService dataService)
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
+
+
}
diff --git a/Tests/TestData.cs b/Tests/TestData.cs
index 9cf6f7d2..ad656060 100644
--- a/Tests/TestData.cs
+++ b/Tests/TestData.cs
@@ -1,16 +1,110 @@
-using Remotely.Shared.Models;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.AspNetCore.Identity.UI.Services;
+using Microsoft.Extensions.DependencyInjection;
+using Remotely.Server.Areas.Identity.Pages.Account.Manage;
+using Remotely.Server.Data;
+using Remotely.Server.Services;
+using Remotely.Shared.Models;
+using Remotely.Shared.Services;
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
+using System.Threading.Tasks;
namespace Remotely.Tests
{
public class TestData
{
- public static RemotelyUser TestAdmin1 { get; } = new RemotelyUser()
+ public static RemotelyUser Admin1 { get; } = new RemotelyUser()
{
- UserName = "testadmin1@test.com",
+ UserName = "admin1@test.com",
IsAdministrator = true
};
+
+ public static RemotelyUser Admin2 { get; private set; } = new RemotelyUser()
+ {
+ UserName = "admin2@test.com",
+ IsAdministrator = true
+ };
+
+ public static RemotelyUser User1 { get; private set; } = new RemotelyUser()
+ {
+ UserName = "testuser1@test.com",
+ IsAdministrator = false
+ };
+
+ public static RemotelyUser User2 { get; private set; } = new RemotelyUser()
+ {
+ UserName = "testuser2@test.com",
+ IsAdministrator = false
+ };
+
+ public static DeviceGroup Group1 { get; private set; } = new DeviceGroup()
+ {
+ Name = "Group1"
+ };
+
+ public static DeviceGroup Group2 { get; private set; } = new DeviceGroup()
+ {
+ Name = "Group2"
+ };
+
+ public static Device Device1 { get; private set; } = new Device()
+ {
+ ID = "Device1"
+ };
+
+ public static Device Device2 { get; private set; } = new Device()
+ {
+ ID = "Device2"
+ };
+
+ public static void ClearData()
+ {
+ var dbContext = IoCActivator.ServiceProvider.GetRequiredService();
+ dbContext.Devices.RemoveRange(dbContext.Devices.ToList());
+ dbContext.DeviceGroups.RemoveRange(dbContext.DeviceGroups.ToList());
+ dbContext.Users.RemoveRange(dbContext.Users.ToList());
+ dbContext.SaveChanges();
+
+ }
+
+ public static async Task PopulateTestData()
+ {
+ var dataService = IoCActivator.ServiceProvider.GetRequiredService();
+ var userManager = IoCActivator.ServiceProvider.GetRequiredService>();
+ var emailSender = IoCActivator.ServiceProvider.GetRequiredService();
+ var organizationModel = new OrganizationModel(dataService, userManager, emailSender);
+
+
+ await userManager.CreateAsync(Admin1);
+
+ organizationModel.Input.UserEmail = Admin2.UserName;
+ organizationModel.Input.IsAdmin = true;
+ await organizationModel.SendInvite(Admin1);
+ Admin2 = await userManager.FindByNameAsync(Admin2.UserName);
+
+ organizationModel.Input.UserEmail = User1.UserName;
+ organizationModel.Input.IsAdmin = false;
+ await organizationModel.SendInvite(Admin1);
+ User1 = await userManager.FindByNameAsync(User1.UserName);
+
+ organizationModel.Input.UserEmail = User2.UserName;
+ organizationModel.Input.IsAdmin = false;
+ await organizationModel.SendInvite(Admin1);
+ User2 = await userManager.FindByNameAsync(User2.UserName);
+
+ Device1.OrganizationID = Admin1.OrganizationID;
+ dataService.AddOrUpdateDevice(Device1, out _);
+ Device2.OrganizationID = Admin1.OrganizationID;
+ dataService.AddOrUpdateDevice(Device2, out _);
+
+ dataService.AddDeviceGroup(Admin1.OrganizationID, Group1, out _, out _);
+ dataService.AddDeviceGroup(Admin1.OrganizationID, Group2, out _, out _);
+ var deviceGroups = dataService.GetDeviceGroups(Admin1.UserName);
+ Group1 = deviceGroups.First(x => x.Name == Group1.Name);
+ Group2 = deviceGroups.First(x => x.Name == Group2.Name);
+ }
}
}
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index 6a911dc6..d4525811 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -8,6 +8,8 @@
Remotely.Tests
Remotely_Tests
+
+ AnyCPU;x64;x86