Skip to content
Snippets Groups Projects
Commit 9f9b7530 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Fixed tests and database setup

parent cd5726d6
No related branches found
No related tags found
No related merge requests found
Showing
with 225 additions and 77 deletions
# IA2 GMS # IA2 GMS
## MySQL setup ## Database Docker image
``` To build the image run **from current directory**:
create database gms;
create user gms@localhost identified by 'gms';
grant all privileges on gms.* to gms@localhost;
``` docker build -f database/Dockerfile --tag gms-db .
To start the image and use the database:
docker run -d -p 5432:5432 -i -t gms-db:latest
FROM library/postgres:11 FROM library/postgres:11
COPY ../gms/src/main/resources/sql/init.sql /docker-entrypoint-initdb.d/ COPY gms/src/main/resources/sql/init.sql /docker-entrypoint-initdb.d/
COPY database/user.sql /docker-entrypoint-initdb.d/
CREATE ROLE gms WITH LOGIN PASSWORD 'gms';
GRANT USAGE ON SCHEMA public TO gms;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO gms;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO gms;
\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<b-list-group v-for="group in model.groupsPanel.items"> <b-list-group v-for="group in model.groupsPanel.items">
<b-list-group-item href="#" v-on:click="openGroup(group)"> <b-list-group-item href="#" v-on:click="openGroup(group)">
<span class="float-left">{{group.groupName}}</span> <span class="float-left">{{group.groupName}}</span>
<span v-if="group.permissions.includes('ADMIN')" class="float-right"> <span v-if="group.permission === 'ADMIN'" class="float-right">
<a href="#" v-on:click.stop="openRenameGroupModal(group)" title="Rename"> <a href="#" v-on:click.stop="openRenameGroupModal(group)" title="Rename">
<font-awesome-icon icon="edit"></font-awesome-icon> <font-awesome-icon icon="edit"></font-awesome-icon>
</a> </a>
......
...@@ -40,10 +40,10 @@ export default { ...@@ -40,10 +40,10 @@ export default {
}, },
computed: mapState({ computed: mapState({
model: state => state.model, model: state => state.model,
showAddMemberBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'members', showAddMemberBtn: state => state.model.permission === 'ADMIN' && state.input.selectedTab === 'members',
showAddCollaboratorBtn: state => state.model.permissions.includes('MANAGE_MEMBERS') && state.input.selectedTab === 'members', showAddCollaboratorBtn: state => state.model.permission === 'MANAGE_MEMBERS' && state.input.selectedTab === 'members',
showAddGroupBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'groups', showAddGroupBtn: state => state.model.permission === 'ADMIN' && state.input.selectedTab === 'groups',
showAddPermissionBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'permissions' showAddPermissionBtn: state => state.model.permission === 'ADMIN' && state.input.selectedTab === 'permissions'
}), }),
methods: { methods: {
tabChanged: function(tabIndex) { tabChanged: function(tabIndex) {
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
<version>42.2.6</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency> <dependency>
...@@ -58,10 +57,11 @@ ...@@ -58,10 +57,11 @@
<artifactId>spring-security-test</artifactId> <artifactId>spring-security-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- Embedded PostgreSQL: -->
<dependency> <dependency>
<groupId>io.zonky.test</groupId> <groupId>com.opentable.components</groupId>
<artifactId>embedded-database-spring-test</artifactId> <artifactId>otj-pg-embedded</artifactId>
<version>1.5.0</version> <version>0.13.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -132,6 +132,10 @@ public class GroupsDAO { ...@@ -132,6 +132,10 @@ public class GroupsDAO {
public Map<String, Boolean> getHasChildrenMap(Set<String> groupIds) { public Map<String, Boolean> getHasChildrenMap(Set<String> groupIds) {
if (groupIds.isEmpty()) {
return new HashMap<>();
}
String sql = "SELECT g.id, COUNT(s.*) > 0 AS has_children \n" String sql = "SELECT g.id, COUNT(s.*) > 0 AS has_children \n"
+ "FROM gms_group g\n" + "FROM gms_group g\n"
+ "LEFT JOIN gms_group s ON s.path <@ g.path AND s.path <> g.path\n" + "LEFT JOIN gms_group s ON s.path <@ g.path AND s.path <> g.path\n"
......
...@@ -10,7 +10,6 @@ import it.inaf.ia2.gms.persistence.GroupsDAO; ...@@ -10,7 +10,6 @@ import it.inaf.ia2.gms.persistence.GroupsDAO;
import it.inaf.ia2.gms.persistence.model.GroupEntity; import it.inaf.ia2.gms.persistence.model.GroupEntity;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class GroupsService { public class GroupsService {
...@@ -38,7 +37,6 @@ public class GroupsService { ...@@ -38,7 +37,6 @@ public class GroupsService {
} }
} }
@Transactional
public GroupEntity addGroup(String parentId, String groupName, String userId) { public GroupEntity addGroup(String parentId, String groupName, String userId) {
GroupEntity parent = getGroupById(parentId); GroupEntity parent = getGroupById(parentId);
...@@ -52,7 +50,7 @@ public class GroupsService { ...@@ -52,7 +50,7 @@ public class GroupsService {
throw new BadRequestException("There is already a group named " + groupName); throw new BadRequestException("There is already a group named " + groupName);
} }
String newGroupId = UUID.randomUUID().toString(); String newGroupId = UUID.randomUUID().toString().replaceAll("-", "");
String path = parent.getPath(); String path = parent.getPath();
if (!path.isEmpty()) { if (!path.isEmpty()) {
......
...@@ -18,15 +18,12 @@ public class PermissionUtils { ...@@ -18,15 +18,12 @@ public class PermissionUtils {
boolean permissionInChildGroup = permission.getGroupPath().startsWith(group.getPath()); boolean permissionInChildGroup = permission.getGroupPath().startsWith(group.getPath());
boolean permissionInParentGroup = group.getPath().startsWith(permission.getGroupPath()); boolean permissionInParentGroup = group.getPath().startsWith(permission.getGroupPath());
if (directPermission || permissionInChildGroup || permissionInParentGroup) { if (directPermission || permissionInParentGroup) {
// Direct permission or permission inherited from parent
if (permissionInChildGroup) { groupPermission = Permission.addPermission(groupPermission, permission.getPermission());
// Traversal only } else if (permissionInChildGroup) {
groupPermission = Permission.addPermission(groupPermission, Permission.TRAVERSE); // Traversal only
} else { groupPermission = Permission.addPermission(groupPermission, Permission.TRAVERSE);
// Direct permission or permission inherited from parent
groupPermission = Permission.addPermission(groupPermission, permission.getPermission());
}
} }
if (groupPermission == Permission.ADMIN) { if (groupPermission == Permission.ADMIN) {
......
...@@ -11,12 +11,9 @@ security.oauth2.resource.jwk.key-set-uri=http://localhost/rap-ia2/auth/oidc/jwks ...@@ -11,12 +11,9 @@ security.oauth2.resource.jwk.key-set-uri=http://localhost/rap-ia2/auth/oidc/jwks
logging.level.org.springframework.security=DEBUG logging.level.org.springframework.security=DEBUG
logging.level.org.springframework.jdbc=TRACE logging.level.org.springframework.jdbc=TRACE
spring.jpa.hibernate.ddl-auto=update spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
spring.datasource.url=jdbc:mysql://localhost:3306/gms?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=gms spring.datasource.username=gms
spring.datasource.password=gms spring.datasource.password=gms
#spring.jpa.open-in-view=false
rap.ws-url=http://localhost/rap-ia2/ws rap.ws-url=http://localhost/rap-ia2/ws
......
package it.inaf.ia2.gms;
import com.opentable.db.postgres.embedded.EmbeddedPostgres;
import java.sql.Connection;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.init.ScriptUtils;
@Configuration
public class DataSourceConfig {
/**
* Using the prototype scope we are generating a different database in each
* test.
*/
@Bean
@Scope("prototype")
@Primary
public DataSource dataSource() throws Exception {
DataSource embeddedPostgresDS = EmbeddedPostgres.builder()
.start().getPostgresDatabase();
initDatabase(embeddedPostgresDS);
return embeddedPostgresDS;
}
private void initDatabase(DataSource dataSource) throws Exception {
try (Connection conn = dataSource.getConnection()) {
ScriptUtils.executeSqlScript(conn, new ClassPathResource("/sql/init.sql"));
}
}
}
package it.inaf.ia2.gms;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class GmsApplicationTests {
@Test
public void contextLoads() {
}
}
...@@ -49,7 +49,7 @@ public class GroupsControllerTest { ...@@ -49,7 +49,7 @@ public class GroupsControllerTest {
when(groupsModelService.getGroupsModel(any(), any())) when(groupsModelService.getGroupsModel(any(), any()))
.thenReturn(response); .thenReturn(response);
mockMvc.perform(get("/groups?groupId=ROOT&tab=groups&paginatorPageSize=20&paginatorPage=1")) mockMvc.perform(get("/groups?groupId=ROOT&tab=groups&paginatorPageSize=20&paginatorPage=1&page=main"))
.andExpect(status().isOk()); .andExpect(status().isOk());
ArgumentCaptor<GroupsModelRequest> requestCaptor = ArgumentCaptor.forClass(GroupsModelRequest.class); ArgumentCaptor<GroupsModelRequest> requestCaptor = ArgumentCaptor.forClass(GroupsModelRequest.class);
......
package it.inaf.ia2.gms.model;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class PermissionTest {
@Test
public void addPermissionTest() {
// Old = null
assertEquals(Permission.ADMIN, Permission.addPermission(null, Permission.ADMIN));
assertEquals(Permission.MANAGE_MEMBERS, Permission.addPermission(null, Permission.MANAGE_MEMBERS));
assertEquals(Permission.VIEW_MEMBERS, Permission.addPermission(null, Permission.VIEW_MEMBERS));
assertEquals(Permission.TRAVERSE, Permission.addPermission(null, Permission.TRAVERSE));
// Old = ADMIN -> never change
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.ADMIN, Permission.VIEW_MEMBERS));
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.ADMIN, Permission.MANAGE_MEMBERS));
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.ADMIN, Permission.TRAVERSE));
// Old = MANAGE_MEMBERS
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.MANAGE_MEMBERS, Permission.ADMIN));
assertEquals(Permission.MANAGE_MEMBERS, Permission.addPermission(Permission.MANAGE_MEMBERS, Permission.VIEW_MEMBERS));
assertEquals(Permission.MANAGE_MEMBERS, Permission.addPermission(Permission.MANAGE_MEMBERS, Permission.TRAVERSE));
// Old = VIEW_MEMBERS
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.VIEW_MEMBERS, Permission.ADMIN));
assertEquals(Permission.MANAGE_MEMBERS, Permission.addPermission(Permission.VIEW_MEMBERS, Permission.MANAGE_MEMBERS));
assertEquals(Permission.VIEW_MEMBERS, Permission.addPermission(Permission.VIEW_MEMBERS, Permission.TRAVERSE));
// Old = TRAVERSE
assertEquals(Permission.ADMIN, Permission.addPermission(Permission.TRAVERSE, Permission.ADMIN));
assertEquals(Permission.MANAGE_MEMBERS, Permission.addPermission(Permission.TRAVERSE, Permission.MANAGE_MEMBERS));
assertEquals(Permission.VIEW_MEMBERS, Permission.addPermission(Permission.TRAVERSE, Permission.VIEW_MEMBERS));
}
}
package it.inaf.ia2.gms.persistence; package it.inaf.ia2.gms.persistence;
import com.google.common.collect.ImmutableSet; import it.inaf.ia2.gms.DataSourceConfig;
import io.zonky.test.db.AutoConfigureEmbeddedDatabase;
import it.inaf.ia2.gms.model.GroupBreadcrumb; import it.inaf.ia2.gms.model.GroupBreadcrumb;
import it.inaf.ia2.gms.persistence.model.GroupEntity; import it.inaf.ia2.gms.persistence.model.GroupEntity;
import java.util.List; import java.util.List;
...@@ -15,12 +14,13 @@ import static org.junit.Assert.assertTrue; ...@@ -15,12 +14,13 @@ import static org.junit.Assert.assertTrue;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.internal.util.collections.Sets;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@AutoConfigureEmbeddedDatabase(beanName = "dataSource") @ContextConfiguration(classes = DataSourceConfig.class)
public class GroupsDAOTest { public class GroupsDAOTest {
@Autowired @Autowired
...@@ -34,7 +34,7 @@ public class GroupsDAOTest { ...@@ -34,7 +34,7 @@ public class GroupsDAOTest {
} }
@Test @Test
@Sql("/sql/init.sql") //@Sql("/sql/init.sql")
public void testAll() { public void testAll() {
// Create groups // Create groups
...@@ -89,11 +89,11 @@ public class GroupsDAOTest { ...@@ -89,11 +89,11 @@ public class GroupsDAOTest {
assertEquals("INAF", groups.get(0).getName()); assertEquals("INAF", groups.get(0).getName());
// Children map // Children map
Map<String, Boolean> childrenMap = dao.getHasChildrenMap(ImmutableSet.of(root.getId())); Map<String, Boolean> childrenMap = dao.getHasChildrenMap(Sets.newSet(root.getId()));
assertEquals(1, childrenMap.size()); assertEquals(1, childrenMap.size());
assertTrue(childrenMap.get(root.getId())); assertTrue(childrenMap.get(root.getId()));
childrenMap = dao.getHasChildrenMap(ImmutableSet.of(lbt.getId(), tng.getId())); childrenMap = dao.getHasChildrenMap(Sets.newSet(lbt.getId(), tng.getId()));
assertEquals(2, childrenMap.size()); assertEquals(2, childrenMap.size());
assertTrue(childrenMap.get(lbt.getId())); assertTrue(childrenMap.get(lbt.getId()));
assertFalse(childrenMap.get(tng.getId())); assertFalse(childrenMap.get(tng.getId()));
......
package it.inaf.ia2.gms.persistence; package it.inaf.ia2.gms.persistence;
import io.zonky.test.db.AutoConfigureEmbeddedDatabase; import it.inaf.ia2.gms.DataSourceConfig;
import it.inaf.ia2.gms.service.GroupsService; import it.inaf.ia2.gms.service.GroupsService;
import it.inaf.ia2.gms.model.GroupNode; import it.inaf.ia2.gms.model.GroupNode;
import it.inaf.ia2.gms.model.PaginatedModelRequest; import it.inaf.ia2.gms.model.PaginatedModelRequest;
import it.inaf.ia2.gms.model.Permission; import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.persistence.model.GroupEntity; import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.persistence.model.PermissionEntity; import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import it.inaf.ia2.gms.rap.RapClient;
import it.inaf.ia2.gms.service.GroupsTreeBuilder; import it.inaf.ia2.gms.service.GroupsTreeBuilder;
import it.inaf.ia2.gms.service.PermissionsService;
import java.util.List; import java.util.List;
import javax.sql.DataSource;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import static org.mockito.Mockito.mock;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@AutoConfigureEmbeddedDatabase(beanName = "dataSource") @ContextConfiguration(classes = DataSourceConfig.class)
public class NestedGroupsIntegrationTest { public class NestedGroupsIntegrationTest {
@Autowired @Autowired
private PermissionsDAO permissionsDAO; private DataSource dataSource;
@Autowired
private GroupsService groupsService;
@Autowired
private GroupsTreeBuilder groupsTreeBuilder;
@Test @Test
public void testNestedGroupRetrieval() { public void testNestedGroupRetrieval() {
GroupsDAO groupsDAO = new GroupsDAO(dataSource);
PermissionsDAO permissionsDAO = new PermissionsDAO(dataSource);
PermissionsService permissionsService = new PermissionsService(permissionsDAO, mock(RapClient.class));
GroupsService groupsService = new GroupsService(groupsDAO, permissionsService);
GroupsTreeBuilder groupsTreeBuilder = new GroupsTreeBuilder(groupsDAO, permissionsDAO);
String userId = "USER_ID"; String userId = "USER_ID";
// Test super admin // Test super admin
...@@ -100,14 +105,23 @@ public class NestedGroupsIntegrationTest { ...@@ -100,14 +105,23 @@ public class NestedGroupsIntegrationTest {
p1Permission.setUserId(userId); p1Permission.setUserId(userId);
p1Permission.setGroupId(lbtInafProgram1.getId()); p1Permission.setGroupId(lbtInafProgram1.getId());
p1Permission.setPermission(Permission.MANAGE_MEMBERS); p1Permission.setPermission(Permission.MANAGE_MEMBERS);
p1Permission.setGroupPath(lbtInafProgram1.getPath());
permissionsDAO.createPermission(p1Permission); permissionsDAO.createPermission(p1Permission);
PermissionEntity lbtPermission = new PermissionEntity(); PermissionEntity lbtPermission = new PermissionEntity();
lbtPermission.setUserId(userId); lbtPermission.setUserId(userId);
lbtPermission.setGroupId(lbtInaf.getId()); lbtPermission.setGroupId(lbtInaf.getId());
lbtPermission.setPermission(Permission.VIEW_MEMBERS); lbtPermission.setPermission(Permission.VIEW_MEMBERS);
lbtPermission.setGroupPath(lbtInaf.getPath());
permissionsDAO.createPermission(lbtPermission); permissionsDAO.createPermission(lbtPermission);
PermissionEntity radioPermission = new PermissionEntity();
radioPermission.setUserId(userId);
radioPermission.setGroupId(radio.getId());
radioPermission.setPermission(Permission.VIEW_MEMBERS);
radioPermission.setGroupPath(radio.getPath());
permissionsDAO.createPermission(radioPermission);
// Check level 0 (ROOT) // Check level 0 (ROOT)
groupNodes = groupsTreeBuilder.listSubGroups(root.getId(), userId, request).getItems(); groupNodes = groupsTreeBuilder.listSubGroups(root.getId(), userId, request).getItems();
assertEquals(2, groupNodes.size()); assertEquals(2, groupNodes.size());
...@@ -117,7 +131,7 @@ public class NestedGroupsIntegrationTest { ...@@ -117,7 +131,7 @@ public class NestedGroupsIntegrationTest {
assertTrue(lbtGN.isHasChildren()); assertTrue(lbtGN.isHasChildren());
radioGN = groupNodes.get(1); radioGN = groupNodes.get(1);
assertEquals("Radio", radioGN.getGroupName()); assertEquals("Radio", radioGN.getGroupName());
assertEquals(Permission.TRAVERSE, radioGN.getPermission()); assertEquals(Permission.VIEW_MEMBERS, radioGN.getPermission());
assertFalse(radioGN.isHasChildren()); assertFalse(radioGN.isHasChildren());
// Check level 1 // Check level 1
......
package it.inaf.ia2.gms.persistence; package it.inaf.ia2.gms.persistence;
import io.zonky.test.db.AutoConfigureEmbeddedDatabase; import it.inaf.ia2.gms.DataSourceConfig;
import it.inaf.ia2.gms.model.Permission; import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.persistence.model.PermissionEntity; import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import it.inaf.ia2.gms.persistence.model.GroupEntity; import it.inaf.ia2.gms.persistence.model.GroupEntity;
...@@ -12,11 +12,11 @@ import org.junit.Before; ...@@ -12,11 +12,11 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@AutoConfigureEmbeddedDatabase(beanName = "dataSource") @ContextConfiguration(classes = DataSourceConfig.class)
public class PermissionsDAOTest { public class PermissionsDAOTest {
@Autowired @Autowired
...@@ -32,7 +32,6 @@ public class PermissionsDAOTest { ...@@ -32,7 +32,6 @@ public class PermissionsDAOTest {
} }
@Test @Test
@Sql("/sql/init.sql")
public void testAll() { public void testAll() {
GroupEntity root = new GroupEntity(); GroupEntity root = new GroupEntity();
......
package it.inaf.ia2.gms.service;
import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class PermissionUtilsTest {
@Test
public void testDirectPermission() {
GroupEntity group = new GroupEntity();
group.setId("id");
group.setName("name");
group.setPath("path");
PermissionEntity permission = new PermissionEntity();
permission.setGroupId("id");
permission.setGroupPath("path");
permission.setPermission(Permission.MANAGE_MEMBERS);
List<PermissionEntity> permissions = Collections.singletonList(permission);
assertEquals(Permission.MANAGE_MEMBERS, PermissionUtils.getGroupPermission(group, permissions).get());
}
@Test
public void testPermissionInheritedFromParent() {
GroupEntity group = new GroupEntity();
group.setId("id_LBT_INAF");
group.setName("INAF");
group.setPath("LBT:INAF");
PermissionEntity permission = new PermissionEntity();
permission.setGroupId("id_LBT");
permission.setGroupPath("LBT");
permission.setPermission(Permission.ADMIN);
List<PermissionEntity> permissions = Collections.singletonList(permission);
assertEquals(Permission.ADMIN, PermissionUtils.getGroupPermission(group, permissions).get());
}
@Test
public void testTraversalIfPermissionInChild() {
GroupEntity group = new GroupEntity();
group.setId("id_LBT");
group.setName("name");
group.setPath("LBT");
PermissionEntity permission = new PermissionEntity();
permission.setGroupId("id_LBT_INAF_P1");
permission.setGroupPath("LBT:INAF:P1");
permission.setPermission(Permission.VIEW_MEMBERS);
List<PermissionEntity> permissions = Collections.singletonList(permission);
assertEquals(Permission.TRAVERSE, PermissionUtils.getGroupPermission(group, permissions).get());
}
}
package it.inaf.ia2.gms.service; package it.inaf.ia2.gms.service;
import io.zonky.test.db.AutoConfigureEmbeddedDatabase; import it.inaf.ia2.gms.DataSourceConfig;
import it.inaf.ia2.gms.model.Permission; import it.inaf.ia2.gms.model.Permission;
import it.inaf.ia2.gms.model.RapUser; import it.inaf.ia2.gms.model.RapUser;
import it.inaf.ia2.gms.model.UserPermission; import it.inaf.ia2.gms.model.UserPermission;
...@@ -11,6 +11,7 @@ import it.inaf.ia2.gms.persistence.model.PermissionEntity; ...@@ -11,6 +11,7 @@ import it.inaf.ia2.gms.persistence.model.PermissionEntity;
import it.inaf.ia2.gms.rap.RapClient; import it.inaf.ia2.gms.rap.RapClient;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.sql.DataSource;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -18,26 +19,27 @@ import static org.mockito.ArgumentMatchers.any; ...@@ -18,26 +19,27 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@AutoConfigureEmbeddedDatabase(beanName = "dataSource") @ContextConfiguration(classes = DataSourceConfig.class)
public class PermissionsServiceIntegrationTest { public class PermissionsServiceIntegrationTest {
private static final String USER_ID = "USER_ID"; private static final String USER_ID = "USER_ID";
@Autowired
private GroupsDAO groupsDAO;
@Autowired
private PermissionsDAO permissionsDAO;
@MockBean @MockBean
private RapClient rapClient; private RapClient rapClient;
@Autowired
private DataSource dataSource;
@Test @Test
public void permissionsRetrievalTest() { public void permissionsRetrievalTest() {
GroupsDAO groupsDAO = new GroupsDAO(dataSource);
PermissionsDAO permissionsDAO = new PermissionsDAO(dataSource);
// Mock RAP client // Mock RAP client
RapUser rapUser = new RapUser(); RapUser rapUser = new RapUser();
rapUser.setId(USER_ID); rapUser.setId(USER_ID);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment