@Test(groups = "wso2.am", description = "Check functionality of the default version API") public void testDefaultVersionAPI() throws Exception { // Login to the API Publisher apiPublisher.login(user.getUserName(), user.getPassword()); String apiName = "DefaultVersionAPI"; String apiVersion = "1.0.0"; String apiContext = "defaultversion"; String endpointUrl = getGatewayURLNhttp() + "response"; // Create the api creation request object APIRequest apiRequest = new APIRequest(apiName, apiContext, new URL(endpointUrl)); apiRequest.setDefault_version("default_version"); apiRequest.setDefault_version_checked("default_version"); apiRequest.setVersion(apiVersion); apiRequest.setTiersCollection("Unlimited"); apiRequest.setTier("Unlimited"); apiRequest.setProvider(provider); // Add the API using the API publisher. HttpResponse response = apiPublisher.addAPI(apiRequest); APILifeCycleStateRequest updateRequest = new APILifeCycleStateRequest(apiName, user.getUserName(), APILifeCycleState.PUBLISHED); // Publish the API response = apiPublisher.changeAPILifeCycleStatus(updateRequest); // Login to the API Store apiStore.login(user.getUserName(), user.getPassword()); // Add an Application in the Store. response = apiStore.addApplication("DefaultVersionAPP", "Unlimited", "", ""); verifyResponse(response); // Subscribe the API to the DefaultApplication SubscriptionRequest subscriptionRequest = new SubscriptionRequest(apiName, apiVersion, provider, "DefaultVersionAPP", "Unlimited"); response = apiStore.subscribe(subscriptionRequest); // Generate production token and invoke with that APPKeyRequestGenerator generateAppKeyRequest = new APPKeyRequestGenerator("DefaultVersionAPP"); String responseString = apiStore.generateApplicationKey(generateAppKeyRequest).getData(); JSONObject jsonResponse = new JSONObject(responseString); // Get the accessToken which was generated. String accessToken = jsonResponse.getJSONObject("data").getJSONObject("key").getString("accessToken"); String apiInvocationUrl = getAPIInvocationURLHttp(apiContext); // Going to access the API without the version in the request url. HttpResponse directResponse = HttpRequestUtil.doGet(endpointUrl, new HashMap<String, String>()); Map<String, String> headers = new HashMap<String, String>(); headers.put("Authorization", "Bearer " + accessToken); // Invoke the API HttpResponse httpResponse = HttpRequestUtil.doGet(apiInvocationUrl, headers); // Check if accessing the back-end directly and accessing it via the API yield the same // responses. assertEquals( httpResponse.getData(), directResponse.getData(), "Default version API test failed while " + "invoking the API."); }