From d49a06df3ffaf96b589cc211a05e010b4b54d3b6 Mon Sep 17 00:00:00 2001 From: tharikaGitHub Date: Thu, 29 Feb 2024 12:21:16 +0530 Subject: [PATCH] Revert test case changes coming from Resource level logs improvement --- .../tests/logging/APILoggingTest.java | 187 +----------------- 1 file changed, 10 insertions(+), 177 deletions(-) diff --git a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/logging/APILoggingTest.java b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/logging/APILoggingTest.java index 95c09cd93f..1dad34812a 100644 --- a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/logging/APILoggingTest.java +++ b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/logging/APILoggingTest.java @@ -19,31 +19,26 @@ import org.apache.axis2.AxisFault; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.httpclient.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ssl.AllowAllHostnameVerifier; import org.apache.http.impl.client.HttpClientBuilder; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Factory; import org.testng.annotations.Test; -import org.wso2.am.integration.clients.publisher.api.v1.dto.APIOperationsDTO; import org.wso2.am.integration.clients.store.api.v1.dto.ApplicationDTO; import org.wso2.am.integration.clients.store.api.v1.dto.ApplicationKeyDTO; import org.wso2.am.integration.clients.store.api.v1.dto.ApplicationKeyGenerateRequestDTO; import org.wso2.am.integration.test.utils.APIManagerIntegrationTestException; import org.wso2.am.integration.test.utils.base.APIMIntegrationConstants; import org.wso2.am.integration.test.utils.bean.APIRequest; -import org.wso2.am.integration.test.utils.bean.APIThrottlingTier; import org.wso2.am.integration.test.utils.http.HTTPSClientUtils; import org.wso2.am.integration.tests.api.lifecycle.APIManagerLifecycleBaseTest; import org.wso2.am.integration.tests.restapi.RESTAPITestConstants; import org.wso2.carbon.automation.engine.context.TestUserMode; import org.wso2.carbon.automation.test.utils.http.client.HttpResponse; -import org.wso2.carbon.user.mgt.stub.UserAdminUserAdminException; import org.wso2.carbon.utils.ServerConstants; import java.io.BufferedReader; @@ -51,10 +46,8 @@ import java.io.FileReader; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import javax.xml.xpath.XPathExpressionException; @@ -64,19 +57,7 @@ public class APILoggingTest extends APIManagerLifecycleBaseTest { private String apiId; - private String apiId2; - private APIRequest apiRequest; - private Map requestHeaders = new HashMap(); private String applicationId; - private ArrayList grantTypes = new ArrayList<>(); - private final String CALLBACK_URL = "https://localhost:9443/store/"; - private String applicationId2; - private final String TIER_COLLECTION = APIMIntegrationConstants.API_TIER.UNLIMITED; - private String API_VERSION = "1.0.0"; - private String endpointUrl; - private int logLineCounter = 0; - private String tokenURL; - private String identityLoginURL; @Factory(dataProvider = "userModeDataProvider") public APILoggingTest(TestUserMode userMode) { @@ -89,9 +70,7 @@ public static Object[][] userModeDataProvider() { } @BeforeClass(alwaysRun = true) - public void initialize() throws APIManagerIntegrationTestException, RemoteException, XPathExpressionException, - UserAdminUserAdminException { - logLineCounter = 0; + public void initialize() throws APIManagerIntegrationTestException, AxisFault, XPathExpressionException { super.init(); } @@ -112,6 +91,7 @@ public void testAPIPerAPILoggingTestcase() throws Exception { String API_CONTEXT = "apiloggingtest"; String API_TAGS = "testTag1, testTag2, testTag3"; String API_END_POINT_POSTFIX_URL = "xmlapi"; + String API_VERSION = "1.0.0"; String APPLICATION_NAME = "APILoggingTestApp"; // Create an application @@ -135,11 +115,10 @@ public void testAPIPerAPILoggingTestcase() throws Exception { // Get list of APIs with an API loggingResponse = HTTPSClientUtils.doGet(getStoreURLHttps() + "api/am/devops/v0/tenant-logs/carbon.super/apis", header); - assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/" + API_CONTEXT + "/" + API_VERSION + - "\",\"logLevel\":\"OFF\",\"apiId\":\"" + apiId + "\",\"resourceMethod\":null,\"resourcePath\":null}," + - "{\"context\":\"/" + API_CONTEXT + "/" + API_VERSION + "\",\"logLevel\":\"OFF\",\"apiId\":\""+apiId+"\",\"" + - "resourceMethod\":\"GET\",\"resourcePath\":\"" - + apiRequest.getUriTemplate() + "\"}]}"); + assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/" + API_CONTEXT + "/" + API_VERSION + "\"," + + "\"logLevel\":\"OFF\",\"apiId\":\"" + apiId + "\"}]}"); + + // Change logLevel to FULL String addNewLoggerPayload = "{ \"logLevel\": \"FULL\" }"; HTTPSClientUtils.doPut(getStoreURLHttps() + "api/am/devops/v0/tenant-logs/carbon.super/apis/" + apiId, header, addNewLoggerPayload); @@ -147,9 +126,8 @@ public void testAPIPerAPILoggingTestcase() throws Exception { // Get list of APIs which have log-level=FULL loggingResponse = HTTPSClientUtils.doGet(getStoreURLHttps() + "api/am/devops/v0/tenant-logs/carbon.super/apis?log-level=full", header); - assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/" + API_CONTEXT + "/" + API_VERSION + - "\",\"logLevel\":\"FULL\",\"apiId\":\"" + apiId + "\",\"resourceMethod\":null,\"resourcePath\":null}" + - "]}"); + assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/" + API_CONTEXT + "/" + API_VERSION + "\"," + + "\"logLevel\":\"FULL\",\"apiId\":\"" + apiId + "\"}]}"); // Invoke the API ArrayList grantTypes = new ArrayList<>(); grantTypes.add("client_credentials"); @@ -169,160 +147,15 @@ public void testAPIPerAPILoggingTestcase() throws Exception { + File.separator + "logs" + File.separator + "api.log"; BufferedReader bufferedReader = new BufferedReader(new FileReader(apiLogFilePath)); String logLine; - int lineNo = 0; - while ((logLine = bufferedReader.readLine()) != null) { - if (lineNo == logLineCounter) { - if (logLineCounter < 4 || (logLineCounter >= 8 && logLineCounter < 12)) { - assertTrue(logLine.contains("INFO {API_LOG} " + API_NAME)); - assertTrue(logLine.contains("correlationId")); - } - logLineCounter++; - } - lineNo++; - } - } - - @Test(groups = {"wso2.am"}, description = "Sending http request to per API logging enabled API: ", - dependsOnMethods = "testAPIPerAPILoggingTestcase") - public void testAPIPerAPIResourceLoggingTestcase() throws Exception { - // Get list of APIs without any API - Map header = new HashMap<>(); - byte[] encodedBytes = Base64.encodeBase64(RESTAPITestConstants.BASIC_AUTH_HEADER - .getBytes(StandardCharsets.UTF_8)); - header.put("Authorization", "Basic " + new String(encodedBytes, StandardCharsets.UTF_8)); - header.put("Content-Type", "application/json"); - HttpResponse loggingResponse = HTTPSClientUtils.doGet(getStoreURLHttps() - + "api/am/devops/v0/tenant-logs/carbon.super/apis?log-level=full", header); - assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/apiloggingtest/" + API_VERSION + - "\",\"logLevel\":\"FULL\",\"apiId\":\"" + apiId + "\",\"resourceMethod\":null,\"resourcePath\":null}" + - "]}"); - - String API_NAME = "APILoggingTestAPIWithResources"; - String API_CONTEXT = "apiloggingtestwithresources"; - String API_TAGS = "testTag1, testTag2, testTag3"; - String APPLICATION_NAME = "APILoggingTestApp2"; - String DESCRIPTION = "This is a test Application"; - - storeURLHttp = getStoreURLHttp(); - endpointUrl = backEndServerUrl.getWebAppURLHttp() + "am/sample/calculator/v1/api"; - tokenURL = getKeyManagerURLHttps() + "oauth2/token"; - identityLoginURL = getKeyManagerURLHttps() + "oauth2/authorize"; - - //create Application - HttpResponse applicationResponse = restAPIStore.createApplication(APPLICATION_NAME, - "Test Application", APIThrottlingTier.UNLIMITED.getState(), - ApplicationDTO.TokenTypeEnum.JWT); - assertEquals(applicationResponse.getResponseCode(), HttpStatus.SC_OK, "Response code is not as expected"); - applicationId2 = applicationResponse.getData(); - String providerName = user.getUserName(); - - List apiOperationsDTOS = new ArrayList<>(); - APIOperationsDTO apiOperationsDTOAdd = new APIOperationsDTO(); - APIOperationsDTO apiOperationsDTOMultiply = new APIOperationsDTO(); - apiOperationsDTOAdd.setVerb(RESTAPITestConstants.GET_METHOD); - apiOperationsDTOAdd - .setAuthType(APIMIntegrationConstants.ResourceAuthTypes.APPLICATION_AND_APPLICATION_USER.getAuthType()); - apiOperationsDTOMultiply.setVerb(RESTAPITestConstants.GET_METHOD); - apiOperationsDTOMultiply - .setAuthType(APIMIntegrationConstants.ResourceAuthTypes.APPLICATION_AND_APPLICATION_USER.getAuthType()); - apiOperationsDTOAdd.setThrottlingPolicy(APIMIntegrationConstants.RESOURCE_TIER.TWENTYK_PER_MIN); - apiOperationsDTOMultiply.setThrottlingPolicy(APIMIntegrationConstants.RESOURCE_TIER.TWENTYK_PER_MIN); - apiOperationsDTOAdd.setTarget("/add"); - apiOperationsDTOMultiply.setTarget("/multiply"); - apiOperationsDTOS.add(apiOperationsDTOAdd); - apiOperationsDTOS.add(apiOperationsDTOMultiply); - - apiRequest = new APIRequest(API_NAME, API_CONTEXT, new URL(endpointUrl)); - apiRequest.setVersion(API_VERSION); - apiRequest.setProvider(providerName); - apiRequest.setTiersCollection(APIMIntegrationConstants.API_TIER.UNLIMITED); - apiRequest.setTier(APIMIntegrationConstants.API_TIER.UNLIMITED); - apiRequest.setOperationsDTOS(apiOperationsDTOS); - apiRequest.setTiersCollection(TIER_COLLECTION); - apiRequest.setTags(API_TAGS); - apiRequest.setDescription(DESCRIPTION); - - // Create an API and subscribe to it using created application - apiId2 = createPublishAndSubscribeToAPIUsingRest(apiRequest, restAPIPublisher, restAPIStore, applicationId2, - APIMIntegrationConstants.API_TIER.UNLIMITED); - - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.CLIENT_CREDENTIAL); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.AUTHORIZATION_CODE); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.PASSWORD); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.REFRESH_CODE); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.SAML2); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.NTLM); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.JWT); - grantTypes.add(APIMIntegrationConstants.GRANT_TYPE.IMPLICIT); - - ApplicationKeyDTO applicationKeyDTO = restAPIStore - .generateKeys(applicationId2, "3600", CALLBACK_URL, ApplicationKeyGenerateRequestDTO.KeyTypeEnum.PRODUCTION, - null, grantTypes); - assertNotNull(applicationKeyDTO.getToken().getAccessToken()); - String consumerKey = applicationKeyDTO.getConsumerKey(); - String consumerSecret = applicationKeyDTO.getConsumerSecret(); - Assert.assertNotNull(consumerKey, "Consumer Key not found"); - Assert.assertNotNull(consumerSecret, "Consumer Secret not found "); - - //Invoking the api with /add and /multiply with logging disabled - requestHeaders.clear(); - requestHeaders.put(APIMIntegrationConstants.AUTHORIZATION_HEADER, "Bearer " + - applicationKeyDTO.getToken().getAccessToken()); - String invokeURL = getAPIInvocationURLHttp(API_CONTEXT, API_VERSION); - HttpResponse res1 = HTTPSClientUtils.doGet(invokeURL + "/add?x=1&y=1", requestHeaders); - HttpResponse res2 = HTTPSClientUtils.doGet(invokeURL + "/multiply?x=1&y=1", requestHeaders); - assertEquals(res1.getResponseCode(), HTTP_RESPONSE_CODE_OK, - "Invocation fails for GET request"); - assertEquals(res2.getResponseCode(), HTTP_RESPONSE_CODE_OK, - "Invocation fails for GET request"); - //Enabling the log level as full for the /add resource path and GET resource method - String addNewLoggerPayload = "{\"logLevel\": \"full\", \"resourceMethod\":\"GET\", \"resourcePath\":\"/add\"}"; - HTTPSClientUtils.doPut(getStoreURLHttps() + "api/am/devops/v0/tenant-logs/carbon.super/apis/" + apiId2, - header, addNewLoggerPayload); - //Get the apis which have enabled the log level as full - loggingResponse = HTTPSClientUtils.doGet(getStoreURLHttps() - + "api/am/devops/v0/tenant-logs/carbon.super/apis?log-level=full", header); - assertEquals(loggingResponse.getData(), "{\"apis\":[{\"context\":\"/apiloggingtest/1.0.0\",\"logLevel\":" + - "\"FULL\",\"apiId\":\"" + apiId + "\",\"resourceMethod\":null,\"resourcePath\":null},{\"context\":\"/" - + API_CONTEXT + "/1.0.0\",\"logLevel\":\"FULL\",\"apiId\":\"" + apiId2 + "\",\"resourceMethod\":" + - "\"GET\",\"resourcePath\":\"/add\"}]}"); - Thread.sleep(1000); - //Invoking the /add and /multply resource, When invoking /add, full log should be printed. - res1 = HTTPSClientUtils.doGet(invokeURL + "/add?x=1&y=1", requestHeaders); - res2 = HTTPSClientUtils.doGet(invokeURL + "/multiply?x=1&y=1", requestHeaders); - assertEquals(res1.getResponseCode(), HTTP_RESPONSE_CODE_OK, - "Invocation fails for GET request"); - assertEquals(res2.getResponseCode(), HTTP_RESPONSE_CODE_OK, - "Invocation fails for GET request"); - - //Disabling the log level. - addNewLoggerPayload = "{\"logLevel\": \"off\", \"resourceMethod\":\"GET\", \"resourcePath\":\"/add\"}"; - HTTPSClientUtils.doPut(getStoreURLHttps() + "api/am/devops/v0/tenant-logs/carbon.super/apis/" + apiId2, - header, addNewLoggerPayload); - - //Validate API Logs - String apiLogFilePath = System.getProperty(ServerConstants.CARBON_HOME) + File.separator + "repository" - + File.separator + "logs" + File.separator + "api.log"; - String logLine; - BufferedReader bufferedReader = new BufferedReader(new FileReader(apiLogFilePath)); - int lineNo = 0; while ((logLine = bufferedReader.readLine()) != null) { - if (lineNo == logLineCounter) { - if (logLineCounter >= 12 || (logLineCounter >= 4 && logLineCounter < 8)) { - assertTrue(logLine.contains("INFO {API_LOG} " + API_NAME)); - assertTrue(logLine.contains("correlationId")); - } - logLineCounter++; - } - lineNo++; + assertTrue(logLine.contains("INFO {API_LOG} " + API_NAME)); + assertTrue(logLine.contains("correlationId")); } } @AfterClass(alwaysRun = true) void destroy() throws Exception { restAPIStore.deleteApplication(applicationId); - restAPIStore.deleteApplication(applicationId2); restAPIPublisher.deleteAPI(apiId); - restAPIPublisher.deleteAPI(apiId2); } }