|
|
@@ -0,0 +1,93 @@
|
|
|
+package com.etotem.cfc.common;
|
|
|
+
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import static org.junit.jupiter.api.Assertions.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * AdminRoles 角色常量的单元测试。
|
|
|
+ * 覆盖 org_admin 组织管理员角色:角色集合归属、归一化、角色判定、中文标签。
|
|
|
+ */
|
|
|
+class AdminRolesTest {
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void orgAdmin_inResidentRoles() {
|
|
|
+ assertTrue(AdminRoles.RESIDENT_ROLES.contains("org_admin"),
|
|
|
+ "org_admin 应归入入驻角色(只能看自己的/绑定的数据)");
|
|
|
+ assertTrue(AdminRoles.BACKEND_ROLES.contains("org_admin"),
|
|
|
+ "org_admin 应可登录管理后台");
|
|
|
+ assertFalse(AdminRoles.PLATFORM_ROLES.contains("org_admin"),
|
|
|
+ "org_admin 不是平台角色");
|
|
|
+ assertFalse(AdminRoles.CLIENT_ROLES.contains("org_admin"),
|
|
|
+ "org_admin 不是 C 端角色");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void isBackendRole_orgAdmin() {
|
|
|
+ assertTrue(AdminRoles.isBackendRole("org_admin"),
|
|
|
+ "org_admin 属于可登录后台的角色");
|
|
|
+ assertTrue(AdminRoles.isBackendRole(AdminRoles.normalize("org_admin")),
|
|
|
+ "org_admin 归一化后仍为自身");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void isPlatformRole_orgAdmin_false() {
|
|
|
+ assertFalse(AdminRoles.isPlatformRole("org_admin"),
|
|
|
+ "org_admin 不应被当作平台角色");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void hasRole_orgAdmin_true() {
|
|
|
+ List<String> roles = Arrays.asList("org_admin");
|
|
|
+ assertTrue(AdminRoles.hasRole(roles, "org_admin"));
|
|
|
+ assertTrue(AdminRoles.hasAnyBackendRole(roles));
|
|
|
+ assertFalse(AdminRoles.hasAnyPlatformRole(roles));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void nullOrEmptyRoles_safe() {
|
|
|
+ assertFalse(AdminRoles.isOrgAdmin(null));
|
|
|
+ assertFalse(AdminRoles.isOrgAdmin(Collections.emptyList()));
|
|
|
+ assertFalse(AdminRoles.isOrgAdminOnly(null));
|
|
|
+ assertFalse(AdminRoles.hasRole(null, "org_admin"));
|
|
|
+ assertFalse(AdminRoles.hasAnyBackendRole(null));
|
|
|
+ assertFalse(AdminRoles.hasAnyPlatformRole(null));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void roleLabel_orgAdmin() {
|
|
|
+ assertEquals("组织管理员", AdminRoles.roleLabel("org_admin"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void isOrgAdminOnly_withPlatformRole_false() {
|
|
|
+ List<String> orgPlusPlatform = Arrays.asList("org_admin", "admin");
|
|
|
+ assertTrue(AdminRoles.isOrgAdmin(orgPlusPlatform),
|
|
|
+ "含平台角色时仍是 org_admin");
|
|
|
+ assertFalse(AdminRoles.isOrgAdminOnly(orgPlusPlatform),
|
|
|
+ "含平台角色的组织管理员不算纯组织管理员视角");
|
|
|
+ List<String> orgPlusResident = Arrays.asList("org_admin", "teacher");
|
|
|
+ assertTrue(AdminRoles.isOrgAdminOnly(orgPlusResident),
|
|
|
+ "同时是规划师的组织管理员仍视为纯组织管理员视角(不占平台权限)");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void normalize_orgAdmin_passthrough() {
|
|
|
+ assertEquals("org_admin", AdminRoles.normalize("org_admin"));
|
|
|
+ // 与遗留角色互通性:遗留角色归一化不应误伤 org_admin
|
|
|
+ assertNotEquals("org_admin", AdminRoles.normalize("activity_admin"));
|
|
|
+ assertNotEquals("org_admin", AdminRoles.normalize("supplier_admin"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void backendRolesOf_orgAdmin() {
|
|
|
+ List<String> roles = AdminRoles.backendRolesOf(
|
|
|
+ Collections.singletonList("org_admin"), "org_admin");
|
|
|
+ assertEquals(Collections.singletonList("org_admin"), roles,
|
|
|
+ "backendRolesOf 应保留 org_admin");
|
|
|
+ }
|
|
|
+}
|