DBService implements RolesProvider { public void processExpiredPendingGroupMembers(int pendingGroupMemberLifespan, final String monitorIdentity) { final String auditRef = "Expired - auto reject"; final String caller = "processExpiredPendingGroupMembers"; Map<String, List<DomainGroupMember>> memberList; try (ObjectStoreConnection con = store.getConnection(true, false)) { memberList = con.getExpiredPendingDomainGroupMembers(pendingGroupMemberLifespan); } for (String domainName : memberList.keySet()) { for (DomainGroupMember domainGroupMember : memberList.get(domainName)) { final String principalName = domainGroupMember.getMemberName(); for (GroupMember groupMember : domainGroupMember.getMemberGroups()) { try (ObjectStoreConnection con = store.getConnection(true, true)) { if (con.deletePendingGroupMember(domainName, groupMember.getGroupName(), principalName, monitorIdentity, auditRef)) { auditLogRequest(monitorIdentity, domainName, auditRef, caller, "REJECT", groupMember.getGroupName(), "{\"member\": \"" + principalName + "\"}"); } } } } } } DBService(ObjectStore store, AuditLogger auditLogger, ZMSConfig zmsConfig, AuditReferenceValidator auditReferenceValidator); DomainRoleMembers listOverdueReviewRoleMembers(String domainName); @Override List<Role> getRolesByDomain(String domain); ResourceAccessList getResourceAccessList(String principal, String action); AthenzDomain getAthenzDomain(final String domainName, boolean masterCopy); Quota getQuota(String domainName); void executePutRoleSystemMeta(ResourceContext ctx, final String domainName, final String roleName,
           RoleSystemMeta meta, final String attribute, final String auditRef, final String caller); void executePutGroupSystemMeta(ResourceContext ctx, final String domainName, final String groupName,
                                          GroupSystemMeta meta, final String attribute, final String auditRef); void executePutServiceIdentitySystemMeta(ResourceContext ctx, String domainName, String serviceName,
            ServiceIdentitySystemMeta meta, String attribute, String auditRef, String caller); void executePutRoleMeta(ResourceContext ctx, String domainName, String roleName, Role originalRole,
                                   RoleMeta meta, String auditRef, String caller); void executePutGroupMeta(ResourceContext ctx, final String domainName, final String groupName,
                                    GroupMeta meta, final String auditRef); Set<String> getPendingMembershipApproverRoles(int delayDays); Set<String> getPendingGroupMembershipApproverRoles(int delayDays); Map<String, DomainRoleMember> getRoleExpiryMembers(int delayDays); Map<String, DomainRoleMember> getRoleReviewMembers(int delayDays); Map<String, DomainGroupMember> getGroupExpiryMembers(int delayDays); void processExpiredPendingMembers(int pendingRoleMemberLifespan, final String monitorIdentity); void processExpiredPendingGroupMembers(int pendingGroupMemberLifespan, final String monitorIdentity); static int AUDIT_TYPE_ROLE; static int AUDIT_TYPE_POLICY; static int AUDIT_TYPE_SERVICE; static int AUDIT_TYPE_DOMAIN; static int AUDIT_TYPE_ENTITY; static int AUDIT_TYPE_TENANCY; static int AUDIT_TYPE_TEMPLATE; static int AUDIT_TYPE_GROUP; }
@Test public void testProcessExpiredPendingGroupMembers() { Map<String, List<DomainGroupMember>> memberList = new LinkedHashMap<>(); DomainGroupMember domainGroupMember1 = new DomainGroupMember(); domainGroupMember1.setMemberName("user.user1"); List<GroupMember> memberGroups1 = new ArrayList<>(); memberGroups1.add(new GroupMember().setGroupName("group1")); domainGroupMember1.setMemberGroups(memberGroups1); DomainGroupMember domainGroupMember2 = new DomainGroupMember(); domainGroupMember2.setMemberName("user.user2"); List<GroupMember> memberGroups2 = new ArrayList<>(); memberGroups2.add(new GroupMember().setGroupName("group1")); domainGroupMember2.setMemberGroups(memberGroups2); List<DomainGroupMember> domainGroupMembers = new ArrayList<>(); domainGroupMembers.add(domainGroupMember1); domainGroupMembers.add(domainGroupMember2); memberList.put("dom1", domainGroupMembers); ObjectStore saveStore = zms.dbService.store; zms.dbService.store = mockObjStore; Mockito.when(mockObjStore.getConnection(anyBoolean(), anyBoolean())).thenReturn(mockJdbcConn); Mockito.when(mockJdbcConn.getExpiredPendingDomainGroupMembers(30)).thenReturn(memberList); Mockito.when(mockJdbcConn.deletePendingRoleMember("dom1", "role1", "user.user1", "sys.auth.monitor", "Expired - auto reject")).thenReturn(true); Mockito.when(mockJdbcConn.deletePendingRoleMember("dom1", "role1", "user.user2", "sys.auth.monitor", "Expired - auto reject")).thenReturn(false); zms.dbService.processExpiredPendingMembers(30, "sys.auth.monitor"); zms.dbService.store = saveStore; }