Skip to content

Commit fb0bfe4

Browse files
committed
Update tests.
1 parent 593944f commit fb0bfe4

2 files changed

Lines changed: 57 additions & 46 deletions

File tree

Server/Services/DataService.cs

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,16 +1159,18 @@ public int GetDeviceCount(RemotelyUser user)
11591159
{
11601160
using var dbContext = _appDbFactory.GetContext();
11611161

1162-
return dbContext.Devices
1163-
.Include(x => x.DeviceGroup)
1164-
.ThenInclude(x => x.Users)
1165-
.Count(x =>
1166-
x.OrganizationID == user.OrganizationID &&
1167-
(
1168-
user.IsAdministrator ||
1169-
string.IsNullOrWhiteSpace(x.DeviceGroupID) ||
1170-
x.DeviceGroup.Users.Any(deviceUser => deviceUser.Id == user.Id)
1171-
));
1162+
if (user.IsAdministrator)
1163+
{
1164+
return GetDeviceCount();
1165+
}
1166+
1167+
return dbContext.Users
1168+
.Include(x => x.DeviceGroups)
1169+
.ThenInclude(x => x.Devices)
1170+
.Where(x => x.Id == user.Id)
1171+
.SelectMany(x => x.DeviceGroups)
1172+
.SelectMany(x => x.Devices)
1173+
.Count();
11721174
}
11731175

11741176
public async Task<DeviceGroup> GetDeviceGroup(
@@ -1257,27 +1259,30 @@ public Device[] GetDevicesForUser(string userName)
12571259
return Array.Empty<Device>();
12581260
}
12591261

1260-
var user = dbContext.Users.FirstOrDefault(x => x.UserName == userName);
1262+
var user = dbContext.Users
1263+
.AsNoTracking()
1264+
.FirstOrDefault(x => x.UserName == userName);
12611265

12621266
if (user is null)
12631267
{
12641268
return Array.Empty<Device>();
12651269
}
12661270

1267-
var deviceIds = dbContext.Devices
1268-
.Include(x => x.DeviceGroup)
1269-
.ThenInclude(x => x.Users)
1270-
.Where(x =>
1271-
x.OrganizationID == user.OrganizationID &&
1272-
(
1273-
user.IsAdministrator ||
1274-
string.IsNullOrWhiteSpace(x.DeviceGroupID) ||
1275-
x.DeviceGroup.Users.Any(deviceUser => deviceUser.Id == user.Id)
1276-
))
1277-
.Select(x => x.ID);
1271+
if (user.IsAdministrator)
1272+
{
1273+
return dbContext.Devices
1274+
.AsNoTracking()
1275+
.Where(x => x.OrganizationID == user.OrganizationID)
1276+
.ToArray();
1277+
}
12781278

1279-
return dbContext.Devices
1280-
.Where(x => deviceIds.Contains(x.ID))
1279+
return dbContext.Users
1280+
.AsNoTracking()
1281+
.Include(x => x.DeviceGroups)
1282+
.ThenInclude(x => x.Devices)
1283+
.Where(x => x.UserName == userName)
1284+
.SelectMany(x => x.DeviceGroups)
1285+
.SelectMany(x => x.Devices)
12811286
.ToArray();
12821287
}
12831288

Tests/Server.Tests/DataServiceTests.cs

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ namespace Remotely.Tests
1414
[TestClass]
1515
public class DataServiceTests
1616
{
17+
private readonly string _newDeviceID = "NewDeviceName";
1718
private IDataService _dataService;
1819
private TestData _testData;
19-
private string _newDeviceID = "NewDeviceName";
2020

2121
[TestMethod]
2222
public async Task AddAlert()
@@ -75,32 +75,46 @@ public async Task CreateDevice()
7575
[TestMethod]
7676
public void DeviceGroupPermissions()
7777
{
78-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1Admin1.UserName).Count() == 2);
79-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1Admin2.UserName).Count() == 2);
80-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1User1.UserName).Count() == 2);
81-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1User2.UserName).Count() == 2);
78+
Assert.AreEqual(2, _dataService.GetDevicesForUser(_testData.Org1Admin1.UserName).Length);
79+
Assert.AreEqual(2, _dataService.GetDevicesForUser(_testData.Org1Admin2.UserName).Length);
80+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org1User1.UserName).Length);
81+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org1User2.UserName).Length);
82+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org2User1.UserName).Length);
83+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org2User2.UserName).Length);
8284

