Skip to content

Commit

Permalink
Merge pull request #151 from project-sunbird/release-1.13
Browse files Browse the repository at this point in the history
Release 1.13
  • Loading branch information
manzarul authored Jan 2, 2019
2 parents 8ad4a9d + 528e19e commit 7efb7e1
Show file tree
Hide file tree
Showing 180 changed files with 4,730 additions and 155 deletions.
1 change: 1 addition & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ pipeline {
sunbird_user_framework_subject = "English"
content_reviewer_user="[email protected]"
content_reviewer_password="password"
sunbird_user_framework_id="NCF"
}

agent { label "build-slave" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ public class OrgUtil {
private static final String rootOrgProviderId =
"FT_Org_Provider_" + Instant.now().getEpochSecond();

private static final String sunbirdDefaultOrg = System.getenv("sunbird_default_channel");;

public static String getDefaultSunbirdRootOrg() {
return sunbirdDefaultOrg;
}

public static String getRootOrgChannel() {
return rootOrgChannel;
}
Expand Down Expand Up @@ -158,7 +164,7 @@ public static String getSearchOrgId(
runner,
testContext,
"templates/organisation/search",
"testSearchOrgSuccessWithFilterByChannel",
"testSearchRootOrgIdSuccessFilterByChannel",
Constant.EXTRACT_VAR_SEARCH_ROOT_ORG_ID,
HttpStatus.OK);
searchedOrgId = testContext.getVariable(Constant.EXTRACT_VAR_SEARCH_ROOT_ORG_ID);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package org.sunbird.common.action;

import com.consol.citrus.context.TestContext;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.sunbird.common.util.Constant;
import org.sunbird.integration.test.common.BaseCitrusTestRunner;
import org.sunbird.integration.test.user.EndpointConfig;

import java.util.Map;
import java.util.UUID;

/**
* This Util Class holds methods to Create Content for TOC API's Test Cases.
* @author Gauraw
*/
public class TOCUtil {

private static final String CONTENT_CREATE_URL = "/content/v1/create";
private static final String CONTENT_UPDATE_HIERARCHY_URL = "/course/v1/hierarchy/update";
private static final String TOC_TEMPLATE_DIR = "templates/textbook/toc";
private static final String CREATE_TEST_TEXTBOOK = "createTestTextbookSuccess";
private static final String CREATE_TEST_TEXTBOOK_WITH_CHILDREN = "createTestTextbookWithChildrenSuccess";
private static final String CREATE_TEST_RESOURCE_CONTENT = "createTestResourceContentSuccess";
private static EndpointConfig.TestGlobalProperty config = new EndpointConfig().initGlobalValues();

private static String textbookId = "";
private static String textbookUnitId = UUID.randomUUID().toString();

public static String createTextbook(BaseCitrusTestRunner runner, TestContext testContext) {
return createContent(runner, testContext, CREATE_TEST_TEXTBOOK);
}

public static String createTextbookWithChildren(BaseCitrusTestRunner runner, TestContext testContext) {
textbookId = createContent(runner, testContext, CREATE_TEST_TEXTBOOK);
runner.variable("textbookId", textbookId);
updateContentHierarchy(runner, testContext, CREATE_TEST_TEXTBOOK_WITH_CHILDREN);
return textbookId;
}

public static String createResourceContent(BaseCitrusTestRunner runner, TestContext testContext) {
return createContent(runner, testContext, CREATE_TEST_RESOURCE_CONTENT);
}

private static String createContent(BaseCitrusTestRunner runner, TestContext testContext, String testName) {
String contentId = "";
runner.http(
builder ->
TestActionUtil.getPostRequestTestAction(
builder,
Constant.CONTENT_STORE_ENDPOINT,
TOC_TEMPLATE_DIR,
testName,
CONTENT_CREATE_URL,
Constant.REQUEST_JSON,
MediaType.APPLICATION_JSON.toString(),
getHeaders()));
runner.http(
builder ->
TestActionUtil.getExtractFromResponseTestAction(
testContext,
builder,
Constant.CONTENT_STORE_ENDPOINT,
HttpStatus.OK,
"$.result.content_id",
"contentId"));
contentId = testContext.getVariable("contentId");
runner.sleep(Constant.ES_SYNC_WAIT_TIME);
return contentId;
}

private static void updateContentHierarchy(BaseCitrusTestRunner runner, TestContext testContext, String testName) {
runner.http(
builder ->
TestActionUtil.getPatchRequestTestAction(
builder,
Constant.CONTENT_STORE_ENDPOINT,
TOC_TEMPLATE_DIR,
testName,
CONTENT_UPDATE_HIERARCHY_URL,
Constant.REQUEST_JSON,
MediaType.APPLICATION_JSON.toString(),
getHeaders()));
runner.http(
builder ->
TestActionUtil.getResponseTestAction(
builder,
Constant.CONTENT_STORE_ENDPOINT,
"testUpdateCourseSuccess",
HttpStatus.OK));
}

private static Map<String, Object> getHeaders() {
Map<String, Object> headers = TestActionUtil.getHeaders(true);
headers.put(Constant.X_CHANNEL_ID,config.getSunbirdDefaultChannel());
headers.put(Constant.AUTHORIZATION, Constant.BEARER + System.getenv("content_store_api_key"));
return headers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ public static Map<String, Object> getHeaders(boolean isAuthRequired) {
if (isAuthRequired) {
headers.put(Constant.X_AUTHENTICATED_USER_TOKEN, "${accessToken}");
}
headers.put("X-Channel-Id", "channel");
headers.put(Constant.AUTHORIZATION, Constant.BEARER + System.getenv("sunbird_api_key"));
return headers;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static void createSkill(BaseCitrusTestRunner runner, TestContext testCont
UserUtil.getUserId(runner, testContext, "endorsedUserId");
runner.variable("endorsedUserId", testContext.getVariable("endorsedUserId"));
runner.variable("userId", testContext.getVariable("endorsedUserId"));
String userName = UserUtil.getUserNameWithChannel(runner, testContext);
String userName = testContext.getVariable("userName");
runner.getAuthToken(
runner, userName, Constant.PASSWORD, testContext.getVariable("endorsedUserId"), true);
createUserSkill(runner, testContext, UPDATE_SKILL_TEMPLATE_DIR, UPDATE_USER_SKILL_SUCCESS);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.sunbird.common.action;

import com.consol.citrus.context.TestContext;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
import org.springframework.http.HttpStatus;
Expand All @@ -16,6 +17,8 @@ public static String getCreateUserUrl(BaseCitrusTestRunner runner) {

public static final String TEMPLATE_DIR_USER_CREATE = "templates/user/create";
public static final String TEMPLATE_DIR_USER_CREATE_TEST_CASE = "testCreateUserSuccess";
public static final String TEMPLATE_DIR_USER_CREATE_TEST_CASE_WITH_EMAIL_AND_PHONE =
"testCreateUserSuccessWithEmailAndPhone";

private static String getBlockUserUrl(BaseCitrusTestRunner runner) {

Expand Down Expand Up @@ -120,6 +123,28 @@ public static void getUser(
extractVariableName);
}

public static void getUserWithEmailAndPhone(
BaseCitrusTestRunner runner, TestContext testContext, String extractVariableName) {
String userName = Constant.USER_NAME_PREFIX + UUID.randomUUID().toString();
testContext.setVariable("userName", userName);
runner.variable("username", userName);
runner.variable("channel", System.getenv("sunbird_default_channel"));
testContext.setVariable("channel", System.getenv("sunbird_default_channel"));
String email = Constant.USER_NAME_PREFIX + UUID.randomUUID().toString() + "@gmail.com";
runner.variable("email", email);
testContext.setVariable("email", email);
Random random = new Random();
String phoneNumber = "78" + (random.nextInt((99999999 - 10000000) + 1) + 10000000);
runner.variable("phone", phoneNumber);
testContext.setVariable("phone", phoneNumber);
UserUtil.createUser(
runner,
testContext,
TEMPLATE_DIR_USER_CREATE,
TEMPLATE_DIR_USER_CREATE_TEST_CASE_WITH_EMAIL_AND_PHONE,
extractVariableName);
}

public static void setProfileVisibilityPrivate(
BaseCitrusTestRunner runner, String templateDir, String testName) {
runner.http(
Expand All @@ -135,16 +160,10 @@ public static void setProfileVisibilityPrivate(
TestActionUtil.getHeaders(true)));
}

public static String getUserNameWithChannel(
BaseCitrusTestRunner runner, TestContext testContext) {
String channelName = System.getenv("sunbird_default_channel");
return testContext.getVariable("userName") + "@" + channelName;
}

public static void createUserAndGetToken(BaseCitrusTestRunner runner, TestContext testContext) {
getUserId(runner, testContext);
runner.variable("userId", testContext.getVariable("userId"));
String userName = UserUtil.getUserNameWithChannel(runner, testContext);
String userName = testContext.getVariable("userName");
runner.getAuthToken(
runner, userName, Constant.PASSWORD, testContext.getVariable("userId"), true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,6 @@ private Constant() {}
public static final String EXTRACT_VAR_ROOT_ORG_ID = "organisationId";
public static final String EXTRACT_VAR_SEARCH_ROOT_ORG_ID = "organisationId";
public static final String EXTRACT_VAR_SUB_ORG_ID = "subOrganisationId";
public static final String EMAIL_VERIFIED = "emailVerified";
public static final String X_CHANNEL_ID = "X-Channel-Id";
}
Original file line number Diff line number Diff line change
Expand Up @@ -132,13 +132,13 @@ public Object[][] userBulkUploadSuccessDataProvider() {
new Object[] {
TEST_NAME_USER_BULK_UPLOAD_SUCCESS_WITH_ORG_ID, HttpStatus.OK, true, true, false
},
new Object[] {
TEST_NAME_USER_BULK_UPLOAD_SUCCESS_WITH_PROVIDER_AND_EXTERNAL_ID,
HttpStatus.OK,
true,
true,
true
},
// new Object[] {
// TEST_NAME_USER_BULK_UPLOAD_SUCCESS_WITH_PROVIDER_AND_EXTERNAL_ID,
// HttpStatus.OK,
// true,
// true,
// true
// },
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ public class BaseCitrusTestRunner extends TestNGCitrusTestRunner {

public BaseCitrusTestRunner() {}

public String getLmsApiUriPath(String apiGatewayUriPath, String localUriPath) {
return config.getLmsUrl().contains("localhost") ? localUriPath : apiGatewayUriPath;
}

public void performMultipartTest(
TestNGCitrusTestRunner runner,
String templateDir,
Expand Down Expand Up @@ -236,13 +232,20 @@ public void performGetTest(
TestActionUtil.getResponseTestAction(builder, LMS_ENDPOINT, testName, responseCode));
}

public String getLmsApiUriPath(String apiGatewayUriPath, String localUriPath, String pathParam) {
if (!pathParam.startsWith("/")) {
pathParam = "/" + pathParam;
public String getLmsApiUriPath(
String apiGatewayUriPath, String localUriPath, String... pathParam) {
String pathParams = "";

for (int i = 0; i < pathParam.length; i++) {
if (!pathParam[i].startsWith("/")) {
pathParams += "/" + pathParam[i];
} else {
pathParams += pathParam[i];
}
}

return config.getLmsUrl().contains("localhost")
? localUriPath + pathParam
: apiGatewayUriPath + pathParam;
? localUriPath + pathParams
: apiGatewayUriPath + pathParams;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import com.consol.citrus.annotations.CitrusTest;
import com.consol.citrus.testng.CitrusParameters;

import java.time.Instant;

import javax.ws.rs.core.MediaType;
import org.springframework.http.HttpStatus;
import org.sunbird.common.action.OrgUtil;
Expand Down Expand Up @@ -92,7 +90,7 @@ private void beforeTest(String testName, boolean canCreateRootOrg) {
OrgUtil.getRootOrgId(this, testContext);
} else {
variable("externalId", "FT_ExternalId_" + Instant.now().getEpochSecond());
variable("provider", OrgUtil.getRootOrgChannel());
variable("channel", OrgUtil.getDefaultSunbirdRootOrg());
OrgUtil.createSubOrgId(this, testContext);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ public class CreateOrganisationTest extends BaseCitrusTestRunner {

public static final String TEST_NAME_CREATE_ROOT_ORG_FAILURE_WITH_ORG_NAME_AND_EXISTING_CHANNEL =
"testCreateRootOrgFailureWithOrgNameAndExistingChannel";
private static final Object
TEST_NAME_CREATE_ROOT_ORG_FAILURE_WITH_ORG_NAME_AND_EXISTING_EXTERNAL_ID =
"testCreateRootOrgFailureWithOrgNameAndExistingExternalId";

public static final String TEMPLATE_DIR = "templates/organisation/create";

Expand Down Expand Up @@ -78,6 +75,7 @@ public void testCreateOrganisationFailure(
String testName, boolean isAuthRequired, HttpStatus httpStatusCode) {
getAuthToken(this, isAuthRequired);
variable("externalId", externalID.toLowerCase());
variable("channel", OrgUtil.getDefaultSunbirdRootOrg());
getTestCase().setName(testName);
performPostTest(
this,
Expand Down Expand Up @@ -140,11 +138,6 @@ public Object[][] createRootOrgDataProvider() {
TEST_NAME_CREATE_ROOT_ORG_FAILURE_WITH_ORG_NAME_AND_EXISTING_CHANNEL,
true,
HttpStatus.BAD_REQUEST
},
new Object[] {
TEST_NAME_CREATE_ROOT_ORG_FAILURE_WITH_ORG_NAME_AND_EXISTING_EXTERNAL_ID,
true,
HttpStatus.BAD_REQUEST
}
};
}
Expand All @@ -155,7 +148,6 @@ public Object[][] createRootOrgDataProvider() {
public void testCreateRootOrganisation(
String testName, boolean isAuthRequired, HttpStatus httpStatusCode) {
getAuthToken(this, isAuthRequired);

variable("rootOrgChannel", OrgUtil.getRootOrgChannel());
variable("rootOrgExternalId", OrgUtil.getRootOrgExternalId().toLowerCase());
beforeTest();
Expand All @@ -176,8 +168,8 @@ public void testCreateRootOrganisation(
@CitrusTest
public void createOrgWithExternalId() {
getAuthToken(this, true);
variable("channel", OrgUtil.getDefaultSunbirdRootOrg());
variable("externalId", externalID);
variable("provider", OrgUtil.getRootOrgChannel());
OrgUtil.createSubOrgId(this, testContext);
}

Expand Down
Loading

0 comments on commit 7efb7e1

Please sign in to comment.