use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointQueryPermissionTest method testDeleteSingleRoleFromAndSet.
/**
* Delete a single role from an and set (this results in the user still having permission)
*/
@Test
public void testDeleteSingleRoleFromAndSet() {
// Insert some data points
Set<Role> readRoles = this.createRoles(3).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(5, false, MangoPermission.requireAllRoles(readRoles), new MangoPermission());
List<IDataPoint> unreadable = this.createMockDataPoints(5, false, new MangoPermission(), new MangoPermission());
Role role = readRoles.iterator().next();
Common.getBean(RoleDao.class).delete(role.getId());
readRoles.remove(role);
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
ids.addAll(unreadable.stream().map(dp -> dp.getId()).collect(Collectors.toList()));
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
});
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointQueryPermissionTest method testOrPermission.
@Test
public void testOrPermission() {
// Insert some data points
Set<Role> readRoles = this.createRoles(2).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(5, false, MangoPermission.requireAnyRole(readRoles), new MangoPermission());
List<IDataPoint> unreadable = this.createMockDataPoints(5, false, new MangoPermission(), new MangoPermission());
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
ids.addAll(unreadable.stream().map(dp -> dp.getId()).collect(Collectors.toList()));
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
});
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class DataPointQueryPermissionTest method testAndPermission.
@Test
public void testAndPermission() {
// Insert some data points
Set<Role> readRoles = this.createRoles(2).stream().map(r -> r.getRole()).collect(Collectors.toSet());
List<IDataPoint> points = this.createMockDataPoints(5, false, MangoPermission.requireAllRoles(readRoles), new MangoPermission());
List<IDataPoint> unreadable = this.createMockDataPoints(5, false, new MangoPermission(), new MangoPermission());
DataPointService service = Common.getBean(DataPointService.class);
runAs.runAs(new PermissionHolder() {
@Override
public String getPermissionHolderName() {
return "Test";
}
@Override
public boolean isPermissionHolderDisabled() {
return false;
}
@Override
public Set<Role> getRoles() {
return readRoles;
}
}, () -> {
List<Integer> ids = points.stream().map(dp -> dp.getId()).collect(Collectors.toList());
ids.addAll(unreadable.stream().map(dp -> dp.getId()).collect(Collectors.toList()));
QueryBuilder<DataPointVO> query = service.buildQuery().in("id", ids.toArray());
List<DataPointVO> vos = query.query();
assertEquals(points.size(), vos.size());
for (DataPointVO vo : vos) {
assertTrue(points.contains(vo));
}
});
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class MangoTestBase method createMockDataPoint.
protected DataPointVO createMockDataPoint(int id, String xid, String name, String deviceName, boolean enabled, int dataSourceId, String dataSourceXid, MangoPermission readPermission, MangoPermission setPermission, MockPointLocatorVO vo) {
DataPointService service = Common.getBean(DataPointService.class);
DataPointVO dp = new DataPointVO();
dp.setId(id);
dp.setXid(xid);
dp.setName(name);
dp.setDeviceName(deviceName);
dp.setEnabled(enabled);
dp.setPointLocator(vo);
dp.setDataSourceId(dataSourceId);
dp.setDataSourceXid(dataSourceXid);
dp.setReadPermission(readPermission);
dp.setSetPermission(setPermission);
try {
return service.insert(dp);
} catch (ValidationException e) {
String failureMessage = "";
for (ProcessMessage m : e.getValidationResult().getMessages()) {
String messagePart = m.getContextKey() + " -> " + m.getContextualMessage().translate(Common.getTranslations()) + "\n";
failureMessage += messagePart;
}
fail(failureMessage);
return null;
}
}
use of com.infiniteautomation.mango.spring.service.DataPointService in project ma-core-public by infiniteautomation.
the class MangoTestBase method createMockDataPoint.
protected DataPointVO createMockDataPoint(MockDataSourceVO ds, Consumer<DataPointVO> customizer) {
DataPointService service = Common.getBean(DataPointService.class);
DataPointVO dp = new DataPointVO();
dp.setName(UUID.randomUUID().toString());
dp.setDeviceName(ds.getName());
dp.setPointLocator(new MockPointLocatorVO(DataType.NUMERIC, true));
dp.setDataSourceId(ds.getId());
customizer.accept(dp);
try {
return service.insert(dp);
} catch (ValidationException e) {
fail(e.getValidationErrorMessage(Common.getTranslations()));
return null;
}
}
Aggregations