Unverified Commit ef67e1bc authored by sreeragksgh's avatar sreeragksgh Committed by GitHub
Browse files

Merge branch 'release-4.0.0' into SB-229888

parents df8167c0 f72b9b14
release-5.1.0-student-login-endpoint dependabot/maven/actors/sunbird-lms-mw/actors/sunbird-utils/sunbird-notification/org.apache.httpcomponents-httpclient-4.5.13 dependabot/maven/actors/sunbird-lms-mw/actors/sunbird-utils/sunbird-platform-core/common-util/org.jboss.resteasy-resteasy-client-4.5.7.Final dependabot/maven/controller/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/core/actor-core/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/core/cassandra-utils/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/core/notification-utils/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/core/notification-utils/org.apache.httpcomponents-httpclient-4.5.13 dependabot/maven/core/platform-common/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/core/platform-common/org.apache.kafka-kafka-clients-0.10.2.2 dependabot/maven/core/platform-common/org.jboss.resteasy-resteasy-client-3.14.0.Final dependabot/maven/core/sunbird-notification/com.fasterxml.jackson.core-jackson-databind-2.9.10.7 dependabot/maven/core/sunbird-notification/org.apache.httpcomponents-httpclient-4.5.13 dependabot/maven/junit-junit-4.13.1 helmchart master patch-1 patch-2 release-4.0.0 release-4.1.0 release-4.10.0 release-4.10.1 release-4.2.0 release-4.3.0 release-4.4.0 release-4.4.1 release-4.5.0 release-4.6.0 release-4.7.0 release-4.9.0 release-5.0.0 release-5.0.1 release-5.0.2 release-5.1.0 release-5.0.1_RC1 release-5.0.0_RC5 release-5.0.0_RC4 release-5.0.0_RC3 release-5.0.0_RC2 release-5.0.0_RC1 release-4.10.1_RC1 release-4.10.0_RC5 release-4.10.0_RC4 release-4.10.0_RC3 release-4.10.0_RC2 release-4.10.0_RC1 release-4.9.0_RC3 release-4.9.0_RC2 release-4.9.0_RC1 release-4.7.0_RC11 release-4.7.0_RC10 release-4.7.0_RC9 release-4.7.0_RC8 release-4.7.0_RC7 release-4.7.0_RC6 release-4.7.0_RC5 release-4.7.0_RC4 release-4.7.0_RC3 release-4.7.0_RC2 release-4.7.0_RC1 release-4.6.0_RC9 release-4.6.0_RC8 release-4.6.0_RC7 release-4.6.0_RC6 release-4.6.0_RC5 release-4.6.0_RC4 release-4.6.0_RC3 release-4.6.0_RC2 release-4.6.0_RC1 release-4.5.0_RC14 release-4.5.0_RC13 release-4.5.0_RC12 release-4.5.0_RC11 release-4.5.0_RC10 release-4.5.0_RC9 release-4.5.0_RC8 release-4.5.0_RC7 release-4.5.0_RC6 release-4.5.0_RC5 release-4.5.0_RC4 release-4.5.0_RC3 release-4.5.0_RC2 release-4.5.0_RC1 release-4.4.1_RC1 release-4.4.0_RC15 release-4.4.0_RC14 release-4.4.0_RC13 release-4.4.0_RC12 release-4.4.0_RC11 release-4.4.0_RC10 release-4.4.0_RC9 release-4.4.0_RC8 release-4.4.0_RC7 release-4.4.0_RC6 release-4.4.0_RC5 release-4.4.0_RC4 release-4.4.0_RC3 release-4.4.0_RC2 release-4.4.0_RC1 release-4.3.0_RC16 release-4.3.0_RC15 release-4.3.0_RC14 release-4.3.0_RC13 release-4.3.0_RC12 release-4.3.0_RC11 release-4.3.0_RC10 release-4.3.0_RC9 release-4.3.0_RC8 release-4.3.0_RC7 release-4.3.0_RC6 release-4.3.0_RC5 release-4.3.0_RC4 release-4.3.0_RC3 release-4.3.0_RC2 release-4.3.0_RC1 release-4.2.0_RC13 release-4.2.0_RC12 release-4.2.0_RC11 release-4.2.0_RC10 release-4.2.0_RC9 release-4.2.0_RC8 release-4.2.0_RC7 release-4.2.0_RC6 release-4.2.0_RC5 release-4.2.0_RC4 release-4.2.0_RC3 release-4.2.0_RC2 release-4.2.0_RC1 release-4.1.0_RC16 release-4.1.0_RC15 release-4.1.0_RC14 release-4.1.0_RC13 release-4.1.0_RC12 release-4.1.0_RC11 release-4.1.0_RC10 release-4.1.0_RC9 release-4.1.0_RC8 release-4.1.0_RC7 release-4.1.0_RC6 release-4.1.0_RC5 release-4.1.0_RC4 release-4.1.0_RC3 release-4.1.0_RC2 release-4.1.0_RC1 release-4.0.0_RC18 release-4.0.0_RC17 release-4.0.0_RC16 release-4.0.0_RC15 release-4.0.0_RC14 release-4.0.0_RC13 release-4.0.0_RC12 release-4.0.0_RC11 release-4.0.0_RC10 release-4.0.0_RC9 release-4.0.0_RC8 release-4.0.0_RC7 release-4.0.0_RC6 release-4.0.0_RC5 release-4.0.0_RC4 release-4.0.0_RC3 release-4.0.0_RC2 release-4.0.0_RC1
No related merge requests found
Showing with 55 additions and 29 deletions
+55 -29
......@@ -607,6 +607,8 @@ public final class JsonKey {
public static final String FEED_LIMIT = "feed_limit";
public static final String ORG_ADMIN = "ORG_ADMIN";
public static final String ORG_ADMIN_TNC = "orgAdminTnc";
public static final String REPORT_VIEWER = "REPORT_VIEWER";
public static final String REPORT_VIEWER_TNC = "reportViewerTnc";
public static final String REQUEST_ID = "requestid";
public static final String LOCATION_TYPE_SCHOOL = "school";
public static final String UPDATE_USER_SCHOOL_ORG = "updateUserSchoolOrg";
......
......@@ -9,7 +9,6 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.sunbird.actor.core.BaseActor;
import org.sunbird.actor.router.ActorConfig;
import org.sunbird.cassandra.CassandraOperation;
import org.sunbird.common.exception.ProjectCommonException;
import org.sunbird.common.models.response.Response;
import org.sunbird.common.models.util.ActorOperations;
......@@ -18,8 +17,9 @@ import org.sunbird.common.models.util.ProjectUtil;
import org.sunbird.common.request.Request;
import org.sunbird.common.request.RequestContext;
import org.sunbird.common.responsecode.ResponseCode;
import org.sunbird.helper.ServiceFactory;
import org.sunbird.learner.util.Util;
import org.sunbird.user.dao.UserDao;
import org.sunbird.user.dao.impl.UserDaoImpl;
import org.sunbird.user.service.UserTncService;
@ActorConfig(
......@@ -29,10 +29,10 @@ import org.sunbird.user.service.UserTncService;
)
public class UserTnCActor extends BaseActor {
private UserTncService tncService = new UserTncService();
private CassandraOperation cassandraOperation = ServiceFactory.getInstance();
private Util.DbInfo usrDbInfo = Util.dbInfoMap.get(JsonKey.USER_DB);
private ObjectMapper mapper = new ObjectMapper();
UserDao userDao = UserDaoImpl.getInstance();
@Override
public void onReceive(Request request) throws Throwable {
String operation = request.getOperation();
......@@ -62,7 +62,7 @@ public class UserTnCActor extends BaseActor {
tncService.validateLatestTncVersion(request, tncType);
Map<String, Object> user = tncService.getUserById(userId, requestContext);
tncService.isAccountManagedUser(isManagedUser, user);
tncService.validateOrgAdminTnc(requestContext, tncType, user);
tncService.validateRoleForTnc(requestContext, tncType, user);
if (JsonKey.TNC_CONFIG.equals(tncType)) {
updateUserTncConfig(user, acceptedTnC, requestContext, context);
} else {
......@@ -120,9 +120,7 @@ public class UserTnCActor extends BaseActor {
logger.error(requestContext, "Exception occurred while mapping", ex);
ProjectCommonException.throwServerErrorException(ResponseCode.SERVER_ERROR);
}
response =
cassandraOperation.updateRecord(
usrDbInfo.getKeySpace(), usrDbInfo.getTableName(), userMap, requestContext);
response = userDao.updateUser(userMap, requestContext);
sender().tell(response, self());
if (((String) response.get(JsonKey.RESPONSE)).equalsIgnoreCase(JsonKey.SUCCESS)) {
// In ES this field is getting stored as Map<String, Map<String,String>>
......@@ -161,9 +159,7 @@ public class UserTnCActor extends BaseActor {
userMap.put(JsonKey.TNC_ACCEPTED_VERSION, acceptedTnC);
userMap.put(
JsonKey.TNC_ACCEPTED_ON, new Timestamp(Calendar.getInstance().getTime().getTime()));
response =
cassandraOperation.updateRecord(
usrDbInfo.getKeySpace(), usrDbInfo.getTableName(), userMap, requestContext);
response = userDao.updateUser(userMap, requestContext);
if (((String) response.get(JsonKey.RESPONSE)).equalsIgnoreCase(JsonKey.SUCCESS)) {
tncService.syncUserDetails(userMap, requestContext);
}
......
......@@ -116,10 +116,12 @@ public class UserTncService {
}
}
public void validateOrgAdminTnc(
RequestContext context, String tncType, Map<String, Object> user) {
public void validateRoleForTnc(RequestContext context, String tncType, Map<String, Object> user) {
// check if it is org admin TnC and user is not an admin of the organisation
if (JsonKey.ORG_ADMIN_TNC.equals(tncType) && !isOrgAdmin(user, context)) {
// OR check if it is report viewer tnc and user not having the report viewer role
if ((JsonKey.ORG_ADMIN_TNC.equals(tncType) && !roleCheck(user, JsonKey.ORG_ADMIN, context))
|| (JsonKey.REPORT_VIEWER_TNC.equals(tncType)
&& !roleCheck(user, JsonKey.REPORT_VIEWER, context))) {
ProjectCommonException.throwClientErrorException(
ResponseCode.invalidParameterValue,
MessageFormat.format(
......@@ -129,7 +131,7 @@ public class UserTncService {
}
}
private boolean isOrgAdmin(Map<String, Object> user, RequestContext context) {
private boolean roleCheck(Map<String, Object> user, String role, RequestContext context) {
Map<String, Object> searchMap = new LinkedHashMap<>(2);
searchMap.put(JsonKey.USER_ID, user.get(JsonKey.ID));
searchMap.put(JsonKey.ORGANISATION_ID, user.get(JsonKey.ROOT_ORG_ID));
......@@ -141,7 +143,7 @@ public class UserTncService {
Map<String, Object> org = orgDetails.get(0);
if (MapUtils.isNotEmpty(org)) {
List<String> roles = (List<String>) org.get(JsonKey.ROLES);
return roles.contains(JsonKey.ORG_ADMIN);
return roles.contains(role);
}
}
return false;
......
......@@ -59,6 +59,7 @@ public class UserTncServiceTest {
@Before
public void beforeEachTest() {
PowerMockito.mockStatic(DataCacheHandler.class);
PowerMockito.mockStatic(ServiceFactory.class);
Map<String, String> config = new HashMap<>();
config.put(JsonKey.TNC_CONFIG, tncConfig);
config.put("groups", groupsConfig);
......@@ -68,7 +69,6 @@ public class UserTncServiceTest {
@Test
public void getUserByIdTest() {
PowerMockito.mockStatic(ServiceFactory.class);
CassandraOperation cassandraOperationImpl = mock(CassandraOperation.class);
when(ServiceFactory.getInstance()).thenReturn(cassandraOperationImpl);
Response response = new Response();
......@@ -89,7 +89,6 @@ public class UserTncServiceTest {
@Test
public void getUserByIdForLockedAccountTest() {
PowerMockito.mockStatic(ServiceFactory.class);
CassandraOperation cassandraOperationImpl = mock(CassandraOperation.class);
when(ServiceFactory.getInstance()).thenReturn(cassandraOperationImpl);
Response response = new Response();
......@@ -112,7 +111,6 @@ public class UserTncServiceTest {
@Test
public void getUserByIdForEmptyResultTest() {
PowerMockito.mockStatic(ServiceFactory.class);
CassandraOperation cassandraOperationImpl = mock(CassandraOperation.class);
when(ServiceFactory.getInstance()).thenReturn(cassandraOperationImpl);
Response response = new Response();
......@@ -141,27 +139,55 @@ public class UserTncServiceTest {
@Test
public void validateOrgAdminTncTest() {
PowerMockito.mockStatic(ServiceFactory.class);
CassandraOperation cassandraOperationImpl = mock(CassandraOperation.class);
when(ServiceFactory.getInstance()).thenReturn(cassandraOperationImpl);
Response response = new Response();
List<Map<String, Object>> orgs = new ArrayList<>();
Map<String, Object> org = new HashMap<>();
org.put(JsonKey.ORGANISATION_ID, "4567");
org.put(JsonKey.ROLES, Arrays.asList("PUBLIC"));
orgs.add(org);
List<Map<String, Object>> orgs = orgResponse();
response.put(JsonKey.RESPONSE, orgs);
when(cassandraOperationImpl.getRecordsByCompositeKey(
Mockito.anyString(), Mockito.anyString(), Mockito.anyMap(), Mockito.any()))
.thenReturn(response);
UserTncService tncService = new UserTncService();
Map<String, Object> searchMap = new LinkedHashMap<>(2);
searchMap.put(JsonKey.USER_ID, "1234");
searchMap.put(JsonKey.ORGANISATION_ID, "4567");
Map<String, Object> searchMap = userOrgData();
try {
tncService.validateRoleForTnc(null, "orgAdminTnc", searchMap);
} catch (ProjectCommonException ex) {
Assert.assertEquals(ResponseCode.invalidParameterValue.getErrorCode(), ex.getCode());
}
}
@Test
public void reportViewerTncTest() {
CassandraOperation cassandraOperationImpl = mock(CassandraOperation.class);
when(ServiceFactory.getInstance()).thenReturn(cassandraOperationImpl);
Response response = new Response();
List<Map<String, Object>> orgs = orgResponse();
response.put(JsonKey.RESPONSE, orgs);
when(cassandraOperationImpl.getRecordsByCompositeKey(
Mockito.anyString(), Mockito.anyString(), Mockito.anyMap(), Mockito.any()))
.thenReturn(response);
UserTncService tncService = new UserTncService();
Map<String, Object> searchMap = userOrgData();
try {
tncService.validateOrgAdminTnc(null, "orgAdminTnc", searchMap);
tncService.validateRoleForTnc(null, "reportViewerTnc", searchMap);
} catch (ProjectCommonException ex) {
Assert.assertEquals(ResponseCode.invalidParameterValue.getErrorCode(), ex.getCode());
}
}
private List<Map<String, Object>> orgResponse() {
List<Map<String, Object>> orgs = new ArrayList<>();
Map<String, Object> org = new HashMap<>();
org.put(JsonKey.ORGANISATION_ID, "4567");
org.put(JsonKey.ROLES, Arrays.asList("PUBLIC"));
orgs.add(org);
return orgs;
}
private Map<String, Object> userOrgData() {
Map<String, Object> searchMap = new LinkedHashMap<>(2);
searchMap.put(JsonKey.USER_ID, "1234");
searchMap.put(JsonKey.ORGANISATION_ID, "4567");
return searchMap;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment