Skip to content
GitLab
Explore
Sign in
IA2
GMS
Compare revisions
5c13e18b6a5b338b6e90a8a9f7a22b6fa294f332 to 0922b0322284457580c6e162765eccc4c7323526
Show whitespace changes
Inline
Side-by-side
gms/src/main/java/it/inaf/ia2/gms/controller/MembersController.java
View file @
0922b032
...
...
@@ -8,10 +8,12 @@ import it.inaf.ia2.gms.model.request.PaginatedModelRequest;
import
it.inaf.ia2.gms.model.request.RemoveMemberRequest
;
import
it.inaf.ia2.gms.model.request.TabRequest
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.service.GroupNameService
;
import
it.inaf.ia2.gms.service.GroupsService
;
import
it.inaf.ia2.rap.data.RapUser
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Optional
;
import
javax.validation.Valid
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
...
...
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.DeleteMapping;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
...
...
@@ -35,6 +38,9 @@ public class MembersController {
@Autowired
private
PermissionsManager
permissionsManager
;
@Autowired
protected
GroupNameService
groupNameService
;
@GetMapping
(
value
=
"/members"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
)
public
ResponseEntity
<
PaginatedData
<
RapUser
>>
getMembersTab
(
TabRequest
request
)
{
...
...
@@ -77,4 +83,22 @@ public class MembersController {
});
return
new
PaginatedData
<>(
members
,
request
.
getPaginatorPage
(),
request
.
getPaginatorPageSize
());
}
@PostMapping
(
value
=
"/membership"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
,
consumes
=
MediaType
.
APPLICATION_FORM_URLENCODED_VALUE
)
public
void
addMember
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
String
targetUserId
)
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
membershipManager
.
addMember
(
groupEntity
,
targetUserId
);
}
@DeleteMapping
(
value
=
"/membership"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
)
public
ResponseEntity
<?>
removeMember
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
String
userId
)
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
membershipManager
.
removeMember
(
groupEntity
,
userId
);
return
ResponseEntity
.
noContent
().
build
();
}
}
gms/src/main/java/it/inaf/ia2/gms/controller/PermissionsController.java
View file @
0922b032
package
it.inaf.ia2.gms.controller
;
import
it.inaf.ia2.gms.exception.BadRequestException
;
import
it.inaf.ia2.gms.manager.GroupsManager
;
import
it.inaf.ia2.gms.manager.PermissionsManager
;
import
it.inaf.ia2.gms.model.request.AddPermissionRequest
;
...
...
@@ -15,13 +14,16 @@ import it.inaf.ia2.gms.model.response.UserPermission;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.persistence.model.PermissionEntity
;
import
it.inaf.ia2.gms.service.GroupNameService
;
import
it.inaf.ia2.gms.service.SearchService
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java
.util.Se
t
;
import
java
.util.stream.Collectors
;
import
java
x.servlet.http.HttpServletReques
t
;
import
java
x.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
...
...
@@ -29,6 +31,7 @@ import org.springframework.http.MediaType;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
...
@@ -44,6 +47,12 @@ public class PermissionsController {
@Autowired
private
PermissionsManager
permissionsManager
;
@Autowired
protected
GroupNameService
groupNameService
;
@Autowired
private
SearchService
searchService
;
@GetMapping
(
value
=
"/permissions"
,
produces
=
MediaType
.
APPLICATION_JSON_VALUE
)
public
ResponseEntity
<
PaginatedData
<
RapUserPermission
>>
getPermissionsTab
(
TabRequest
request
)
{
...
...
@@ -109,4 +118,45 @@ public class PermissionsController {
});
return
new
PaginatedData
<>(
permissions
,
request
.
getPaginatorPage
(),
request
.
getPaginatorPageSize
());
}
@GetMapping
(
value
=
"/permission"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
)
public
void
getUserPermission
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
Optional
<
String
>
userId
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
if
(
userId
.
isPresent
())
{
try
(
PrintWriter
pw
=
new
PrintWriter
(
response
.
getOutputStream
()))
{
for
(
UserPermission
userPermission
:
searchService
.
getUserPermission
(
groupEntity
,
userId
.
get
(),
permissionsManager
.
getCurrentUserPermissions
(
groupEntity
)))
{
String
group
=
String
.
join
(
"."
,
userPermission
.
getGroupCompleteName
());
pw
.
println
(
group
+
" "
+
userPermission
.
getPermission
());
}
}
}
else
{
try
(
PrintWriter
pw
=
new
PrintWriter
(
response
.
getOutputStream
()))
{
for
(
it
.
inaf
.
ia2
.
gms
.
model
.
RapUserPermission
up
:
permissionsManager
.
getAllPermissions
(
groupEntity
))
{
pw
.
println
(
up
.
getUser
().
getId
()
+
" "
+
up
.
getPermission
());
}
}
}
}
@PostMapping
(
value
=
"/permission"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
,
consumes
=
MediaType
.
APPLICATION_FORM_URLENCODED_VALUE
)
public
void
addPermission
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
String
targetUserId
,
@RequestParam
(
"permission"
)
Permission
permission
)
throws
IOException
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
permissionsManager
.
addPermission
(
groupEntity
,
targetUserId
,
permission
);
}
@PutMapping
(
value
=
"/permission"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
,
consumes
=
MediaType
.
APPLICATION_FORM_URLENCODED_VALUE
)
public
void
setPermission
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
String
targetUserId
,
@RequestParam
(
"permission"
)
Permission
permission
)
throws
IOException
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
permissionsManager
.
createOrUpdatePermission
(
groupEntity
,
targetUserId
,
permission
);
}
@DeleteMapping
(
value
=
"/permission"
,
produces
=
MediaType
.
TEXT_PLAIN_VALUE
)
public
ResponseEntity
<?>
removePermission
(
@RequestParam
(
"group"
)
Optional
<
String
>
groupNames
,
@RequestParam
(
"user_id"
)
String
userId
)
{
GroupEntity
groupEntity
=
groupNameService
.
getGroupFromNames
(
groupNames
);
permissionsManager
.
removePermission
(
groupEntity
,
userId
);
return
ResponseEntity
.
noContent
().
build
();
}
}
gms/src/main/java/it/inaf/ia2/gms/manager/GroupsManager.java
View file @
0922b032
...
...
@@ -5,7 +5,11 @@ import it.inaf.ia2.gms.exception.UnauthorizedException;
import
it.inaf.ia2.gms.model.Permission
;
import
it.inaf.ia2.gms.persistence.LoggingDAO
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.persistence.model.PermissionEntity
;
import
it.inaf.ia2.gms.service.GroupsService
;
import
it.inaf.ia2.gms.service.PermissionUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
@Service
...
...
@@ -37,6 +41,22 @@ public class GroupsManager extends UserAwareComponent {
return
group
;
}
public
List
<
GroupEntity
>
getChildGroups
(
GroupEntity
parentGroup
,
boolean
recursive
)
{
List
<
GroupEntity
>
allSubGroups
=
groupsService
.
getChildGroups
(
parentGroup
,
recursive
);
// Select only the groups visible to the user
List
<
PermissionEntity
>
permissions
=
permissionsManager
.
getCurrentUserPermissions
();
List
<
GroupEntity
>
visibleSubgroups
=
new
ArrayList
<>();
for
(
GroupEntity
subgroup
:
allSubGroups
)
{
PermissionUtils
.
getGroupPermission
(
subgroup
,
permissions
).
ifPresent
(
permission
->
{
visibleSubgroups
.
add
(
subgroup
);
});
}
return
visibleSubgroups
;
}
public
GroupEntity
createGroup
(
GroupEntity
parent
,
String
childGroupName
,
boolean
leaf
)
{
if
(
parent
.
isLeaf
())
{
...
...
gms/src/main/java/it/inaf/ia2/gms/manager/PermissionsManager.java
View file @
0922b032
...
...
@@ -148,6 +148,10 @@ public class PermissionsManager extends UserAwareComponent {
return
()
->
new
UnauthorizedException
(
"You don't have the privileges for managing the requested permission"
);
}
public
List
<
PermissionEntity
>
getCurrentUserPermissions
()
{
return
permissionsService
.
findUserPermissions
(
getCurrentUserId
());
}
public
List
<
PermissionEntity
>
getCurrentUserPermissions
(
GroupEntity
group
)
{
return
permissionsService
.
findUserPermissions
(
group
,
getCurrentUserId
());
}
...
...
gms/src/main/java/it/inaf/ia2/gms/service/GroupNameService.java
View file @
0922b032
...
...
@@ -144,7 +144,7 @@ public class GroupNameService {
currentName
+=
c
;
}
}
names
.
add
(
currentName
);
names
.
add
(
currentName
.
replace
(
"\\."
,
"."
)
);
return
names
;
}
...
...
gms/src/main/java/it/inaf/ia2/gms/service/GroupsService.java
View file @
0922b032
...
...
@@ -184,4 +184,12 @@ public class GroupsService {
public
List
<
GroupEntity
>
searchGroups
(
String
searchText
)
{
return
groupsDAO
.
searchGroups
(
searchText
);
}
public
List
<
GroupEntity
>
getChildGroups
(
GroupEntity
parentGroup
,
boolean
recursive
)
{
if
(
recursive
)
{
return
groupsDAO
.
getAllChildren
(
parentGroup
.
getPath
());
}
else
{
return
groupsDAO
.
getDirectSubGroups
(
parentGroup
.
getPath
());
}
}
}
gms/src/main/java/it/inaf/ia2/gms/service/PermissionsService.java
View file @
0922b032
...
...
@@ -26,6 +26,10 @@ public class PermissionsService {
return
permissionsDAO
.
getGroupsPermissions
(
group
.
getId
());
}
public
List
<
PermissionEntity
>
findUserPermissions
(
String
userId
)
{
return
permissionsDAO
.
findUserPermissions
(
userId
);
}
public
List
<
PermissionEntity
>
findUserPermissions
(
GroupEntity
group
,
String
userId
)
{
return
permissionsDAO
.
findUserPermissions
(
userId
,
group
.
getPath
());
}
...
...
gms/src/test/java/it/inaf/ia2/gms/controller/ControllersMockData.java
0 → 100644
View file @
0922b032
package
it.inaf.ia2.gms.controller
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.service.GroupsService
;
import
it.inaf.ia2.rap.data.RapUser
;
import
java.security.Principal
;
public
class
ControllersMockData
{
public
static
GroupEntity
getRoot
()
{
GroupEntity
root
=
new
GroupEntity
();
root
.
setId
(
GroupsService
.
ROOT
);
root
.
setName
(
GroupsService
.
ROOT
);
root
.
setPath
(
""
);
return
root
;
}
public
static
GroupEntity
getLbtGroup
()
{
GroupEntity
lbt
=
new
GroupEntity
();
lbt
.
setId
(
"lbt_id"
);
lbt
.
setName
(
"LBT"
);
lbt
.
setPath
(
"lbt_id"
);
return
lbt
;
}
public
static
GroupEntity
getInafGroup
()
{
GroupEntity
inaf
=
new
GroupEntity
();
inaf
.
setId
(
"inaf_id"
);
inaf
.
setName
(
"INAF"
);
inaf
.
setPath
(
"lbt_id.inaf_id"
);
return
inaf
;
}
public
static
GroupEntity
getPeopleGroup
()
{
GroupEntity
lbt
=
new
GroupEntity
();
lbt
.
setId
(
"people_id"
);
lbt
.
setName
(
"people"
);
lbt
.
setPath
(
"people_id"
);
return
lbt
;
}
public
static
GroupEntity
getNameSurnameGroup
()
{
GroupEntity
inaf
=
new
GroupEntity
();
inaf
.
setId
(
"user_group_id"
);
inaf
.
setName
(
"name.surname"
);
inaf
.
setPath
(
"people_id.user_group_id"
);
return
inaf
;
}
public
static
RapUser
getRapUser
()
{
RapUser
user
=
new
RapUser
();
user
.
setId
(
"rap_user"
);
return
user
;
}
public
static
Principal
getPrincipal
()
{
return
new
Principal
()
{
@Override
public
String
getName
()
{
return
"TEST_PRINCIPAL"
;
}
};
}
}
gms/src/test/java/it/inaf/ia2/gms/controller/GroupsControllerTest.java
View file @
0922b032
...
...
@@ -2,6 +2,7 @@ package it.inaf.ia2.gms.controller;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
it.inaf.ia2.gms.GmsTestUtils
;
import
static
it
.
inaf
.
ia2
.
gms
.
controller
.
ControllersMockData
.*;
import
it.inaf.ia2.gms.manager.GroupsManager
;
import
it.inaf.ia2.gms.manager.PermissionsManager
;
import
it.inaf.ia2.gms.model.GroupNode
;
...
...
@@ -9,11 +10,15 @@ import it.inaf.ia2.gms.model.Permission;
import
it.inaf.ia2.gms.model.request.AddGroupRequest
;
import
it.inaf.ia2.gms.model.response.GroupsTabResponse
;
import
it.inaf.ia2.gms.model.response.PaginatedData
;
import
it.inaf.ia2.gms.persistence.GroupsDAO
;
import
it.inaf.ia2.gms.persistence.LoggingDAO
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.service.GroupNameService
;
import
it.inaf.ia2.gms.service.GroupsService
;
import
it.inaf.ia2.gms.service.GroupsTreeBuilder
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
javax.servlet.http.HttpServletRequest
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
hamcrest
.
CoreMatchers
.
notNullValue
;
...
...
@@ -21,6 +26,7 @@ import org.junit.Before;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
ArgumentMatchers
.
argThat
;
import
static
org
.
mockito
.
ArgumentMatchers
.
eq
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
...
...
@@ -59,6 +65,9 @@ public class GroupsControllerTest {
@Mock
private
GroupsTreeBuilder
groupsTreeBuilder
;
@Mock
private
GroupsDAO
groupsDAO
;
@Mock
private
LoggingDAO
loggingDAO
;
...
...
@@ -72,6 +81,7 @@ public class GroupsControllerTest {
@Before
public
void
init
()
{
mockMvc
=
MockMvcBuilders
.
standaloneSetup
(
controller
).
build
();
controller
.
groupNameService
=
new
GroupNameService
(
groupsDAO
);
GmsTestUtils
.
mockPrincipal
(
servletRequest
);
}
...
...
@@ -93,7 +103,7 @@ public class GroupsControllerTest {
}
@Test
public
void
testAddGroup
s
()
throws
Exception
{
public
void
testAddGroup
Paginated
()
throws
Exception
{
AddGroupRequest
request
=
new
AddGroupRequest
();
request
.
setNewGroupName
(
"New Group"
);
...
...
@@ -108,12 +118,13 @@ public class GroupsControllerTest {
mockMvc
.
perform
(
post
(
"/group"
)
.
content
(
mapper
.
writeValueAsString
(
request
))
.
accept
(
MediaType
.
APPLICATION_JSON
)
.
contentType
(
MediaType
.
APPLICATION_JSON
))
.
andExpect
(
status
().
isCreated
());
}
@Test
public
void
testDeleteGroup
()
throws
Exception
{
public
void
testDeleteGroup
Paginated
()
throws
Exception
{
mockMvc
.
perform
(
delete
(
"/group/id?paginatorPageSize=20&paginatorPage=1&searchFilter="
))
.
andDo
(
print
())
...
...
@@ -121,4 +132,43 @@ public class GroupsControllerTest {
verify
(
groupsManager
,
times
(
1
)).
deleteGroup
(
eq
(
"id"
));
}
@Test
public
void
testAddGroupWs
()
throws
Exception
{
GroupEntity
peopleGroup
=
getPeopleGroup
();
when
(
groupsManager
.
getRoot
()).
thenReturn
(
getRoot
());
when
(
groupsManager
.
createGroup
(
any
(
GroupEntity
.
class
),
eq
(
"people"
),
eq
(
false
))).
thenReturn
(
peopleGroup
);
when
(
groupsManager
.
createGroup
(
any
(
GroupEntity
.
class
),
eq
(
"name.surname"
),
eq
(
true
))).
thenReturn
(
getNameSurnameGroup
());
mockMvc
.
perform
(
post
(
"/group"
)
.
param
(
"name"
,
"people.name\\.surname"
)
.
param
(
"leaf"
,
"true"
)
.
accept
(
MediaType
.
TEXT_PLAIN
)
.
contentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
))
.
andExpect
(
status
().
isCreated
());
verify
(
groupsService
,
times
(
2
)).
findGroupByParentAndName
(
any
(
GroupEntity
.
class
),
any
());
verify
(
groupsManager
,
times
(
1
)).
createGroup
(
argGroupIdEq
(
GroupsService
.
ROOT
),
eq
(
"people"
),
eq
(
false
));
verify
(
groupsManager
,
times
(
1
)).
createGroup
(
argGroupIdEq
(
"people_id"
),
eq
(
"name.surname"
),
eq
(
true
));
}
@Test
public
void
testDeleteGroupWs
()
throws
Exception
{
GroupEntity
inafGroup
=
getInafGroup
();
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
getLbtGroup
()));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
inafGroup
));
mockMvc
.
perform
(
delete
(
"/group?name=LBT.INAF"
))
.
andExpect
(
status
().
isNoContent
());
verify
(
groupsManager
,
times
(
1
)).
deleteGroup
(
eq
(
inafGroup
.
getId
()));
}
private
GroupEntity
argGroupIdEq
(
String
groupId
)
{
return
argThat
(
g
->
g
.
getId
().
equals
(
groupId
));
}
}
gms/src/test/java/it/inaf/ia2/gms/controller/JWTWebServiceControllerTest.java
View file @
0922b032
...
...
@@ -152,7 +152,7 @@ public class JWTWebServiceControllerTest {
mockMvc
.
perform
(
delete
(
"/ws/jwt/LBT.INAF"
))
.
andExpect
(
status
().
isNoContent
());
verify
(
groups
DAO
,
times
(
1
)).
deleteGroup
(
eq
(
inaf
));
verify
(
groups
Manager
,
times
(
1
)).
deleteGroup
(
eq
(
inaf
.
getId
()
));
}
@Test
...
...
gms/src/test/java/it/inaf/ia2/gms/controller/MembersControllerTest.java
View file @
0922b032
package
it.inaf.ia2.gms.controller
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
static
it
.
inaf
.
ia2
.
gms
.
controller
.
ControllersMockData
.
getInafGroup
;
import
static
it
.
inaf
.
ia2
.
gms
.
controller
.
ControllersMockData
.
getLbtGroup
;
import
it.inaf.ia2.gms.manager.MembershipManager
;
import
it.inaf.ia2.gms.manager.PermissionsManager
;
import
it.inaf.ia2.gms.model.request.AddMemberRequest
;
import
it.inaf.ia2.gms.model.Permission
;
import
it.inaf.ia2.gms.persistence.GroupsDAO
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.persistence.model.MembershipEntity
;
import
it.inaf.ia2.gms.service.GroupNameService
;
import
it.inaf.ia2.gms.service.GroupsService
;
import
java.util.Optional
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -39,6 +45,9 @@ public class MembersControllerTest {
@Mock
private
MembershipManager
membershipManager
;
@Mock
private
GroupsDAO
groupsDAO
;
@InjectMocks
private
MembersController
controller
;
...
...
@@ -46,23 +55,25 @@ public class MembersControllerTest {
private
final
ObjectMapper
mapper
=
new
ObjectMapper
();
private
GroupEntity
lbt
=
getLbtGroup
();
private
GroupEntity
inaf
=
getInafGroup
();
@Before
public
void
init
()
{
controller
.
groupNameService
=
new
GroupNameService
(
groupsDAO
);
mockMvc
=
MockMvcBuilders
.
standaloneSetup
(
controller
).
build
();
GroupEntity
group
=
new
GroupEntity
();
group
.
setId
(
"group_id"
);
group
.
setName
(
"GroupName"
);
group
.
setPath
(
"parent_id.group_id"
);
when
(
groupsService
.
getGroupById
(
eq
(
"lbt_id"
))).
thenReturn
(
lbt
);
when
(
groupsService
.
getGroupById
(
eq
(
"group_id"
))).
thenReturn
(
group
);
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
lbt
));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
inaf
));
}
@Test
public
void
testAddMember
()
throws
Exception
{
AddMemberRequest
request
=
new
AddMemberRequest
();
request
.
setGroupId
(
"
group
_id"
);
request
.
setGroupId
(
"
lbt
_id"
);
request
.
setUserId
(
"user_id"
);
request
.
setPaginatorPage
(
1
);
request
.
setPaginatorPageSize
(
10
);
...
...
@@ -86,4 +97,35 @@ public class MembersControllerTest {
verify
(
membershipManager
,
times
(
1
)).
removeMember
(
any
(),
eq
(
"user_id"
));
}
@Test
public
void
testAddMemberWs
()
throws
Exception
{
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
lbt
));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
inaf
));
String
userId
=
"target_user"
;
MembershipEntity
membership
=
new
MembershipEntity
();
membership
.
setGroupId
(
lbt
.
getId
());
membership
.
setUserId
(
userId
);
mockMvc
.
perform
(
post
(
"/membership"
)
.
param
(
"group"
,
"LBT.INAF"
)
.
param
(
"user_id"
,
userId
)
.
accept
(
MediaType
.
TEXT_PLAIN
)
.
contentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
))
.
andExpect
(
status
().
isOk
());
verify
(
membershipManager
,
times
(
1
)).
addMember
(
eq
(
inaf
),
eq
(
userId
));
}
@Test
public
void
testRemoveMemberWs
()
throws
Exception
{
mockMvc
.
perform
(
delete
(
"/membership?group=LBT.INAF&user_id=userId"
))
.
andExpect
(
status
().
isNoContent
());
verify
(
membershipManager
,
times
(
1
)).
removeMember
(
eq
(
inaf
),
eq
(
"userId"
));
}
}
gms/src/test/java/it/inaf/ia2/gms/controller/PermissionsControllerTest.java
View file @
0922b032
package
it.inaf.ia2.gms.controller
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
static
it
.
inaf
.
ia2
.
gms
.
controller
.
ControllersMockData
.*;
import
it.inaf.ia2.gms.manager.GroupsManager
;
import
it.inaf.ia2.gms.manager.PermissionsManager
;
import
it.inaf.ia2.gms.model.Permission
;
import
it.inaf.ia2.gms.model.RapUserPermission
;
import
it.inaf.ia2.gms.model.request.AddPermissionRequest
;
import
it.inaf.ia2.gms.persistence.GroupsDAO
;
import
it.inaf.ia2.gms.persistence.model.GroupEntity
;
import
it.inaf.ia2.gms.persistence.model.PermissionEntity
;
import
it.inaf.ia2.gms.service.GroupNameService
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
ArgumentMatchers
.
eq
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
...
...
@@ -22,6 +31,7 @@ import org.springframework.test.web.servlet.MockMvc;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
delete
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
get
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
post
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
content
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
jsonPath
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
status
;
import
org.springframework.test.web.servlet.setup.MockMvcBuilders
;
...
...
@@ -35,6 +45,9 @@ public class PermissionsControllerTest {
@Mock
private
PermissionsManager
permissionsManager
;
@Mock
private
GroupsDAO
groupsDAO
;
@InjectMocks
private
PermissionsController
controller
;
...
...
@@ -46,6 +59,7 @@ public class PermissionsControllerTest {
@Before
public
void
init
()
{
controller
.
groupNameService
=
new
GroupNameService
(
groupsDAO
);
mockMvc
=
MockMvcBuilders
.
standaloneSetup
(
controller
).
build
();
group
=
new
GroupEntity
();
...
...
@@ -103,4 +117,72 @@ public class PermissionsControllerTest {
verify
(
permissionsManager
,
times
(
1
)).
removePermission
(
eq
(
group
),
eq
(
"user_id"
));
}
@Test
public
void
testGetGroupPermissions
()
throws
Exception
{
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
getLbtGroup
()));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
getInafGroup
()));
List
<
RapUserPermission
>
permissions
=
new
ArrayList
<>();
RapUserPermission
up
=
new
RapUserPermission
();
up
.
setUser
(
getRapUser
());
up
.
setPermission
(
Permission
.
ADMIN
);
permissions
.
add
(
up
);
when
(
permissionsManager
.
getAllPermissions
(
any
())).
thenReturn
(
permissions
);
mockMvc
.
perform
(
get
(
"/permission?group=LBT.INAF"
).
principal
(
getPrincipal
())
.
accept
(
MediaType
.
TEXT_PLAIN
))
.
andExpect
(
status
().
isOk
())
.
andExpect
(
content
().
string
(
"rap_user ADMIN\n"
));
}
@Test
public
void
testAddPermissionWs
()
throws
Exception
{
String
userId
=
"target_user"
;
Permission
permission
=
Permission
.
ADMIN
;
GroupEntity
lbt
=
getLbtGroup
();
GroupEntity
inaf
=
getInafGroup
();
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
lbt
));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
inaf
));
PermissionEntity
permissionEntity
=
new
PermissionEntity
();
permissionEntity
.
setGroupId
(
inaf
.
getId
());
permissionEntity
.
setUserId
(
userId
);
permissionEntity
.
setPermission
(
permission
);
permissionEntity
.
setGroupPath
(
inaf
.
getPath
());
when
(
permissionsManager
.
addPermission
(
eq
(
inaf
),
eq
(
userId
),
eq
(
permission
))).
thenReturn
(
permissionEntity
);
mockMvc
.
perform
(
post
(
"/permission"
)
.
param
(
"group"
,
"LBT.INAF"
)
.
param
(
"user_id"
,
userId
)
.
param
(
"permission"
,
permission
.
toString
())
.
accept
(
MediaType
.
TEXT_PLAIN
)
.
contentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
))
.
andExpect
(
status
().
isOk
());
verify
(
permissionsManager
,
times
(
1
))
.
addPermission
(
eq
(
inaf
),
eq
(
userId
),
eq
(
permission
));
}
@Test
public
void
testRemovePermissionWs
()
throws
Exception
{
GroupEntity
lbt
=
getLbtGroup
();
GroupEntity
inaf
=
getInafGroup
();
when
(
groupsDAO
.
findGroupByParentAndName
(
""
,
"LBT"
)).
thenReturn
(
Optional
.
of
(
lbt
));
when
(
groupsDAO
.
findGroupByParentAndName
(
"lbt_id"
,
"INAF"
)).
thenReturn
(
Optional
.
of
(
inaf
));
mockMvc
.
perform
(
delete
(
"/permission?group=LBT.INAF&user_id=userId"
)
.
accept
(
MediaType
.
TEXT_PLAIN
))
.
andExpect
(
status
().
isNoContent
());
verify
(
permissionsManager
,
times
(
1
)).
removePermission
(
eq
(
inaf
),
eq
(
"userId"
));
}
}
gms/src/test/java/it/inaf/ia2/gms/service/GroupNameServiceTest.java
View file @
0922b032
...
...
@@ -11,6 +11,7 @@ import java.util.Map;
import
java.util.Optional
;
import
java.util.Set
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
...
...
@@ -76,4 +77,26 @@ public class GroupNameServiceTest {
assertEquals
(
1
,
names
.
get
(
"ROOT"
).
size
());
assertEquals
(
"ROOT"
,
names
.
get
(
"ROOT"
).
get
(
0
));
}
@Test
public
void
extractGroupNamesTest
()
{
List
<
String
>
names
=
groupNameService
.
extractGroupNames
(
"group1.people.name\\.surname.another\\.composite"
);
assertEquals
(
4
,
names
.
size
());
assertEquals
(
"group1"
,
names
.
get
(
0
));
assertEquals
(
"people"
,
names
.
get
(
1
));
assertEquals
(
"name.surname"
,
names
.
get
(
2
));
assertEquals
(
"another.composite"
,
names
.
get
(
3
));
}
@Test
public
void
extractGroupNamesTestEmpty
()
{
assertTrue
(
groupNameService
.
extractGroupNames
(
""
).
isEmpty
());
}
@Test
public
void
extractGroupNamesTestNull
()
{
assertTrue
(
groupNameService
.
extractGroupNames
(
null
).
isEmpty
());
}
}
Prev
1
2
Next