Skip to content

Commit

Permalink
Merge 981f301 into 8dd07c8
Browse files Browse the repository at this point in the history
  • Loading branch information
Oliverwqcwrw committed Aug 13, 2022
2 parents 8dd07c8 + 981f301 commit 715786c
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 4 deletions.
Expand Up @@ -20,20 +20,28 @@
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.rocketmq.acl.common.AclConstants;
import org.apache.rocketmq.acl.common.AclException;
import org.apache.rocketmq.acl.common.AclUtils;
import org.apache.rocketmq.acl.common.Permission;
import org.apache.rocketmq.common.AclConfig;
import org.apache.rocketmq.common.DataVersion;
import org.apache.rocketmq.common.PlainAccessConfig;
import org.assertj.core.api.Assertions;
import org.assertj.core.util.Lists;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;


public class PlainPermissionManagerTest {

PlainPermissionManager plainPermissionManager;
Expand All @@ -45,6 +53,10 @@ public class PlainPermissionManagerTest {
PlainAccessConfig plainAccessConfig = new PlainAccessConfig();
Set<Integer> adminCode = new HashSet<>();

private static final String PATH = PlainPermissionManagerTest.class.getResource("/").getFile();

private static final String DEFAULT_TOPIC = "topic-acl";

@Before
public void init() throws NoSuchFieldException, SecurityException, IOException {
// UPDATE_AND_CREATE_TOPIC
Expand All @@ -63,7 +75,7 @@ public void init() throws NoSuchFieldException, SecurityException, IOException {
ANYPlainAccessResource = clonePlainAccessResource(Permission.ANY);
DENYPlainAccessResource = clonePlainAccessResource(Permission.DENY);

File file = new File("src/test/resources");
File file = new File(PATH);
System.setProperty("rocketmq.home.dir", file.getAbsolutePath());

plainPermissionManager = new PlainPermissionManager();
Expand Down Expand Up @@ -215,7 +227,7 @@ public void isWatchStartTest() {

@Test
public void multiFilePathTest() {
File file = new File("src/test/resources");
File file = new File(PATH);
System.setProperty("rocketmq.home.dir", file.getAbsolutePath());

PlainPermissionManager plainPermissionManager = new PlainPermissionManager();
Expand Down Expand Up @@ -247,7 +259,7 @@ public void multiFilePathTest() {

@Test
public void testWatch() throws IOException, IllegalAccessException, InterruptedException {
File file = new File("src/test/resources");
File file = new File(PATH);
System.setProperty("rocketmq.home.dir", file.getAbsolutePath());

String fileName = System.getProperty("rocketmq.home.dir") + File.separator + "/conf/acl/plain_acl_test.yml";
Expand Down Expand Up @@ -299,7 +311,7 @@ public void testWatch() throws IOException, IllegalAccessException, InterruptedE

}
transport.delete();
System.setProperty("rocketmq.home.dir", "src/test/resources");
System.setProperty("rocketmq.home.dir", PATH);
}

@Test
Expand All @@ -325,4 +337,90 @@ public void updateAccessConfigTest() {
plainAccessConfig.setTopicPerms(Lists.newArrayList("topicA=SUB"));
plainPermissionManager.updateAccessConfig(plainAccessConfig);
}

@Test
public void getAllAclFilesTest() {
final List<String> notExistList = plainPermissionManager.getAllAclFiles("aa/bb");
Assertions.assertThat(notExistList).isEmpty();
final List<String> files = plainPermissionManager.getAllAclFiles(PATH);
Assertions.assertThat(files).isNotEmpty();
}

@Test
public void loadTest() {
plainPermissionManager.load();
final Map<String, DataVersion> map = plainPermissionManager.getDataVersionMap();
Assertions.assertThat(map).isNotEmpty();
}

@Test
public void updateAclConfigFileVersionTest() {
String aclFileName = "test_plain_acl";
Map<String, Object> updateAclConfigMap = new HashMap<>();
List<Map<String, Object>> versionElement = new ArrayList<>();
Map<String, Object> accountsMap = new LinkedHashMap<>();
accountsMap.put(AclConstants.CONFIG_COUNTER, 1);
accountsMap.put(AclConstants.CONFIG_TIME_STAMP, System.currentTimeMillis());
versionElement.add(accountsMap);

updateAclConfigMap.put(AclConstants.CONFIG_DATA_VERSION, versionElement);
final Map<String, Object> map = plainPermissionManager.updateAclConfigFileVersion(aclFileName, updateAclConfigMap);
final List<Map<String, Object>> version = (List<Map<String, Object>>) map.get("dataVersion");
Assertions.assertThat(map).isNotEmpty();
Assert.assertEquals(2L, version.get(0).get("counter"));
}

@Test
public void createAclAccessConfigMapTest() {
Map<String, Object> existedAccountMap = new HashMap<>();
plainAccessConfig.setAccessKey("admin123");
plainAccessConfig.setSecretKey("12345678");
plainAccessConfig.setWhiteRemoteAddress("192.168.1.1");
plainAccessConfig.setAdmin(false);
plainAccessConfig.setDefaultGroupPerm(AclConstants.SUB_PUB);
plainAccessConfig.setTopicPerms(Arrays.asList(DEFAULT_TOPIC + "=" + AclConstants.PUB));
plainAccessConfig.setGroupPerms(Lists.newArrayList("groupA=SUB"));

final Map<String, Object> map = plainPermissionManager.createAclAccessConfigMap(existedAccountMap, plainAccessConfig);
Assertions.assertThat(map).isNotEmpty();
Assert.assertEquals(AclConstants.SUB_PUB, map.get("defaultGroupPerm"));
final List groupPerms = (List) map.get("groupPerms");
Assert.assertEquals("groupA=SUB", groupPerms.get(0));
Assert.assertEquals("12345678", map.get("secretKey"));
Assert.assertEquals("admin123", map.get("accessKey"));
Assert.assertEquals("192.168.1.1", map.get("whiteRemoteAddress"));
final List topicPerms = (List) map.get("topicPerms");
Assert.assertEquals("topic-acl=PUB", topicPerms.get(0));
Assert.assertEquals(false, map.get("admin"));
}

@Test
public void deleteAccessConfigTest() throws InterruptedException {
// delete not exist accessConfig
final boolean flag1 = plainPermissionManager.deleteAccessConfig("test_delete");
assert flag1 == false;

plainAccessConfig.setAccessKey("test_delete");
plainAccessConfig.setSecretKey("12345678");
plainAccessConfig.setWhiteRemoteAddress("192.168.1.1");
plainAccessConfig.setAdmin(false);
plainAccessConfig.setDefaultGroupPerm(AclConstants.SUB_PUB);
plainAccessConfig.setTopicPerms(Arrays.asList(DEFAULT_TOPIC + "=" + AclConstants.PUB));
plainAccessConfig.setGroupPerms(Lists.newArrayList("groupA=SUB"));
plainPermissionManager.updateAccessConfig(plainAccessConfig);

//delete existed accessConfig
final boolean flag2 = plainPermissionManager.deleteAccessConfig("test_delete");
assert flag2 == true;

}

@Test
public void updateGlobalWhiteAddrsConfigTest() {
final boolean flag = plainPermissionManager.updateGlobalWhiteAddrsConfig(Lists.newArrayList("192.168.1.2"));
assert flag == true;
final AclConfig config = plainPermissionManager.getAllAclConfig();
Assert.assertEquals(true, config.getGlobalWhiteAddrs().contains("192.168.1.2"));
}

}
Expand Up @@ -40,4 +40,12 @@ public List<PlainAccessConfig> getPlainAccessConfigs() {
public void setPlainAccessConfigs(List<PlainAccessConfig> plainAccessConfigs) {
this.plainAccessConfigs = plainAccessConfigs;
}

@Override
public String toString() {
return "AclConfig{" +
"globalWhiteAddrs=" + globalWhiteAddrs +
", plainAccessConfigs=" + plainAccessConfigs +
'}';
}
}
Expand Up @@ -99,4 +99,18 @@ public List<String> getGroupPerms() {
public void setGroupPerms(List<String> groupPerms) {
this.groupPerms = groupPerms;
}

@Override
public String toString() {
return "PlainAccessConfig{" +
"accessKey='" + accessKey + '\'' +
", secretKey='" + secretKey + '\'' +
", whiteRemoteAddress='" + whiteRemoteAddress + '\'' +
", admin=" + admin +
", defaultTopicPerm='" + defaultTopicPerm + '\'' +
", defaultGroupPerm='" + defaultGroupPerm + '\'' +
", topicPerms=" + topicPerms +
", groupPerms=" + groupPerms +
'}';
}
}

0 comments on commit 715786c

Please sign in to comment.