add test case for PermissionHelper

This commit is contained in:
Shinsuke Sugaya 2016-05-21 18:15:45 +09:00
parent b4fcc82742
commit 2a53fc81f8
3 changed files with 158 additions and 13 deletions

View file

@ -17,6 +17,8 @@ package org.codelibs.fess.helper;
import java.util.Locale;
import javax.annotation.Resource;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
@ -28,20 +30,34 @@ public class PermissionHelper {
protected String userPrefix = "{user}";
@Resource
protected SystemHelper systemHelper;
public String encode(final String value) {
if (StringUtil.isBlank(value)) {
return null;
}
final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
final String permission = value.trim();
final String lower = permission.toLowerCase(Locale.ROOT);
if (lower.startsWith(userPrefix) && permission.length() > userPrefix.length()) {
return systemHelper.getSearchRoleByUser(permission.substring(userPrefix.length()));
} else if (lower.startsWith(groupPrefix) && permission.length() > groupPrefix.length()) {
return systemHelper.getSearchRoleByGroup(permission.substring(groupPrefix.length()));
} else if (lower.startsWith(rolePrefix) && permission.length() > rolePrefix.length()) {
return systemHelper.getSearchRoleByRole(permission.substring(rolePrefix.length()));
if (lower.startsWith(userPrefix)) {
if (permission.length() > userPrefix.length()) {
return systemHelper.getSearchRoleByUser(permission.substring(userPrefix.length()));
} else {
return null;
}
} else if (lower.startsWith(groupPrefix)) {
if (permission.length() > groupPrefix.length()) {
return systemHelper.getSearchRoleByGroup(permission.substring(groupPrefix.length()));
} else {
return null;
}
} else if (lower.startsWith(rolePrefix)) {
if (permission.length() > rolePrefix.length()) {
return systemHelper.getSearchRoleByRole(permission.substring(rolePrefix.length()));
} else {
return null;
}
}
return permission;
}
@ -52,12 +68,13 @@ public class PermissionHelper {
}
final FessConfig fessConfig = ComponentUtil.getFessConfig();
if (value.startsWith(fessConfig.getRoleSearchUserPrefix()) && value.length() > 1) {
return userPrefix + value.substring(1);
} else if (value.startsWith(fessConfig.getRoleSearchGroupPrefix()) && value.length() > 1) {
return groupPrefix + value.substring(1);
} else if (value.startsWith(fessConfig.getRoleSearchRolePrefix()) && value.length() > 1) {
return rolePrefix + value.substring(1);
if (value.startsWith(fessConfig.getRoleSearchUserPrefix()) && value.length() > fessConfig.getRoleSearchUserPrefix().length()) {
return userPrefix + value.substring(fessConfig.getRoleSearchUserPrefix().length());
} else if (value.startsWith(fessConfig.getRoleSearchGroupPrefix())
&& value.length() > fessConfig.getRoleSearchGroupPrefix().length()) {
return groupPrefix + value.substring(fessConfig.getRoleSearchGroupPrefix().length());
} else if (value.startsWith(fessConfig.getRoleSearchRolePrefix()) && value.length() > fessConfig.getRoleSearchRolePrefix().length()) {
return rolePrefix + value.substring(fessConfig.getRoleSearchRolePrefix().length());
}
return value;
}

View file

@ -148,6 +148,8 @@ public final class ComponentUtil {
private static SystemHelper systemHelper;
private static FessConfig fessConfig;
private ComponentUtil() {
}
@ -293,6 +295,9 @@ public final class ComponentUtil {
}
public static FessConfig getFessConfig() {
if (fessConfig != null) {
return fessConfig;
}
return getComponent(FessConfig.class);
}
@ -365,4 +370,13 @@ public final class ComponentUtil {
return false;
}
/**
* For test purpose only.
*
* @param fessConfig
*/
public static void setFessConfig(FessConfig fessConfig) {
ComponentUtil.fessConfig = fessConfig;
}
}

View file

@ -0,0 +1,114 @@
/*
* Copyright 2012-2016 CodeLibs Project and the Others.
*
* 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.codelibs.fess.helper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.unit.UnitFessTestCase;
import org.codelibs.fess.util.ComponentUtil;
public class PermissionHelperTest extends UnitFessTestCase {
public PermissionHelper permissionHelper;
@Override
public void setUp() throws Exception {
super.setUp();
permissionHelper = new PermissionHelper();
permissionHelper.systemHelper = new SystemHelper();
}
public void test_encode() {
assertNull(permissionHelper.encode(null));
assertNull(permissionHelper.encode(""));
assertNull(permissionHelper.encode(" "));
assertNull(permissionHelper.encode("{user}"));
assertNull(permissionHelper.encode("{role}"));
assertNull(permissionHelper.encode("{group}"));
assertEquals("1guest", permissionHelper.encode("{user}guest"));
assertEquals("Rguest", permissionHelper.encode("{role}guest"));
assertEquals("2guest", permissionHelper.encode("{group}guest"));
assertEquals("1guest", permissionHelper.encode("{USER}guest"));
assertEquals("Rguest", permissionHelper.encode("{ROLE}guest"));
assertEquals("2guest", permissionHelper.encode("{GROUP}guest"));
assertEquals("guest", permissionHelper.encode("guest"));
final FessConfig fessConfig = ComponentUtil.getFessConfig();
ComponentUtil.setFessConfig(new FessConfig.SimpleImpl() {
private static final long serialVersionUID = 1L;
@Override
public String getRoleSearchUserPrefix() {
return fessConfig.getRoleSearchUserPrefix();
}
@Override
public String getRoleSearchGroupPrefix() {
return fessConfig.getRoleSearchGroupPrefix();
}
@Override
public String getRoleSearchRolePrefix() {
return "";
}
});
try {
assertEquals("guest", permissionHelper.encode("{role}guest"));
assertEquals("guest", permissionHelper.encode("guest"));
} finally {
ComponentUtil.setFessConfig(null);
}
}
public void test_decode() {
assertNull(permissionHelper.decode(null));
assertNull(permissionHelper.decode(""));
assertNull(permissionHelper.decode(" "));
assertEquals("{user}guest", permissionHelper.decode("1guest"));
assertEquals("{role}guest", permissionHelper.decode("Rguest"));
assertEquals("{group}guest", permissionHelper.decode("2guest"));
assertEquals("guest", permissionHelper.decode("guest"));
final FessConfig fessConfig = ComponentUtil.getFessConfig();
ComponentUtil.setFessConfig(new FessConfig.SimpleImpl() {
private static final long serialVersionUID = 1L;
@Override
public String getRoleSearchUserPrefix() {
return fessConfig.getRoleSearchUserPrefix();
}
@Override
public String getRoleSearchGroupPrefix() {
return fessConfig.getRoleSearchGroupPrefix();
}
@Override
public String getRoleSearchRolePrefix() {
return "";
}
});
try {
assertEquals("{role}guest", permissionHelper.decode("guest"));
} finally {
ComponentUtil.setFessConfig(null);
}
}
}