package crmdna.client.isha; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.googlecode.objectify.ObjectifyFilter; import crmdna.client.Client; import crmdna.client.isha.IshaConfig.IshaConfigProp; import crmdna.common.api.APIException; import crmdna.common.api.APIResponse.Status; import crmdna.group.Group; import crmdna.group.Group.GroupProp; import crmdna.practice.Practice; import crmdna.practice.Practice.PracticeProp; import crmdna.user.User; import crmdna.user.User.ClientLevelPrivilege; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.HashSet; import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class IshaConfigTest { private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy()); Set<Long> sathsangPracticeIds = new HashSet<>(); String validUser = "valid@valid.com"; String validUserWithPermission = "withperm@valid.com"; @Before public void setUp() { datastoreHelper.setUp(); ObjectifyFilter.complete(); Client.create("isha"); PracticeProp shambhavi = Practice.create("isha", "Shambhavi", User.SUPER_USER); PracticeProp mysticEye = Practice.create("isha", "MysticEye", User.SUPER_USER); sathsangPracticeIds.add(shambhavi.practiceId); sathsangPracticeIds.add(mysticEye.practiceId); GroupProp sgp = Group.create("isha", "Singapore", User.SUPER_USER); User.create("isha", validUser, sgp.groupId, User.SUPER_USER); User.create("isha", validUserWithPermission, sgp.groupId, User.SUPER_USER); User.addClientLevelPrivilege("isha", validUserWithPermission, ClientLevelPrivilege.UPDATE_CUSTOM_CONFIG, User.SUPER_USER); } @After public void tearDown() { ObjectifyFilter.complete(); datastoreHelper.tearDown(); } @Test public void safeGetTest() { try { IshaConfig.safeGet(); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode); } IshaConfig.setSathsangPractices(sathsangPracticeIds, User.SUPER_USER); IshaConfigProp customConfigProp = IshaConfig.safeGet(); assertEquals(2, customConfigProp.sathsangPracticeIds.size()); assertTrue(customConfigProp.sathsangPracticeIds .containsAll(sathsangPracticeIds)); } @Test public void setSathsangPracticeIdsTest() { // check permission try { IshaConfig.setSathsangPractices(sathsangPracticeIds, validUser); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_INSUFFICIENT_PERMISSION, ex.statusCode); } // practices cannot be null try { IshaConfig.setSathsangPractices(null, validUserWithPermission); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } // cannot be empty set try { IshaConfig.setSathsangPractices(new HashSet<Long>(), validUserWithPermission); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode); } // practices should be valid try { Set<Long> practiceIds = new HashSet<>(); practiceIds.add(100l); IshaConfig.setSathsangPractices(practiceIds, validUserWithPermission); assertTrue(false); } catch (APIException ex) { assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode); } // all ok IshaConfig.setSathsangPractices(sathsangPracticeIds, validUserWithPermission); Set<Long> practiceIds = IshaConfig.safeGet().sathsangPracticeIds; assertEquals(2, practiceIds.size()); assertTrue(practiceIds.containsAll(sathsangPracticeIds)); } }