add test case for PermissionHelper
This commit is contained in:
parent
b4fcc82742
commit
2a53fc81f8
3 changed files with 158 additions and 13 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
114
src/test/java/org/codelibs/fess/helper/PermissionHelperTest.java
Normal file
114
src/test/java/org/codelibs/fess/helper/PermissionHelperTest.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue