Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
superrain51
apollo
提交
d292642d
apollo
项目概览
superrain51
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d292642d
编写于
6月 13, 2016
作者:
J
Jason Song
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add user role related entity, repository and service and rename username to userId
上级
14992507
变更
26
隐藏空白更改
内联
并排
Showing
26 changed file
with
830 addition
and
23 deletion
+830
-23
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/auth/CtripUserInfoHolder.java
...rip/framework/apollo/portal/auth/CtripUserInfoHolder.java
+1
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/auth/DefaultUserInfoHolder.java
...p/framework/apollo/portal/auth/DefaultUserInfoHolder.java
+1
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PortalServerConfigController.java
...pollo/portal/controller/PortalServerConfigController.java
+1
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/Permission.java
...m/ctrip/framework/apollo/portal/entity/po/Permission.java
+41
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/Role.java
...ava/com/ctrip/framework/apollo/portal/entity/po/Role.java
+30
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/RolePermission.java
...rip/framework/apollo/portal/entity/po/RolePermission.java
+41
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/UserInfo.java
...com/ctrip/framework/apollo/portal/entity/po/UserInfo.java
+5
-5
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/UserRole.java
...com/ctrip/framework/apollo/portal/entity/po/UserRole.java
+41
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/PermissionRepository.java
...mework/apollo/portal/repository/PermissionRepository.java
+27
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/RolePermissionRepository.java
...rk/apollo/portal/repository/RolePermissionRepository.java
+19
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/RoleRepository.java
...ip/framework/apollo/portal/repository/RoleRepository.java
+17
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/UserRoleRepository.java
...ramework/apollo/portal/repository/UserRoleRepository.java
+36
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalAppService.java
...rip/framework/apollo/portal/service/PortalAppService.java
+1
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalConfigService.java
.../framework/apollo/portal/service/PortalConfigService.java
+5
-5
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalNamespaceService.java
...amework/apollo/portal/service/PortalNamespaceService.java
+3
-3
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/RolePermissionService.java
...ramework/apollo/portal/service/RolePermissionService.java
+209
-0
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AllTests.java
...test/java/com/ctrip/framework/apollo/portal/AllTests.java
+3
-1
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ConfigServiceTest.java
.../com/ctrip/framework/apollo/portal/ConfigServiceTest.java
+3
-3
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ServiceExceptionTest.java
...m/ctrip/framework/apollo/portal/ServiceExceptionTest.java
+1
-1
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/RolePermissionServiceTest.java
...work/apollo/portal/service/RolePermissionServiceTest.java
+330
-0
apollo-portal/src/test/resources/application.properties
apollo-portal/src/test/resources/application.properties
+1
-1
apollo-portal/src/test/resources/sql/cleanup.sql
apollo-portal/src/test/resources/sql/cleanup.sql
+4
-0
apollo-portal/src/test/resources/sql/insert-test-permissions.sql
...portal/src/test/resources/sql/insert-test-permissions.sql
+2
-0
apollo-portal/src/test/resources/sql/insert-test-rolepermissions.sql
...al/src/test/resources/sql/insert-test-rolepermissions.sql
+2
-0
apollo-portal/src/test/resources/sql/insert-test-roles.sql
apollo-portal/src/test/resources/sql/insert-test-roles.sql
+2
-0
apollo-portal/src/test/resources/sql/insert-test-userroles.sql
...o-portal/src/test/resources/sql/insert-test-userroles.sql
+4
-0
未找到文件。
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/auth/CtripUserInfoHolder.java
浏览文件 @
d292642d
...
...
@@ -36,7 +36,7 @@ public class CtripUserInfoHolder implements UserInfoHolder{
String
name
=
(
String
)
getName
.
invoke
(
principal
);
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUser
name
(
name
);
userInfo
.
setUser
Id
(
name
);
return
userInfo
;
}
catch
(
Exception
e
)
{
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/auth/DefaultUserInfoHolder.java
浏览文件 @
d292642d
...
...
@@ -15,7 +15,7 @@ public class DefaultUserInfoHolder implements UserInfoHolder{
@Override
public
UserInfo
getUser
()
{
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUser
name
(
"apollo"
);
userInfo
.
setUser
Id
(
"apollo"
);
return
userInfo
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PortalServerConfigController.java
浏览文件 @
d292642d
...
...
@@ -32,7 +32,7 @@ public class PortalServerConfigController {
throw
new
BadRequestException
(
"request payload contains empty"
);
}
String
modifiedBy
=
userInfoHolder
.
getUser
().
getUser
name
();
String
modifiedBy
=
userInfoHolder
.
getUser
().
getUser
Id
();
ServerConfig
storedConfig
=
serverConfigRepository
.
findByKey
(
serverConfig
.
getKey
());
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/Permission.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.entity.po
;
import
com.ctrip.framework.apollo.common.entity.BaseEntity
;
import
org.hibernate.annotations.SQLDelete
;
import
org.hibernate.annotations.Where
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Entity
@Table
(
name
=
"Permission"
)
@SQLDelete
(
sql
=
"Update Permission set isDeleted = 1 where id = ?"
)
@Where
(
clause
=
"isDeleted = 0"
)
public
class
Permission
extends
BaseEntity
{
@Column
(
name
=
"PermissionType"
,
nullable
=
false
)
private
String
permissionType
;
@Column
(
name
=
"TargetId"
,
nullable
=
false
)
private
String
targetId
;
public
String
getPermissionType
()
{
return
permissionType
;
}
public
void
setPermissionType
(
String
permissionType
)
{
this
.
permissionType
=
permissionType
;
}
public
String
getTargetId
()
{
return
targetId
;
}
public
void
setTargetId
(
String
targetId
)
{
this
.
targetId
=
targetId
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/Role.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.entity.po
;
import
com.ctrip.framework.apollo.common.entity.BaseEntity
;
import
org.hibernate.annotations.SQLDelete
;
import
org.hibernate.annotations.Where
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Entity
@Table
(
name
=
"Role"
)
@SQLDelete
(
sql
=
"Update Role set isDeleted = 1 where id = ?"
)
@Where
(
clause
=
"isDeleted = 0"
)
public
class
Role
extends
BaseEntity
{
@Column
(
name
=
"RoleName"
,
nullable
=
false
)
private
String
roleName
;
public
String
getRoleName
()
{
return
roleName
;
}
public
void
setRoleName
(
String
roleName
)
{
this
.
roleName
=
roleName
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/RolePermission.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.entity.po
;
import
com.ctrip.framework.apollo.common.entity.BaseEntity
;
import
org.hibernate.annotations.SQLDelete
;
import
org.hibernate.annotations.Where
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Entity
@Table
(
name
=
"RolePermission"
)
@SQLDelete
(
sql
=
"Update RolePermission set isDeleted = 1 where id = ?"
)
@Where
(
clause
=
"isDeleted = 0"
)
public
class
RolePermission
extends
BaseEntity
{
@Column
(
name
=
"RoleId"
,
nullable
=
false
)
private
long
roleId
;
@Column
(
name
=
"PermissionId"
,
nullable
=
false
)
private
long
permissionId
;
public
long
getRoleId
()
{
return
roleId
;
}
public
void
setRoleId
(
long
roleId
)
{
this
.
roleId
=
roleId
;
}
public
long
getPermissionId
()
{
return
permissionId
;
}
public
void
setPermissionId
(
long
permissionId
)
{
this
.
permissionId
=
permissionId
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/UserInfo.java
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.entity.po
;
public
class
UserInfo
{
private
String
user
name
;
private
String
user
Id
;
public
String
getUser
name
()
{
return
user
name
;
public
String
getUser
Id
()
{
return
user
Id
;
}
public
void
setUser
name
(
String
username
)
{
this
.
user
name
=
username
;
public
void
setUser
Id
(
String
userId
)
{
this
.
user
Id
=
userId
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/po/UserRole.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.entity.po
;
import
com.ctrip.framework.apollo.common.entity.BaseEntity
;
import
org.hibernate.annotations.SQLDelete
;
import
org.hibernate.annotations.Where
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Entity
@Table
(
name
=
"UserRole"
)
@SQLDelete
(
sql
=
"Update UserRole set isDeleted = 1 where id = ?"
)
@Where
(
clause
=
"isDeleted = 0"
)
public
class
UserRole
extends
BaseEntity
{
@Column
(
name
=
"UserId"
,
nullable
=
false
)
private
String
userId
;
@Column
(
name
=
"RoleId"
,
nullable
=
false
)
private
long
roleId
;
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
long
getRoleId
()
{
return
roleId
;
}
public
void
setRoleId
(
long
roleId
)
{
this
.
roleId
=
roleId
;
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/PermissionRepository.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.repository
;
import
com.ctrip.framework.apollo.portal.entity.po.Permission
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
java.util.Collection
;
import
java.util.List
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
interface
PermissionRepository
extends
PagingAndSortingRepository
<
Permission
,
Long
>
{
/**
* find permission by permission type and targetId
*/
Permission
findTopByPermissionTypeAndTargetId
(
String
permissionType
,
String
targetId
);
/**
* find permissions by permission types and targetId
* @param permissionTypes
* @param targetId
* @return
*/
List
<
Permission
>
findByPermissionTypeInAndTargetId
(
Collection
<
String
>
permissionTypes
,
String
targetId
);
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/RolePermissionRepository.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.repository
;
import
com.ctrip.framework.apollo.portal.entity.po.RolePermission
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
java.util.Collection
;
import
java.util.List
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
interface
RolePermissionRepository
extends
PagingAndSortingRepository
<
RolePermission
,
Long
>
{
/**
* find role permissions by role ids
*/
List
<
RolePermission
>
findByRoleIdIn
(
Collection
<
Long
>
roleId
);
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/RoleRepository.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.repository
;
import
com.ctrip.framework.apollo.portal.entity.po.Role
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
interface
RoleRepository
extends
PagingAndSortingRepository
<
Role
,
Long
>
{
/**
* find role by role name
* @param roleName
* @return
*/
Role
findTopByRoleName
(
String
roleName
);
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/repository/UserRoleRepository.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.repository
;
import
com.ctrip.framework.apollo.portal.entity.po.UserRole
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
interface
UserRoleRepository
extends
PagingAndSortingRepository
<
UserRole
,
Long
>
{
/**
* find user roles by userId
* @param userId
* @return
*/
List
<
UserRole
>
findByUserId
(
String
userId
);
/**
* find user roles by roleId
* @param roleId
* @return
*/
List
<
UserRole
>
findByRoleId
(
long
roleId
);
/**
* find user roles by userIds and roleId
* @param userId
* @param roleId
* @return
*/
List
<
UserRole
>
findByUserIdInAndRoleId
(
Collection
<
String
>
userId
,
long
roleId
);
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalAppService.java
浏览文件 @
d292642d
...
...
@@ -98,7 +98,7 @@ public class PortalAppService {
}
private
void
enrichUserInfo
(
AppDTO
app
){
String
username
=
userInfoHolder
.
getUser
().
getUser
name
();
String
username
=
userInfoHolder
.
getUser
().
getUser
Id
();
app
.
setDataChangeCreatedBy
(
username
);
app
.
setDataChangeLastModifiedBy
(
username
);
}
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalConfigService.java
浏览文件 @
d292642d
...
...
@@ -67,7 +67,7 @@ public class PortalConfigService {
}
try
{
changeSets
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
name
());
changeSets
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
Id
());
itemAPI
.
updateItems
(
appId
,
env
,
clusterName
,
namespaceName
,
changeSets
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"itemAPI.updateItems error. appId{},env:{},clusterName:{},namespaceName:{}"
,
appId
,
env
,
clusterName
,
...
...
@@ -83,7 +83,7 @@ public class PortalConfigService {
throw
new
BadRequestException
(
"namespace:"
+
namespaceName
+
" not exist in env:"
+
env
+
", cluster:"
+
clusterName
);
}
String
username
=
userInfoHolder
.
getUser
().
getUser
name
();
String
username
=
userInfoHolder
.
getUser
().
getUser
Id
();
if
(
StringUtils
.
isEmpty
(
item
.
getDataChangeCreatedBy
()))
{
item
.
setDataChangeCreatedBy
(
username
);
}
...
...
@@ -93,7 +93,7 @@ public class PortalConfigService {
}
public
void
deleteItem
(
Env
env
,
long
itemId
)
{
itemAPI
.
deleteItem
(
env
,
itemId
,
userInfoHolder
.
getUser
().
getUser
name
());
itemAPI
.
deleteItem
(
env
,
itemId
,
userInfoHolder
.
getUser
().
getUser
Id
());
}
/**
...
...
@@ -102,7 +102,7 @@ public class PortalConfigService {
public
ReleaseDTO
createRelease
(
NamespaceReleaseModel
model
)
{
return
releaseAPI
.
release
(
model
.
getAppId
(),
model
.
getEnv
(),
model
.
getClusterName
(),
model
.
getNamespaceName
(),
model
.
getReleaseBy
(),
model
.
getReleaseComment
()
,
userInfoHolder
.
getUser
().
getUser
name
());
,
userInfoHolder
.
getUser
().
getUser
Id
());
}
public
List
<
ItemDTO
>
findItems
(
String
appId
,
Env
env
,
String
clusterName
,
String
namespaceName
)
{
...
...
@@ -114,7 +114,7 @@ public class PortalConfigService {
for
(
ItemDiffs
itemDiff
:
itemDiffs
)
{
NamespaceIdentifer
namespaceIdentifer
=
itemDiff
.
getNamespace
();
ItemChangeSets
changeSets
=
itemDiff
.
getDiffs
();
changeSets
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
name
());
changeSets
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
Id
());
try
{
itemAPI
.
updateItems
(
namespaceIdentifer
.
getAppId
(),
namespaceIdentifer
.
getEnv
(),
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalNamespaceService.java
浏览文件 @
d292642d
...
...
@@ -54,14 +54,14 @@ public class PortalNamespaceService {
public
NamespaceDTO
createNamespace
(
Env
env
,
NamespaceDTO
namespace
)
{
if
(
StringUtils
.
isEmpty
(
namespace
.
getDataChangeCreatedBy
())){
namespace
.
setDataChangeCreatedBy
(
userInfoHolder
.
getUser
().
getUser
name
());
namespace
.
setDataChangeCreatedBy
(
userInfoHolder
.
getUser
().
getUser
Id
());
}
namespace
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
name
());
namespace
.
setDataChangeLastModifiedBy
(
userInfoHolder
.
getUser
().
getUser
Id
());
return
namespaceAPI
.
createNamespace
(
env
,
namespace
);
}
public
void
createAppNamespace
(
AppNamespaceDTO
appNamespace
)
{
String
operator
=
userInfoHolder
.
getUser
().
getUser
name
();
String
operator
=
userInfoHolder
.
getUser
().
getUser
Id
();
if
(
StringUtils
.
isEmpty
(
appNamespace
.
getDataChangeCreatedBy
())){
appNamespace
.
setDataChangeCreatedBy
(
operator
);
}
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/RolePermissionService.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.service
;
import
com.google.common.base.Preconditions
;
import
com.google.common.collect.FluentIterable
;
import
com.google.common.collect.HashMultimap
;
import
com.google.common.collect.Multimap
;
import
com.google.common.collect.Sets
;
import
com.ctrip.framework.apollo.portal.entity.po.Permission
;
import
com.ctrip.framework.apollo.portal.entity.po.Role
;
import
com.ctrip.framework.apollo.portal.entity.po.RolePermission
;
import
com.ctrip.framework.apollo.portal.entity.po.UserInfo
;
import
com.ctrip.framework.apollo.portal.entity.po.UserRole
;
import
com.ctrip.framework.apollo.portal.repository.PermissionRepository
;
import
com.ctrip.framework.apollo.portal.repository.RolePermissionRepository
;
import
com.ctrip.framework.apollo.portal.repository.RoleRepository
;
import
com.ctrip.framework.apollo.portal.repository.UserRoleRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Service
public
class
RolePermissionService
{
@Autowired
private
RoleRepository
roleRepository
;
@Autowired
private
RolePermissionRepository
rolePermissionRepository
;
@Autowired
private
UserRoleRepository
userRoleRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
/**
* Create role with permissions, note that role name should be unique
*/
@Transactional
public
Role
createRoleWithPermissions
(
Role
role
,
Set
<
Long
>
permissionIds
)
{
Role
current
=
roleRepository
.
findTopByRoleName
(
role
.
getRoleName
());
Preconditions
.
checkState
(
current
==
null
,
"Role %s already exists!"
,
role
.
getRoleName
());
Role
createdRole
=
roleRepository
.
save
(
role
);
if
(!
CollectionUtils
.
isEmpty
(
permissionIds
))
{
Iterable
<
RolePermission
>
rolePermissions
=
FluentIterable
.
from
(
permissionIds
).
transform
(
permissionId
->
{
RolePermission
rolePermission
=
new
RolePermission
();
rolePermission
.
setRoleId
(
createdRole
.
getId
());
rolePermission
.
setPermissionId
(
permissionId
);
rolePermission
.
setDataChangeCreatedBy
(
createdRole
.
getDataChangeCreatedBy
());
rolePermission
.
setDataChangeLastModifiedBy
(
createdRole
.
getDataChangeLastModifiedBy
());
return
rolePermission
;
});
rolePermissionRepository
.
save
(
rolePermissions
);
}
return
createdRole
;
}
/**
* Assign role to users
*/
@Transactional
public
void
assignRoleToUsers
(
String
roleName
,
Set
<
String
>
userIds
,
String
operatorUserId
)
{
Role
role
=
roleRepository
.
findTopByRoleName
(
roleName
);
Preconditions
.
checkState
(
role
!=
null
,
"Role %s doesn't exist!"
,
roleName
);
List
<
UserRole
>
existedUserRoles
=
userRoleRepository
.
findByUserIdInAndRoleId
(
userIds
,
role
.
getId
());
Set
<
String
>
existedUserIds
=
FluentIterable
.
from
(
existedUserRoles
).
transform
(
userRole
->
userRole
.
getUserId
()).
toSet
();
Set
<
String
>
toAssignUserIds
=
Sets
.
difference
(
userIds
,
existedUserIds
);
Iterable
<
UserRole
>
toCreate
=
FluentIterable
.
from
(
toAssignUserIds
).
transform
(
userId
->
{
UserRole
userRole
=
new
UserRole
();
userRole
.
setRoleId
(
role
.
getId
());
userRole
.
setUserId
(
userId
);
userRole
.
setDataChangeCreatedBy
(
operatorUserId
);
userRole
.
setDataChangeLastModifiedBy
(
operatorUserId
);
return
userRole
;
});
userRoleRepository
.
save
(
toCreate
);
}
/**
* Remove role from users
*/
@Transactional
public
void
removeRoleFromUsers
(
String
roleName
,
Set
<
String
>
userIds
,
String
operatorUserId
)
{
Role
role
=
roleRepository
.
findTopByRoleName
(
roleName
);
Preconditions
.
checkState
(
role
!=
null
,
"Role %s doesn't exist!"
,
roleName
);
List
<
UserRole
>
existedUserRoles
=
userRoleRepository
.
findByUserIdInAndRoleId
(
userIds
,
role
.
getId
());
for
(
UserRole
userRole
:
existedUserRoles
)
{
userRole
.
setDeleted
(
true
);
userRole
.
setDataChangeLastModifiedTime
(
new
Date
());
userRole
.
setDataChangeLastModifiedBy
(
operatorUserId
);
}
userRoleRepository
.
save
(
existedUserRoles
);
}
/**
* Query users with role
*/
public
Set
<
UserInfo
>
queryUsersWithRole
(
String
roleName
)
{
Role
role
=
roleRepository
.
findTopByRoleName
(
roleName
);
if
(
role
==
null
)
{
return
Collections
.
emptySet
();
}
List
<
UserRole
>
userRoles
=
userRoleRepository
.
findByRoleId
(
role
.
getId
());
Set
<
UserInfo
>
users
=
FluentIterable
.
from
(
userRoles
).
transform
(
userRole
->
{
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUserId
(
userRole
.
getUserId
());
return
userInfo
;
}).
toSet
();
return
users
;
}
/**
* Check whether user has the permission
*/
public
boolean
userHasPermission
(
String
userId
,
String
permissionType
,
String
targetId
)
{
Permission
permission
=
permissionRepository
.
findTopByPermissionTypeAndTargetId
(
permissionType
,
targetId
);
if
(
permission
==
null
)
{
return
false
;
}
List
<
UserRole
>
userRoles
=
userRoleRepository
.
findByUserId
(
userId
);
if
(
CollectionUtils
.
isEmpty
(
userRoles
))
{
return
false
;
}
Set
<
Long
>
roleIds
=
FluentIterable
.
from
(
userRoles
).
transform
(
userRole
->
userRole
.
getRoleId
()).
toSet
();
List
<
RolePermission
>
rolePermissions
=
rolePermissionRepository
.
findByRoleIdIn
(
roleIds
);
if
(
CollectionUtils
.
isEmpty
(
rolePermissions
))
{
return
false
;
}
for
(
RolePermission
rolePermission
:
rolePermissions
)
{
if
(
rolePermission
.
getPermissionId
()
==
permission
.
getId
())
{
return
true
;
}
}
return
false
;
}
/**
* Create permission, note that permissionType + targetId should be unique
*/
@Transactional
public
Permission
createPermission
(
Permission
permission
)
{
String
permissionType
=
permission
.
getPermissionType
();
String
targetId
=
permission
.
getTargetId
();
Permission
current
=
permissionRepository
.
findTopByPermissionTypeAndTargetId
(
permissionType
,
targetId
);
Preconditions
.
checkState
(
current
==
null
,
"Permission with permissionType %s targetId %s already exists!"
,
permissionType
,
targetId
);
return
permissionRepository
.
save
(
permission
);
}
/**
* Create permissions, note that permissionType + targetId should be unique
*/
@Transactional
public
Set
<
Permission
>
createPermissions
(
Set
<
Permission
>
permissions
)
{
Multimap
<
String
,
String
>
targetIdPermissionTypes
=
HashMultimap
.
create
();
for
(
Permission
permission
:
permissions
)
{
targetIdPermissionTypes
.
put
(
permission
.
getTargetId
(),
permission
.
getPermissionType
());
}
for
(
String
targetId
:
targetIdPermissionTypes
.
keySet
())
{
Collection
<
String
>
permissionTypes
=
targetIdPermissionTypes
.
get
(
targetId
);
List
<
Permission
>
current
=
permissionRepository
.
findByPermissionTypeInAndTargetId
(
permissionTypes
,
targetId
);
Preconditions
.
checkState
(
CollectionUtils
.
isEmpty
(
current
),
"Permission with permissionType %s targetId %s already exists!"
,
permissionTypes
,
targetId
);
}
Iterable
<
Permission
>
results
=
permissionRepository
.
save
(
permissions
);
return
FluentIterable
.
from
(
results
).
toSet
();
}
}
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AllTests.java
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal
;
import
com.ctrip.framework.apollo.portal.service.RolePermissionServiceTest
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
...
...
@@ -8,7 +10,7 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
ConfigServiceTest
.
class
,
PropertyResolverTest
.
class
,
NamespaceServiceTest
.
class
NamespaceServiceTest
.
class
,
ServiceExceptionTest
.
class
,
RolePermissionServiceTest
.
class
})
public
class
AllTests
{
...
...
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ConfigServiceTest.java
浏览文件 @
d292642d
...
...
@@ -70,7 +70,7 @@ public class ConfigServiceTest {
when
(
resolver
.
resolve
(
0
,
model
.
getConfigText
(),
itemDTOs
)).
thenReturn
(
changeSets
);
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUser
name
(
"test"
);
userInfo
.
setUser
Id
(
"test"
);
when
(
userInfoHolder
.
getUser
()).
thenReturn
(
userInfo
);
try
{
...
...
@@ -105,7 +105,7 @@ public class ConfigServiceTest {
when
(
itemAPI
.
findItems
(
appId
,
Env
.
valueOf
(
env
),
clusterName
,
namespaceName
)).
thenReturn
(
null
);
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUser
name
(
"test"
);
userInfo
.
setUser
Id
(
"test"
);
when
(
userInfoHolder
.
getUser
()).
thenReturn
(
userInfo
);
List
<
ItemDiffs
>
itemDiffses
=
configService
.
compare
(
namespaceIdentifers
,
sourceItems
);
...
...
@@ -146,7 +146,7 @@ public class ConfigServiceTest {
when
(
itemAPI
.
findItems
(
appId
,
Env
.
valueOf
(
env
),
clusterName
,
namespaceName
)).
thenReturn
(
targetItems
);
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setUser
name
(
"test"
);
userInfo
.
setUser
Id
(
"test"
);
when
(
userInfoHolder
.
getUser
()).
thenReturn
(
userInfo
);
List
<
ItemDiffs
>
itemDiffses
=
configService
.
compare
(
namespaceIdentifers
,
sourceItems
);
...
...
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ServiceExceptionTest.java
浏览文件 @
d292642d
...
...
@@ -45,7 +45,7 @@ public class ServiceExceptionTest extends AbstractPortalTest {
}
private
String
getBaseAppUrl
()
{
return
"http://localhost:"
+
port
+
"/apps/"
;
return
"http://localhost:"
+
port
+
"/apps/
envs/ALL
"
;
}
@Test
...
...
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/RolePermissionServiceTest.java
0 → 100644
浏览文件 @
d292642d
package
com.ctrip.framework.apollo.portal.service
;
import
com.google.common.collect.FluentIterable
;
import
com.google.common.collect.Sets
;
import
com.ctrip.framework.apollo.common.entity.BaseEntity
;
import
com.ctrip.framework.apollo.portal.AbstractPortalTest
;
import
com.ctrip.framework.apollo.portal.entity.po.Permission
;
import
com.ctrip.framework.apollo.portal.entity.po.Role
;
import
com.ctrip.framework.apollo.portal.entity.po.RolePermission
;
import
com.ctrip.framework.apollo.portal.entity.po.UserInfo
;
import
com.ctrip.framework.apollo.portal.entity.po.UserRole
;
import
com.ctrip.framework.apollo.portal.repository.PermissionRepository
;
import
com.ctrip.framework.apollo.portal.repository.RolePermissionRepository
;
import
com.ctrip.framework.apollo.portal.repository.RoleRepository
;
import
com.ctrip.framework.apollo.portal.repository.UserRoleRepository
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.jdbc.Sql
;
import
java.util.List
;
import
java.util.Set
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
/**
* @author Jason Song(song_s@ctrip.com)
*/
public
class
RolePermissionServiceTest
extends
AbstractPortalTest
{
@Autowired
private
RolePermissionService
rolePermissionService
;
@Autowired
private
RoleRepository
roleRepository
;
@Autowired
private
RolePermissionRepository
rolePermissionRepository
;
@Autowired
private
UserRoleRepository
userRoleRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
private
String
someCreatedBy
;
private
String
someLastModifiedBy
;
@Before
public
void
setUp
()
throws
Exception
{
someCreatedBy
=
"someCreatedBy"
;
someLastModifiedBy
=
"someLastModifiedBy"
;
}
@Test
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreatePermission
()
throws
Exception
{
String
someTargetId
=
"someTargetId"
;
String
somePermissionType
=
"somePermissionType"
;
Permission
somePermission
=
assemblePermission
(
somePermissionType
,
someTargetId
);
Permission
created
=
rolePermissionService
.
createPermission
(
somePermission
);
Permission
createdFromDB
=
permissionRepository
.
findOne
(
created
.
getId
());
assertEquals
(
somePermissionType
,
createdFromDB
.
getPermissionType
());
assertEquals
(
someTargetId
,
createdFromDB
.
getTargetId
());
}
@Test
(
expected
=
IllegalStateException
.
class
)
@Sql
(
scripts
=
"/sql/insert-test-permissions.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreatePermissionWithPermissionExisted
()
throws
Exception
{
String
someTargetId
=
"someTargetId"
;
String
somePermissionType
=
"somePermissionType"
;
Permission
somePermission
=
assemblePermission
(
somePermissionType
,
someTargetId
);
rolePermissionService
.
createPermission
(
somePermission
);
}
@Test
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreatePermissions
()
throws
Exception
{
String
someTargetId
=
"someTargetId"
;
String
anotherTargetId
=
"anotherTargetId"
;
String
somePermissionType
=
"somePermissionType"
;
String
anotherPermissionType
=
"anotherPermissionType"
;
Permission
somePermission
=
assemblePermission
(
somePermissionType
,
someTargetId
);
Permission
anotherPermission
=
assemblePermission
(
anotherPermissionType
,
anotherTargetId
);
Set
<
Permission
>
created
=
rolePermissionService
.
createPermissions
(
Sets
.
newHashSet
(
somePermission
,
anotherPermission
));
Set
<
Long
>
permissionIds
=
FluentIterable
.
from
(
created
).
transform
(
BaseEntity:
:
getId
)
.
toSet
();
Iterable
<
Permission
>
permissionsFromDB
=
permissionRepository
.
findAll
(
permissionIds
);
Set
<
String
>
targetIds
=
Sets
.
newHashSet
();
Set
<
String
>
permissionTypes
=
Sets
.
newHashSet
();
for
(
Permission
permission
:
permissionsFromDB
)
{
targetIds
.
add
(
permission
.
getTargetId
());
permissionTypes
.
add
(
permission
.
getPermissionType
());
}
assertEquals
(
2
,
targetIds
.
size
());
assertEquals
(
2
,
permissionTypes
.
size
());
assertTrue
(
targetIds
.
containsAll
(
Sets
.
newHashSet
(
someTargetId
,
anotherTargetId
)));
assertTrue
(
permissionTypes
.
containsAll
(
Sets
.
newHashSet
(
somePermissionType
,
anotherPermissionType
)));
}
@Test
(
expected
=
IllegalStateException
.
class
)
@Sql
(
scripts
=
"/sql/insert-test-permissions.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreatePermissionsWithPermissionsExisted
()
throws
Exception
{
String
someTargetId
=
"someTargetId"
;
String
anotherTargetId
=
"anotherTargetId"
;
String
somePermissionType
=
"somePermissionType"
;
String
anotherPermissionType
=
"anotherPermissionType"
;
Permission
somePermission
=
assemblePermission
(
somePermissionType
,
someTargetId
);
Permission
anotherPermission
=
assemblePermission
(
anotherPermissionType
,
anotherTargetId
);
rolePermissionService
.
createPermissions
(
Sets
.
newHashSet
(
somePermission
,
anotherPermission
));
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-permissions.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreateRoleWithPermissions
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
Role
role
=
assembleRole
(
someRoleName
);
Set
<
Long
>
permissionIds
=
Sets
.
newHashSet
(
990L
,
991L
);
Role
created
=
rolePermissionService
.
createRoleWithPermissions
(
role
,
permissionIds
);
Role
createdFromDB
=
roleRepository
.
findOne
(
created
.
getId
());
List
<
RolePermission
>
rolePermissions
=
rolePermissionRepository
.
findByRoleIdIn
(
Sets
.
newHashSet
(
createdFromDB
.
getId
()));
Set
<
Long
>
rolePermissionIds
=
FluentIterable
.
from
(
rolePermissions
)
.
transform
(
RolePermission:
:
getPermissionId
).
toSet
();
assertEquals
(
someRoleName
,
createdFromDB
.
getRoleName
());
assertEquals
(
2
,
rolePermissionIds
.
size
());
assertTrue
(
rolePermissionIds
.
containsAll
(
permissionIds
));
}
@Test
(
expected
=
IllegalStateException
.
class
)
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testCreateRoleWithPermissionsWithRoleExisted
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
Role
role
=
assembleRole
(
someRoleName
);
rolePermissionService
.
createRoleWithPermissions
(
role
,
null
);
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testAssignRoleToUsers
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
String
someUser
=
"someUser"
;
String
anotherUser
=
"anotherUser"
;
String
operator
=
"operator"
;
Set
<
String
>
users
=
Sets
.
newHashSet
(
someUser
,
anotherUser
);
rolePermissionService
.
assignRoleToUsers
(
someRoleName
,
users
,
operator
);
List
<
UserRole
>
userRoles
=
userRoleRepository
.
findByRoleId
(
990
);
Set
<
String
>
usersWithRole
=
Sets
.
newHashSet
();
for
(
UserRole
userRole
:
userRoles
)
{
assertEquals
(
operator
,
userRole
.
getDataChangeCreatedBy
());
assertEquals
(
operator
,
userRole
.
getDataChangeLastModifiedBy
());
usersWithRole
.
add
(
userRole
.
getUserId
());
}
assertEquals
(
2
,
usersWithRole
.
size
());
assertTrue
(
usersWithRole
.
containsAll
(
users
));
}
@Test
(
expected
=
IllegalStateException
.
class
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testAssignRoleToUsersWithRoleNotExists
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
String
someUser
=
"someUser"
;
String
operator
=
"operator"
;
Set
<
String
>
users
=
Sets
.
newHashSet
(
someUser
);
rolePermissionService
.
assignRoleToUsers
(
someRoleName
,
users
,
operator
);
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-userroles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testAssignRoleToUsersWithUserRolesExisted
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
String
someUser
=
"someUser"
;
String
anotherUser
=
"anotherUser"
;
String
operator
=
"operator"
;
Set
<
String
>
users
=
Sets
.
newHashSet
(
someUser
,
anotherUser
);
rolePermissionService
.
assignRoleToUsers
(
someRoleName
,
users
,
operator
);
List
<
UserRole
>
userRoles
=
userRoleRepository
.
findByRoleId
(
990
);
Set
<
String
>
usersWithRole
=
Sets
.
newHashSet
();
for
(
UserRole
userRole
:
userRoles
)
{
assertEquals
(
"someOperator"
,
userRole
.
getDataChangeCreatedBy
());
assertEquals
(
"someOperator"
,
userRole
.
getDataChangeLastModifiedBy
());
usersWithRole
.
add
(
userRole
.
getUserId
());
}
assertEquals
(
2
,
usersWithRole
.
size
());
assertTrue
(
usersWithRole
.
containsAll
(
users
));
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-userroles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testRemoveRoleFromUsers
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
String
someUser
=
"someUser"
;
String
anotherUser
=
"anotherUser"
;
String
operator
=
"operator"
;
Set
<
String
>
users
=
Sets
.
newHashSet
(
someUser
,
anotherUser
);
List
<
UserRole
>
userRoles
=
userRoleRepository
.
findByRoleId
(
990
);
assertFalse
(
userRoles
.
isEmpty
());
rolePermissionService
.
removeRoleFromUsers
(
someRoleName
,
users
,
operator
);
List
<
UserRole
>
userRolesAfterRemoval
=
userRoleRepository
.
findByRoleId
(
990
);
assertTrue
(
userRolesAfterRemoval
.
isEmpty
());
}
@Test
(
expected
=
IllegalStateException
.
class
)
@Sql
(
scripts
=
"/sql/insert-test-userroles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testRemoveRoleFromUsersWithRoleNotExisted
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
String
someUser
=
"someUser"
;
String
operator
=
"operator"
;
Set
<
String
>
users
=
Sets
.
newHashSet
(
someUser
);
rolePermissionService
.
removeRoleFromUsers
(
someRoleName
,
users
,
operator
);
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-userroles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testQueryUsersWithRole
()
throws
Exception
{
String
someRoleName
=
"someRoleName"
;
Set
<
UserInfo
>
users
=
rolePermissionService
.
queryUsersWithRole
(
someRoleName
);
Set
<
String
>
userIds
=
FluentIterable
.
from
(
users
).
transform
(
UserInfo:
:
getUserId
).
toSet
();
assertTrue
(
userIds
.
containsAll
(
Sets
.
newHashSet
(
"someUser"
,
"anotherUser"
)));
}
@Test
@Sql
(
scripts
=
"/sql/insert-test-roles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-permissions.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-userroles.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/insert-test-rolepermissions.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
BEFORE_TEST_METHOD
)
@Sql
(
scripts
=
"/sql/cleanup.sql"
,
executionPhase
=
Sql
.
ExecutionPhase
.
AFTER_TEST_METHOD
)
public
void
testUserHasPermission
()
throws
Exception
{
String
someTargetId
=
"someTargetId"
;
String
anotherTargetId
=
"anotherTargetId"
;
String
somePermissionType
=
"somePermissionType"
;
String
anotherPermissionType
=
"anotherPermissionType"
;
String
someUser
=
"someUser"
;
String
anotherUser
=
"anotherUser"
;
String
someUserWithNoPermission
=
"someUserWithNoPermission"
;
assertTrue
(
rolePermissionService
.
userHasPermission
(
someUser
,
somePermissionType
,
someTargetId
));
assertTrue
(
rolePermissionService
.
userHasPermission
(
someUser
,
anotherPermissionType
,
anotherTargetId
));
assertTrue
(
rolePermissionService
.
userHasPermission
(
anotherUser
,
somePermissionType
,
someTargetId
));
assertTrue
(
rolePermissionService
.
userHasPermission
(
anotherUser
,
anotherPermissionType
,
anotherTargetId
));
assertFalse
(
rolePermissionService
.
userHasPermission
(
someUserWithNoPermission
,
somePermissionType
,
someTargetId
));
assertFalse
(
rolePermissionService
.
userHasPermission
(
someUserWithNoPermission
,
anotherPermissionType
,
anotherTargetId
));
}
private
Role
assembleRole
(
String
roleName
)
{
Role
role
=
new
Role
();
role
.
setRoleName
(
roleName
);
role
.
setDataChangeCreatedBy
(
someCreatedBy
);
role
.
setDataChangeLastModifiedBy
(
someLastModifiedBy
);
return
role
;
}
private
Permission
assemblePermission
(
String
permissionType
,
String
targetId
)
{
Permission
permission
=
new
Permission
();
permission
.
setPermissionType
(
permissionType
);
permission
.
setTargetId
(
targetId
);
permission
.
setDataChangeCreatedBy
(
someCreatedBy
);
permission
.
setDataChangeLastModifiedBy
(
someCreatedBy
);
return
permission
;
}
}
apollo-portal/src/test/resources/application.properties
浏览文件 @
d292642d
spring.datasource.url
=
jdbc:h2:mem:~/apollo
config
db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1
spring.datasource.url
=
jdbc:h2:mem:~/apollo
portal
db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1
spring.jpa.hibernate.naming_strategy
=
org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.show_sql
=
true
spring.h2.console.enabled
=
true
...
...
apollo-portal/src/test/resources/sql/cleanup.sql
0 → 100644
浏览文件 @
d292642d
delete
from
Permission
;
delete
from
Role
;
delete
from
RolePermission
;
delete
from
UserRole
;
apollo-portal/src/test/resources/sql/insert-test-permissions.sql
0 → 100644
浏览文件 @
d292642d
INSERT
INTO
`permission`
(
`Id`
,
`PermissionType`
,
`TargetId`
)
VALUES
(
990
,
'somePermissionType'
,
'someTargetId'
);
INSERT
INTO
`permission`
(
`Id`
,
`PermissionType`
,
`TargetId`
)
VALUES
(
991
,
'anotherPermissionType'
,
'anotherTargetId'
);
apollo-portal/src/test/resources/sql/insert-test-rolepermissions.sql
0 → 100644
浏览文件 @
d292642d
INSERT
INTO
`rolepermission`
(
`Id`
,
`RoleId`
,
`PermissionId`
)
VALUES
(
990
,
990
,
990
);
INSERT
INTO
`rolepermission`
(
`Id`
,
`RoleId`
,
`PermissionId`
)
VALUES
(
991
,
990
,
991
);
apollo-portal/src/test/resources/sql/insert-test-roles.sql
0 → 100644
浏览文件 @
d292642d
INSERT
INTO
`role`
(
`Id`
,
`RoleName`
)
VALUES
(
990
,
'someRoleName'
);
INSERT
INTO
`role`
(
`Id`
,
`RoleName`
)
VALUES
(
991
,
'anotherRoleName'
);
apollo-portal/src/test/resources/sql/insert-test-userroles.sql
0 → 100644
浏览文件 @
d292642d
INSERT
INTO
`userrole`
(
`Id`
,
`UserId`
,
`RoleId`
,
`DataChange_CreatedBy`
,
`DataChange_LastModifiedBy`
)
VALUES
(
990
,
'someUser'
,
990
,
'someOperator'
,
'someOperator'
);
INSERT
INTO
`userrole`
(
`Id`
,
`UserId`
,
`RoleId`
,
`DataChange_CreatedBy`
,
`DataChange_LastModifiedBy`
)
VALUES
(
991
,
'anotherUser'
,
990
,
'someOperator'
,
'someOperator'
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录