/* * Copyright 2012 Shared Learning Collaborative, LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.slc.sli.dashboard.unit.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.servlet.ModelAndView; import org.slc.sli.dashboard.entity.Config; import org.slc.sli.dashboard.entity.Config.Data; import org.slc.sli.dashboard.entity.Config.Type; import org.slc.sli.dashboard.entity.ConfigMap; import org.slc.sli.dashboard.entity.EdOrgKey; import org.slc.sli.dashboard.entity.GenericEntity; import org.slc.sli.dashboard.manager.UserEdOrgManager; import org.slc.sli.dashboard.manager.impl.PortalWSManagerImpl; import org.slc.sli.dashboard.util.Constants; import org.slc.sli.dashboard.web.controller.ConfigController; /** * Testing config controller * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/application-context.xml", "/dashboard-servlet-test.xml" }) public class ConfigControllerTest extends ControllerTestBase { private ConfigController configController = new ConfigController() { @Override public void putCustomConfig(ConfigMap map) { } }; private static final String CONFIG_MAP_LOCATION = "custom/IL-DAYBREAK/customConfig.json"; @Before public void setup() throws Exception { setCustomizationAssemblyFactory(configController); } @Test public void testSave() throws Exception { ConfigMap configMap = loadFile(Config.class.getClassLoader().getResource(CONFIG_MAP_LOCATION).getFile(), ConfigMap.class); try { String response = configController.saveConfig(configMap); Assert.assertEquals("Success", response); } catch (Exception e) { Assert.fail("Should pass validation but getting " + e.getMessage()); } } @Test public void testBadSave() throws Exception { Map<String, Config> mapOfConfigs = new HashMap<String, Config>(); Config bad = new Config("+++", null, null, Type.FIELD, null, null, null, null, null); mapOfConfigs.put("something", bad); ConfigMap map = new ConfigMap(); map.setConfig(mapOfConfigs); try { configController.saveConfig(map); Assert.fail("Should not be able to save"); } catch (Exception e) { Assert.assertEquals("Invalid input parameter configMap", e.getMessage().substring(0, 33)); } } @Test public void testGetConfig() throws Exception { configController.setUserEdOrgManager(new UserEdOrgManager() { @Override public GenericEntity getUserInstHierarchy(String token, Object key, Data config) { // TODO Auto-generated method stub return null; } @Override public GenericEntity getUserCoursesAndSections(String token, Object key, Data config) { // TODO Auto-generated method stub return null; } @Override public GenericEntity getUserSectionList(String token, Object key, Data config) { // TODO Auto-generated method stub return null; } @Override public GenericEntity getSchoolInfo(String token, Object key, Data config) { // TODO Auto-generated method stub return null; } @Override public EdOrgKey getUserEdOrg(String token) { // TODO Auto-generated method stub return null; } @Override public GenericEntity getStaffInfo(String token) { GenericEntity entity = new GenericEntity(); GenericEntity edOrg = new GenericEntity(); List<String> list = new ArrayList<String>(); list.add(Constants.LOCAL_EDUCATION_AGENCY); edOrg.put(Constants.ATTR_ORG_CATEGORIES, list); entity.put(Constants.ATTR_ED_ORG, edOrg); return entity; } }); configController.setPortalWSManager(new PortalWSManagerImpl() { @Override public String getHeader(boolean isAdmin) { return null; } }); MockHttpServletRequest request = new MockHttpServletRequest(); ModelAndView model = null; try { model = configController.getConfig(request); } catch (IllegalAccessException e) { // this exception is thrown because not admin model = null; } Assert.assertNull(model); } }