ControllerUtil { public static Response updateMetaDataOnConfigChanges(String name, String type,String currentPolicies, String latestPolicies, String token){ List<String> _currentPolicies = Arrays.asList(currentPolicies.split(",")); List<String> _latestpolicies = Arrays.asList(latestPolicies.split(",")); List<String> _new = new ArrayList<String>(); List<String> _del = new ArrayList<String>(); for(String currPolicy : _currentPolicies){ if(!_latestpolicies.contains(currPolicy)){ _del.add(currPolicy); } } for(String latest : _latestpolicies){ if(!_currentPolicies.contains(latest)){ _new.add(latest); } } Map<String,String> sdbAccessMap = new HashMap<String,String>(); for(String policy : _new){ String policyInfo[] = policy.split("_"); if(policyInfo.length==3){ String access ="" ; switch(policyInfo[0]) { case "r" : access = TVaultConstants.READ_POLICY; break; case "w" : access = TVaultConstants.WRITE_POLICY; break; default: access= TVaultConstants.DENY_POLICY ;break; } String path = policyInfo[1]+"/"+policyInfo[2]; sdbAccessMap.put(path, access); } } for(String policy : _del){ String policyInfo[] = policy.split("_"); if(policyInfo.length==3){ String path = policyInfo[1]+"/"+policyInfo[2]; if(!sdbAccessMap.containsKey(path)){ sdbAccessMap.put(path, "delete"); } } } Iterator<Entry<String,String>> itr = sdbAccessMap.entrySet().iterator(); List<String> failed = new ArrayList<String>(); while(itr.hasNext()){ Entry<String,String> entry = itr.next(); Map<String,String> params = new HashMap<String,String>(); params.put("type", type); params.put("name", name); params.put("path", entry.getKey()); params.put("access", entry.getValue()); Response rsp = updateMetadata(params, token); if(rsp == null || !HttpStatus.NO_CONTENT.equals(rsp.getHttpstatus())){ failed.add(entry.getKey()); } } Response response = new Response(); if(failed.size()==0){ response.setHttpstatus(HttpStatus.OK); }else{ log.error(JSONUtil.getJSON(ImmutableMap.<String, String>builder(). put(LogMessage.USER, ThreadLocalContext.getCurrentMap().get(LogMessage.USER).toString()). put(LogMessage.ACTION, "updateMetaDataOnConfigChanges"). put(LogMessage.MESSAGE, String.format ("updateMetaDataOnConfigChanges failed ")). put(LogMessage.APIURL, ThreadLocalContext.getCurrentMap().get(LogMessage.APIURL).toString()). build())); response.setHttpstatus(HttpStatus.MULTI_STATUS); response.setResponse("Meta data update failed for "+failed.toString() ); } return response; }  @Autowired(required = true) void setreqProcessor(RequestProcessor reqProcessor); static RequestProcessor getReqProcessor(); static OIDCUtil getOidcUtil(); @Autowired(required = true) void setOidcUtil(OIDCUtil oidcUtil); static void recursivedeletesdb(String jsonstr,String token,  Response responseVO); static void recursiveRead(String jsonstr,String token,  Response responseVO, SafeNode safeNode); static void getFoldersAndSecrets(String jsonstr,String token,  Response responseVO, SafeNode safeNode); static Response configureLDAPUser(String userName,String policies,String groups,String token ); static Response configureUserpassUser(String userName,String policies,String token ); static Response configureLDAPGroup(String groupName,String policies,String token ); static Response configureAWSRole(String roleName,String policies,String token ); static Response configureAWSIAMRole(String roleName,String policies,String token ); static Response updateMetadata(Map<String,String> params,String token); static Response updateMetaDataOnConfigChanges(String name, String type,String currentPolicies, String latestPolicies, String token); static Response updateMetadataOnSvcUpdate(String path, ServiceAccount serviceAccount, String token); static Response updateMetadataOnSvcaccPwdReset(Map<String,String> params,String token); static Map<String,Object> parseJson(String jsonString); static String convetToJson(Map<String,Object> jsonMap); static String getPoliciesAsStringFromJson(ObjectMapper objMapper, String policyJson); static List<String> getPoliciesAsListFromJson(ObjectMapper objMapper, String policyJson); static void updateUserPolicyAssociationOnSDBDelete(String sdb,Map<String,String> acessInfo,String token, UserDetails userDetails); static void updateGroupPolicyAssociationOnSDBDelete(String sdb,Map<String,String> acessInfo,String token, UserDetails userDetails); static void updateAwsRolePolicyAssociationOnSDBDelete(String sdb,Map<String,String> acessInfo,String token); static void deleteAwsRoleOnSDBDelete(String sdb,Map<String,String> acessInfo,String token); static boolean isValidDataPath(String path); static boolean isPathValid(String path); static boolean isValidSafePath(String path); static String getSafePath(String path); static String getSafeType(String path); static String getSafeName(String path); static boolean canAddPermission(String path,String token); static boolean isValidSafe(String path,String token); static boolean areSDBInputsValid(Map<String, Object> requestParams); static boolean areSDBInputsValid(Safe safe); static boolean areSDBInputsValidForUpdate(Map<String, Object> requestParams); static boolean areSafeGroupInputsValid(Map<String,String> requestMap); static boolean areAWSRoleInputsValid(Map<String, String> requestMap); static boolean areSafeUserInputsValid(SafeUser safeUser); static boolean areSafeUserInputsValid(Map<String,Object> requestMap); static boolean areSafeGroupInputsValid(SafeGroup safeGroup); static boolean areSafeAppRoleInputsValid(Map<String,Object> requestMap); static boolean areAWSRoleInputsValid(AWSRole awsRole); static String converSDBInputsToLowerCase(String jsonStr); static void converSDBInputsToLowerCase(Safe safe); static String convertAppRoleInputsToLowerCase(String jsonstr); static String convertSafeAppRoleAccessToLowerCase(String jsonstr); static String convertAppRoleSecretIdToLowerCase(String jsonstr); static boolean isSecretKeyValid(String jsonString); static boolean areAppRoleInputsValid(String jsonstr); static boolean areAppRoleInputsValid(AppRole approle); static AppRole getAppRoleObjFromString(String jsonstr); static boolean areSecretKeysValid(String jsonString); static String addDefaultSecretKey(String jsonString); static boolean areAwsLoginInputsValid(AWSAuthType authType, AWSAuthLogin awsAuthLogin); static boolean areAWSEC2RoleInputsValid(AWSLoginRole awsLoginRole); static boolean areAWSEC2RoleInputsValid(String jsonStr); static boolean areAWSIAMRoleInputsValid(AWSIAMRole awsiamRole); static HashMap<String, List<String>> getAllExistingSafeNames(String token); static List<String> getAllExistingSafeNames(String type, String token); static int getCountOfSafesForGivenSafeName(String safeName, String token); static int getCountOfSafesForGivenSafeName(String safeName, String safeType, String token); static String generateSafePath(String safeName, String safeType); static String populateAWSMetaJson(String appRoleName, String username); static boolean createMetadata(String metadataJson, String token); static Response canDeleteRole(String roleName, String token, UserDetails userDetails, String metadataPath); static String populateAppRoleMetaJson(String appRoleName, String username); static String populateUserMetaJson(String appRoleName, String username); static SSCred readSSCredFile(String fileLocation, boolean isDelete); static String getNclmUsername(); static String getNclmPassword(); static String getCwmToken(); static String getSsUsername(); static void setSscred(SSCred sscred); static String getSsPassword(); static SSCred getSscred(); static OIDCCred readOIDCCredFile(String fileLocation, boolean isDelete); static String getOidcClientName(); static String getOidcClientId(); static String getOidcClientSecret(); static String getOidcBoundAudiences(); static String getOidcDiscoveryUrl(); static String getOidcADLoginUrl(); static OIDCCred getOidcCred(); static Response hideMasterAppRoleFromResponse(Response response); static boolean updateMetaData(String path, Map<String,String> params,String token); static boolean arecertificateGroupInputsValid(CertificateGroup certificateGroup); static boolean canAddCertPermission(String path,String certificateName,String token); static List<String> getAllExistingCertNames(String type, String token); static Response updateSslCertificateMetadata(Map<String,String> params,String token); static Response updateSslMetaDataOnConfigChanges(String name, String type,String currentPolicies, String latestPolicies, String token); static Map<String,Object> filterDuplicateSafePermissions(Map<String,Object> access); static Map<String,Object> filterDuplicateSvcaccPermissions(Map<String,Object> access); static final Logger log; }
@Test public void test_updateMetaDataOnConfigChanges_successfully() { String token = "7QPMPIGiyDFlJkrK3jFykUqa"; Response actualResponse = ControllerUtil.updateMetaDataOnConfigChanges("role1", "roles", "", "\"[prod, dev\"]", token); assertEquals(HttpStatus.OK, actualResponse.getHttpstatus()); }
@Test public void test_updateMetaDataOnConfigChanges_successfully_() { String token = "7QPMPIGiyDFlJkrK3jFykUqa"; Response metaResponse = getMockResponse(HttpStatus.OK, true, "{\"data\":{\"description\":\"My first safe\",\"name\":\"safe01\",\"owner\":\"youremail@yourcompany.com\",\"ownerid\":\"normaluser\",\"type\":\"\"}}"); when(reqProcessor.process(eq("/read"),Mockito.any(),eq(token))).thenReturn(metaResponse); Response response = getMockResponse(HttpStatus.NO_CONTENT, true, ""); when(reqProcessor.process(eq("/write"),Mockito.any(),eq(token))).thenReturn(response); Response actualResponse = ControllerUtil.updateMetaDataOnConfigChanges("role1", "roles", "", "\"[prod, w_users_safe01\"]", token); assertEquals(HttpStatus.OK, actualResponse.getHttpstatus()); }
@Test public void test_updateMetaDataOnConfigChanges_successfully_existing_policies() { String token = "7QPMPIGiyDFlJkrK3jFykUqa"; Response metaResponse = getMockResponse(HttpStatus.OK, true, "{\"data\":{\"description\":\"My first safe\",\"name\":\"safe01\",\"owner\":\"youremail@yourcompany.com\",\"ownerid\":\"normaluser\",\"type\":\"\"}}"); when(reqProcessor.process(eq("/read"),Mockito.any(),eq(token))).thenReturn(metaResponse); Response response = getMockResponse(HttpStatus.NOT_FOUND, true, ""); when(reqProcessor.process(eq("/write"),Mockito.any(),eq(token))).thenReturn(response); Response actualResponse = ControllerUtil.updateMetaDataOnConfigChanges("role1", "roles", "\"[w_users_safe01\"]", "\"[prod, dev\"]", token); assertEquals(HttpStatus.MULTI_STATUS, actualResponse.getHttpstatus()); assertEquals("Meta data update failed for [users/safe01\"]]", actualResponse.getResponse()); }