channel collab user roles nucleusUsername
Wed Sep 20 2023 12:04:18 GMT+0000 (Coordinated Universal Time)
Saved by @thanuj
package com.modeln.channelcollab.junit; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.modeln.channelnetwork.junit.graphql.AbstractChannelNetworkTest; import org.apache.hc.client5.http.classic.methods.HttpPost; import org.apache.hc.client5.http.entity.UrlEncodedFormEntity; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; import org.apache.hc.core5.http.HttpEntity; import org.apache.hc.core5.http.HttpResponse; import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.http.message.BasicNameValuePair; import org.json.JSONObject; import org.junit.Assert; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.FileReader; import java.io.IOException; import java.sql.Date; import java.util.*; import static org.junit.Assert.assertThrows; @ExtendWith(SpringExtension.class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) @Tag("channelcollab") public class ChannelCollaborationUserRolesTest extends AbstractChannelNetworkTest { private static String token, nucleusUsername, url, expected, testDataPath = "src/test/resources/com/modeln/cdm/junit/channelcollab/keyCloakResource.json"; private static List expectedList; private static JsonObject jsonObject; private static String sql = "SELECT distinct JSON_OBJECT( " + " 'reportingPartnerId' value rp.id, " + " 'reportingPartnerSid' value rp.sid , " + " 'reportingPartnerIp' value rp.inow_profile_sid, "+ " 'reportingPartnerCreateDate' value rp.create_date , " + " 'reportingPartnerUpdateDate' value rp.update_date , " + " 'reportingPartnerName' value rcov.entity_name , " + " 'dataType' value dt.type , " + " 'fileType' value ft.type )" + "FROM " + " gs_number gs " + " JOIN reporting_partner rp ON rp.sid = gs.reporting_partner_sid " + " JOIN user_feature_group ufg ON nvl(" + " ufg.reporting_partner_sid, rp.sid" + " )= rp.sid " + " AND nvl(ufg.customer_sid,:customerSid) = :customerSid " + " JOIN service_user su ON su.sid = ufg.service_user_sid " + " JOIN feature_group fg ON fg.sid = ufg.feature_group_sid " + " JOIN feature_assignment fa ON fa.feature_group_sid = fg.sid " + " JOIN feature f ON f.sid = fa.feature_sid " + " AND f.name LIKE 'fileUpload_dataType_%' " + " JOIN data_type dt ON concat('fileUpload_dataType_', dt.type) = f.name " + " JOIN configuration cfg ON cfg.name = dt.type " + " AND cfg.service_name = 'parserService' " + " AND nvl(" + " cfg.reporting_partner_sid, rp.sid" + " )= rp.sid " + " AND nvl(cfg.customer_sid,:customerSid) = :customerSid " + " JOIN file_type ft ON (" + " ft.type = cfg.configuration_type " + " OR (" + " concat(ft.type, '2') = cfg.configuration_type " + " AND ft.type LIKE 'edi%'" + " )" + " ) " + " JOIN RP_CSR_OVERLAY_V rcov ON rcov.ip_sid = rp.inow_profile_sid " + " AND rcov.CUSTOMER_SID = :customerSid " + "WHERE " + " gs.customer_sid = :customerSid " + " AND su.login = :login " + "GROUP BY " + " rp.id, " + " rcov.entity_name, " + " rp.create_date," + " rp.update_date," + " rp.inow_profile_sid," + " rp.sid," + " dt.type, " + " ft.type"; @BeforeAll public void getExpectedData() throws Exception { expected = ReadResource(testDataPath); expectedList = List.of((expected.substring(1, expected.length() - 1)).split(",")); } private static boolean checkSubListstring(List<String> mainList, List<String> subList) { return (mainList.containsAll(subList)); } private String ReadResource(String s) throws Exception { JsonParser parser = new JsonParser(); Object obj = parser.parse(new FileReader(s)); JsonObject jsonObject = (JsonObject) obj; Object type = jsonObject.get("key"); String roles = type.toString(); return roles; } private List<String> LoadEntitlements(String url, String token) throws IOException, org.apache.hc.core5.http.ParseException { CloseableHttpClient client = HttpClientBuilder.create().build(); HttpPost post = new HttpPost(url); ArrayList<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>(); parameters.add(new BasicNameValuePair("grant_type", "urn:ietf:params:oauth:grant-type:uma-ticket")); parameters.add(new BasicNameValuePair("client_id", "ChannelNetwork")); parameters.add(new BasicNameValuePair("audience", "ChannelNetwork")); post.addHeader("Authorization", token); post.addHeader("Content-Type", "application/x-www-form-urlencoded"); parameters.add(new BasicNameValuePair("client_secret", getEnvironment().getProperty("cthKeySecret"))); post.setEntity(new UrlEncodedFormEntity(parameters)); HttpResponse response = client.execute(post); HttpEntity entity = ((CloseableHttpResponse) response).getEntity(); String body = EntityUtils.toString(entity, "UTF-8"); JSONObject obj = new JSONObject(body); String access_token = obj.getString("access_token"); String[] tokenParts = access_token.split("\\."); Base64.Decoder decoder = Base64.getUrlDecoder(); String payLoad = new String(decoder.decode(tokenParts[1])); JsonParser parser = new JsonParser(); Object object = parser.parse(payLoad); jsonObject = (JsonObject) object; System.out.println(jsonObject); JsonObject a = jsonObject.getAsJsonObject("authorization"); JsonArray jsonArray = a.getAsJsonArray("permissions"); List<String> rsNamesList = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JsonElement jsonElement = jsonArray.get(i); JsonObject names = jsonElement.getAsJsonObject(); rsNamesList.add(names.get("rsname").toString()); } return rsNamesList; } @Test public void MfrKeyCloakUserTest() throws Exception { token = generateCTHManufacturerToken(); url = getEnvironment().getProperty("cthKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); Assert.assertTrue("token expected here",decodedToken.size() > 0); boolean isSubArray = checkSubListstring(decodedToken, expectedList); Assert.assertTrue("Expected keycloak source and received keycloak source are different", isSubArray); checkDataTypeandFileType(); Assert.assertEquals(nucleusUsername,"\"cthmanufacturer\""); } @Test public void InowBaseNotKeyCloakUserTest() throws Exception { token = generateInowDataOwnerBaseToken(); System.out.println(token); url = getEnvironment().getProperty("inowKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); System.out.println(decodedToken); Assert.assertTrue("token expected here",decodedToken.size() > 0); boolean isSubArray = checkSubListstring(decodedToken, expectedList); Assert.assertFalse("Expected keycloak source and received keycloak source are different", isSubArray); Assert.assertTrue(jsonObject.get("nucleusUsername")==null); } @Test public void CTHPartnerNotKeyCloakUserTest() throws Exception { token = generateCTHPartnerToken(); System.out.println(token); url = getEnvironment().getProperty("cthKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); System.out.println(decodedToken); Assert.assertTrue("token expected here",decodedToken.size() > 0); boolean isSubArray = checkSubListstring(decodedToken, expectedList); Assert.assertFalse("Expected keycloak source and received keycloak source are different", isSubArray); Assert.assertEquals(jsonObject.get("nucleusUsername").toString(),"\"cthbase\""); } public void checkDataTypeandFileType() throws InterruptedException { nucleusUsername = jsonObject.get("nucleusUsername").toString(); Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("customerSid", 2); paramMap.put("login", "cthmanufacturer"); List data = queryForList(sql, List.class,paramMap); List<String> dataType = new ArrayList<>(); List<String> fileType = new ArrayList<>(); for(int i=0;i<data.size();i++) { String ds = data.get(i).toString(); String json = ds.substring(1, ds.length() - 1); JsonParser parser = new JsonParser(); Object obj = parser.parse(json); JsonObject jsonObject = (JsonObject) obj; Object dataType1 = jsonObject.get("dataType"); String dt = dataType1.toString(); dataType.add(dt); Object fileType1 = jsonObject.get("fileType"); String ft = fileType1.toString(); fileType.add(ft); } System.out.println(dataType); System.out.println(fileType); boolean flag = true; for(int i=0;i<fileType.size();i++){ if(fileType.get(i) != "csv" || fileType.get(i) != "excel" || fileType.get(i) != "json" || fileType.get(i) != "csv" ){ continue; } else { flag = false; break; } } Assert.assertTrue(flag); } }
Comments