83-
var groupID = _dataService.GetDeviceGroups(_testData.Org1Admin1.UserName).First().ID;
85+
Assert.IsTrue(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1Admin1));
86+
Assert.IsTrue(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1Admin2));
87+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1User1));
88+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1User2));
89+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org2User1));
90+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org2User2));
8491

85-
_dataService.UpdateDevice(_testData.Org1Device1.ID, "", "", groupID, "");
92+
var groupID = _testData.Org1Group1.ID;
8693
_dataService.AddUserToDeviceGroup(_testData.Org1Id, groupID, _testData.Org1User1.UserName, out _);
94+
_testData.Org1Device1.DeviceGroupID = groupID;
95+
_dataService.UpdateDevice(_testData.Org1Device1.ID, "", "", groupID, "");
8796

88-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1Admin1.UserName).Count() == 2);
89-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1Admin2.UserName).Count() == 2);
90-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1User1.UserName).Count() == 2);
91-
Assert.IsTrue(_dataService.GetDevicesForUser(_testData.Org1User2.UserName).Count() == 1);
97+
Assert.AreEqual(2, _dataService.GetDevicesForUser(_testData.Org1Admin1.UserName).Length);
98+
Assert.AreEqual(2, _dataService.GetDevicesForUser(_testData.Org1Admin2.UserName).Length);
99+
Assert.AreEqual(1, _dataService.GetDevicesForUser(_testData.Org1User1.UserName).Length);
100+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org1User2.UserName).Length);
101+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org2User1.UserName).Length);
102+
Assert.AreEqual(0, _dataService.GetDevicesForUser(_testData.Org2User2.UserName).Length);
92103

93104
Assert.IsTrue(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1Admin1));
94105
Assert.IsTrue(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1Admin2));
95106
Assert.IsTrue(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1User1));
96107
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org1User2));
108+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org2User1));
109+
Assert.IsFalse(_dataService.DoesUserHaveAccessToDevice(_testData.Org1Device1.ID, _testData.Org2User2));
97110

98111
var allDevices = _dataService.GetAllDevices(_testData.Org1Id).Select(x => x.ID).ToArray();
99-
100112
Assert.AreEqual(2, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1Admin1).Length);
101113
Assert.AreEqual(2, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1Admin2).Length);
102-
Assert.AreEqual(2, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1User1).Length);
103-
Assert.AreEqual(1, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1User2).Length);
114+
Assert.AreEqual(1, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1User1).Length);
115+
Assert.AreEqual(0, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org1User2).Length);
116+
Assert.AreEqual(0, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org2User1).Length);
117+
Assert.AreEqual(0, _dataService.FilterDeviceIDsByUserPermission(allDevices, _testData.Org2User2).Length);
104118
}
105119

106120
[TestMethod]
@@ -179,14 +193,6 @@ public async Task TestInit()
179193
_testData = new TestData();
180194
await _testData.Init();
181195
_dataService = IoCActivator.ServiceProvider.GetRequiredService<IDataService>();
182-
183-
var newDevice = new Device()
184-
{
185-
ID = _newDeviceID,
186-
DeviceName = Environment.MachineName,
187-
Is64Bit = Environment.Is64BitOperatingSystem,
188-
OrganizationID = _testData.Org1Id
189-
};
190196
}
191197

192198
[TestMethod]

0 commit comments

Comments
 (0)