/** * Gets the body as a map. * * @return The body as a map */ Map<String, Object> getFormVariables() { Map<String, Object> map = new HashMap<String, Object>(); Iterator keys = jsonBody.keys(); String key, typeKey, type; String[] keyPair; Object value; while (keys.hasNext()) { key = (String) keys.next(); keyPair = key.split("_"); if (keyPair.length == 1) { typeKey = keyPair[0] + "_type"; if (jsonBody.has(typeKey)) { type = jsonBody.getString(typeKey); if (type.equals("Integer")) { value = jsonBody.getInt(key); } else if (type.equals("Boolean")) { value = jsonBody.getBoolean(key); } else if (type.equals("Date")) { value = jsonBody.getString(key); } else if (type.equals("User")) { value = jsonBody.getString(key); } else { throw new WebScriptException( Status.STATUS_BAD_REQUEST, "Parameter '" + keyPair[0] + "' is of unknown type '" + type + "'"); } } else { value = jsonBody.get(key); } map.put(key, value); } else if (keyPair.length == 2) { if (keyPair[1].equals("required")) { if (!jsonBody.has(keyPair[0]) || jsonBody.get(keyPair[0]) == null) { throw new WebScriptException( Status.STATUS_BAD_REQUEST, "Parameter '" + keyPair[0] + "' has no value"); } } } } return map; }
@Test @Transactional(readOnly = true) public void testGetEventGridWidgetDefinitionWithAuthentication() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, IOException { SecurityContext securityContext = SecurityContextHolder.getContext(); securityContext.setAuthentication(auth); AbstractLicensableWidget eventGridWidget = uIService.getWidgetDefinition(EventGridWidgetName); Assert.notNull(eventGridWidget); Assert.isTrue( eventGridWidget.getActionConfig().getActionConfig().size() == 2, "Event grid widget action config does not have expected # of permissions values"); Assert.isTrue( eventGridWidget .getActionConfig() .getActionConfig() .get("widget-actions") .get(new Permission("create-event")) == Boolean.TRUE, "Event grid widget action config does not have create-event permission true"); Assert.isTrue( eventGridWidget .getActionConfig() .getActionConfig() .get("widget-actions") .get(new Permission("edit-event")) == Boolean.TRUE, "Event grid widget action config does not have edit-event permission true"); // Assertions for AutoRefreshConfig JSONObject defaultViewConfigJSON = new JSONObject(eventGridWidget.getDefaultViewConfig()); Assert.isTrue( defaultViewConfigJSON.has("autoRefreshConfig"), "Could not find property 'AutoRefreshConfig'"); JSONObject autoRefreshConfigJSON = new JSONObject(defaultViewConfigJSON.get("autoRefreshConfig").toString()); Assert.isTrue( autoRefreshConfigJSON.has("globalOverride"), "Could not find property 'globalOverride'"); Assert.isTrue(autoRefreshConfigJSON.has("enabled"), "Could not find property 'enabled'"); Assert.isTrue(autoRefreshConfigJSON.has("interval"), "Could not find property 'interval'"); Assert.isTrue( autoRefreshConfigJSON.getBoolean("globalOverride") == false, "Incorrect value for property 'globalOverride'"); Assert.isTrue( autoRefreshConfigJSON.getBoolean("enabled") == true, "Incorrect value for property 'enabled'"); Assert.isTrue( autoRefreshConfigJSON.getInt("interval") == 120, "Incorrect value for property 'interval'"); }
/* * (non-Javadoc) * * @see activitipoc.IFormHandler#parseResult(java.lang.String) */ public FormResult parseResult(String data) { final Map<String, Object> parameters = new LinkedHashMap<String, Object>(); final Map<String, Collection<String>> routes = new LinkedHashMap<String, Collection<String>>(); JSONObject jObject = new JSONObject(data); Iterator<?> keys = jObject.keys(); while (keys.hasNext()) { // TODO dangerous cast String key = (String) keys.next(); // separate properties from roles if (key.startsWith(SINGLE_USER_KEY_PREFIX)) { routes.put( key.replaceFirst(SINGLE_USER_KEY_PREFIX, ""), Arrays.asList(jObject.getString(key))); } else if (key.startsWith(GROUP_USER_KEY_PREFIX)) { Set<String> users = new HashSet<String>(); JSONArray usersJ = jObject.getJSONArray(key); for (int i = 0; i < usersJ.length(); i++) { users.add(usersJ.getString(i)); } routes.put(key.replaceFirst(GROUP_USER_KEY_PREFIX, ""), users); } else { Object value = jObject.get(key); parameters.put(key, value); } } return new FormResult() { public Map<String, Collection<String>> getRolesToUsersMapping() { return routes; } public Map<String, Object> getProperties() { return parameters; } }; }
@Test @Transactional(readOnly = true) public void testGetSearchUserGridWidgetDefinitionWithAuthentication() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, IOException { String listenForListString = "\"listensForList\":[\"userName\"]"; SecurityContext securityContext = SecurityContextHolder.getContext(); securityContext.setAuthentication(auth); AbstractLicensableWidget searchUserGridWidget = uIService.getWidgetDefinition(SearchUserGridWidgetName); Assert.notNull(searchUserGridWidget); Assert.isTrue( searchUserGridWidget.getActionConfig().getActionConfig().size() == 2, "Search user grid widget action config does not have expected # of permissions values"); Assert.isTrue( searchUserGridWidget .getActionConfig() .getActionConfig() .get("widget-actions") .get(new Permission("delete-user")) == Boolean.TRUE, "Search user grid widget action config does not have delete-user permission true"); Assert.isTrue( searchUserGridWidget .getActionConfig() .getActionConfig() .get("widget-actions") .get(new Permission("disable-user")) == Boolean.TRUE, "Search user grid widget action config does not have disable-user permission true"); Assert.notNull( searchUserGridWidget.getReactToList(), "Search user grid widget definition does not have react to map"); Assert.notNull( searchUserGridWidget.getBroadcastList(), "Search user grid widget definition does not have the broadcast list"); Assert.isTrue( searchUserGridWidget.getBroadcastList().size() == 1, "Search user grid widget definition does not have the required broadcast list size"); String defaultViewConfig = searchUserGridWidget.getDefaultViewConfig(); Assert.isTrue( defaultViewConfig.contains(listenForListString), "Default view config does not have the expected listen for list"); // Assertions for AutoRefreshConfig JSONObject defaultViewConfigJSON = new JSONObject(searchUserGridWidget.getDefaultViewConfig()); Assert.isTrue( defaultViewConfigJSON.has("autoRefreshConfig"), "Could not find property 'AutoRefreshConfig'"); JSONObject autoRefreshConfigJSON = new JSONObject(defaultViewConfigJSON.get("autoRefreshConfig").toString()); Assert.isTrue( autoRefreshConfigJSON.has("globalOverride"), "Could not find property 'globalOverride'"); Assert.isTrue(autoRefreshConfigJSON.has("enabled"), "Could not find property 'enabled'"); Assert.isTrue(autoRefreshConfigJSON.has("interval"), "Could not find property 'interval'"); Assert.isTrue( autoRefreshConfigJSON.getBoolean("globalOverride") == false, "Incorrect value for property 'globalOverride'"); Assert.isTrue( autoRefreshConfigJSON.getBoolean("enabled") == true, "Incorrect value for property 'enabled'"); Assert.isTrue( autoRefreshConfigJSON.getInt("interval") == 120, "Incorrect value for property 'interval'"); }