diff --git a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/api/lifecycle/APISecurityTestCase.java b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/api/lifecycle/APISecurityTestCase.java index 45f03f682c..40eae3bcdc 100644 --- a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/api/lifecycle/APISecurityTestCase.java +++ b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/am/integration/tests/api/lifecycle/APISecurityTestCase.java @@ -104,7 +104,9 @@ public class APISecurityTestCase extends APIManagerLifecycleBaseTest { private final String OauthEnabledAPIContext = "OauthEnabledAPI"; private final String apiKeySecuredAPIContext = "apiKeySecuredAPI"; private final String basicAuthSecuredAPI = "BasicAuthSecuredAPI"; + private final String basicAuthAndOauth2SecuredAPI = "BasicAuthAndOauth2SecuredAPI"; private final String basicAuthSecuredAPIContext = "BasicAuthSecuredAPI"; + private final String basicAuthAndOauth2SecuredAPI = "BasicAuthAndOauth2SecuredAPI"; private final String API_END_POINT_METHOD = "/customers/123"; private final String API_VERSION_1_0_0 = "1.0.0"; private final String APPLICATION_NAME = "AccessibilityOfDeprecatedOldAPIAndPublishedCopyAPITestCase"; @@ -119,6 +121,7 @@ public class APISecurityTestCase extends APIManagerLifecycleBaseTest { private String apiId5; private String apiId6; private String apiId7; + private String apiId8; private SubscriptionDTO subscriptionDTO; private final String API_RESPONSE_DATA = "123John"; String users[] = {"apisecUser", "apisecUser2@wso2.com", "apisecUser2@abc.com"}; @@ -353,6 +356,33 @@ public void initialize() HttpResponse response7 = restAPIPublisher.addAPI(apiRequest7); apiId7 = response7.getData(); + + APIRequest apiRequest8 = new APIRequest(basicAuthAndOauth2SecuredAPI, basicAuthAndOauth2SecuredAPI, + new URL(apiEndPointUrl)); + apiRequest8.setVersion(API_VERSION_1_0_0); + apiRequest8.setTiersCollection(APIMIntegrationConstants.API_TIER.UNLIMITED); + apiRequest8.setTier(APIMIntegrationConstants.API_TIER.UNLIMITED); + apiRequest8.setTags(API_TAGS); + apiRequest8.setVisibility(APIDTO.VisibilityEnum.PUBLIC.getValue()); + apiRequest8.setOperationsDTOS(operationsDTOS); + apiRequest8.setProvider(user.getUserName()); + + List securitySchemes8 = new ArrayList<>(); + securitySchemes8.add("basic_auth"); + securitySchemes8.add("oauth_basic_auth_api_key_mandatory"); + securitySchemes8.add("oauth2"); + apiRequest8.setSecurityScheme(securitySchemes5); + apiRequest8.setDefault_version("true"); + apiRequest8.setHttps_checked("https"); + apiRequest8.setHttp_checked(null); + HttpResponse response8 = restAPIPublisher.addAPI(apiRequest8); + apiId8 = response8.getData(); + createAPIRevisionAndDeployUsingRest(apiId8, restAPIPublisher); + restAPIPublisher.changeAPILifeCycleStatusToPublish(apiId8, false); + waitForAPIDeploymentSync(apiRequest5.getProvider(), apiRequest5.getName(), apiRequest5.getVersion(), + APIMIntegrationConstants.IS_API_EXISTS); + + } @Test(description = "This test case tests the behaviour of internal Key token on Created API with authentication " + @@ -1199,6 +1229,16 @@ public void testInvocationWithApiKeysWithoutSubscription() throws Exception { ", but got " + invocationResponseAfterSubscriptionRemoved.getResponseCode()); } + @Test(description = "Testing the invocation with Basic Auth for APIKey Only API", dependsOnMethods = { + "testInvokeBasicAuthAfterCredentialsInvalid"}) + public void testInvocationWithBasicAuthandOauth2ForAPIKey() throws Exception { + Map requestHeaders = new HashMap<>(); + requestHeaders.put("accept", "text/xml"); + requestHeaders.put("Authorization", "Basic abcce"); + HttpResponse response = HTTPSClientUtils.doGet(getAPIInvocationURLHttps(basicAuthSecuredAPIContext, + API_VERSION_1_0_0) + API_END_POINT_METHOD, requestHeaders); + Assert.assertEquals(response.getResponseCode(), HttpStatus.SC_OK); + } @AfterClass(alwaysRun = true) public void cleanUpArtifacts() throws Exception { restAPIStore.deleteApplication(applicationId); @@ -1209,6 +1249,7 @@ public void cleanUpArtifacts() throws Exception { restAPIPublisher.deleteAPI(apiId5); restAPIPublisher.deleteAPI(apiId6); restAPIPublisher.deleteAPI(apiId7); + restAPIPublisher.deleteAPI(apiId8); removeUsers(); }