channel collab user roles test
Fri Sep 01 2023 10:21:06 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.test.context.junit.jupiter.SpringExtension; import java.io.FileReader; import java.io.IOException; import java.util.*; @ExtendWith(SpringExtension.class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) @Tag("channelcollab") public class ChannelCollaborationUserRolesTest extends AbstractChannelNetworkTest { private static String token, url, expected, testDataPath = "src/test/resources/com/modeln/cdm/junit/channelcollab/keyCloakResource.json"; private static List expectedList; @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); System.out.println(obj); 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 = (JsonObject) object; 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); } @Test public void InowBaseNotKeyCloakUserTest() throws Exception { token = generateInowDataOwnerBaseToken(); url = getEnvironment().getProperty("inowKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); 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); } @Test public void CTHPartnerNotKeyCloakUserTest() throws Exception { token = generateCTHPartnerToken(); url = getEnvironment().getProperty("cthKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); 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); } @Test public void test() throws Exception { token = generateTestToken(); System.out.println("token : "+token); url = getEnvironment().getProperty("cthKeyCloakUrl"); List<String> decodedToken = LoadEntitlements(url, token); 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); } }
Comments