use of com.alibaba.nacos.config.server.model.Page in project nacos by alibaba.
the class Permission_ITCase method createDeleteQueryPermission.
@Test
public void createDeleteQueryPermission() {
login();
// Create a user:
ResponseEntity<String> response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", "username3").appendParam("password", "password1").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Create role:
response = request("/nacos/v1/auth/roles", Params.newParams().appendParam("role", "role1").appendParam("username", "username3").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Create permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*").appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Create another permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*").appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Query permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("pageNo", "1").appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
System.out.println(response);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
Page<Permission> permissionPage = JacksonUtils.toObj(response.getBody(), new TypeReference<Page<Permission>>() {
});
Assert.assertNotNull(permissionPage);
Assert.assertNotNull(permissionPage.getPageItems());
boolean found1 = false, found2 = false;
for (Permission permission : permissionPage.getPageItems()) {
if (permission.getResource().equals("public:*:*") && permission.getAction().equals("rw")) {
found1 = true;
}
if (permission.getResource().equals("test1:*:*") && permission.getAction().equals("r")) {
found2 = true;
}
if (found1 && found2) {
break;
}
}
Assert.assertTrue(found1);
Assert.assertTrue(found2);
// Delete permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*").appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Query permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("pageNo", "1").appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
permissionPage = JacksonUtils.toObj(response.getBody(), new TypeReference<Page<Permission>>() {
});
Assert.assertNotNull(permissionPage);
Assert.assertNotNull(permissionPage.getPageItems());
found1 = false;
found2 = false;
for (Permission permission : permissionPage.getPageItems()) {
if (permission.getResource().equals("public:*:*") && permission.getAction().equals("rw")) {
found1 = true;
}
if (permission.getResource().equals("test1:*:*") && permission.getAction().equals("r")) {
found2 = true;
}
}
Assert.assertFalse(found1);
Assert.assertTrue(found2);
// Delete permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*").appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
// Query permission:
response = request("/nacos/v1/auth/permissions", Params.newParams().appendParam("role", "role1").appendParam("pageNo", "1").appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Assert.assertTrue(response.getStatusCode().is2xxSuccessful());
permissionPage = JacksonUtils.toObj(response.getBody(), new TypeReference<Page<Permission>>() {
});
Assert.assertNotNull(permissionPage);
Assert.assertNotNull(permissionPage.getPageItems());
found1 = false;
found2 = false;
for (Permission permission : permissionPage.getPageItems()) {
if (permission.getResource().equals("public:*:*") && permission.getAction().equals("rw")) {
found1 = true;
}
if (permission.getResource().equals("test1:*:*") && permission.getAction().equals("r")) {
found2 = true;
}
}
Assert.assertFalse(found1);
Assert.assertFalse(found2);
}
use of com.alibaba.nacos.config.server.model.Page in project nacos by alibaba.
the class ConfigControllerTest method testFuzzySearchConfig.
@Test
public void testFuzzySearchConfig() throws Exception {
List<ConfigInfo> configInfoList = new ArrayList<>();
ConfigInfo configInfo = new ConfigInfo("test", "test", "test");
configInfoList.add(configInfo);
Page<ConfigInfo> page = new Page<>();
page.setTotalCount(15);
page.setPageNumber(1);
page.setPagesAvailable(2);
page.setPageItems(configInfoList);
Map<String, Object> configAdvanceInfo = new HashMap<>(8);
when(persistService.findConfigInfoLike4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn(page);
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.CONFIG_CONTROLLER_PATH).param("search", "blur").param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "").param("config_tags", "").param("pageNo", "1").param("pageSize", "10");
String actualValue = mockmvc.perform(builder).andReturn().getResponse().getContentAsString();
List resultList = JacksonUtils.toObj(JacksonUtils.toObj(actualValue).get("pageItems").toString(), List.class);
ConfigInfo resConfigInfo = JacksonUtils.toObj(JacksonUtils.toObj(actualValue).get("pageItems").get(0).toString(), ConfigInfo.class);
Assert.assertEquals(configInfoList.size(), resultList.size());
Assert.assertEquals(configInfo.getDataId(), resConfigInfo.getDataId());
Assert.assertEquals(configInfo.getGroup(), resConfigInfo.getGroup());
Assert.assertEquals(configInfo.getContent(), resConfigInfo.getContent());
}
use of com.alibaba.nacos.config.server.model.Page in project nacos by alibaba.
the class ConfigControllerTest method testSearchConfig.
@Test
public void testSearchConfig() throws Exception {
List<ConfigInfo> configInfoList = new ArrayList<>();
ConfigInfo configInfo = new ConfigInfo("test", "test", "test");
configInfoList.add(configInfo);
Page<ConfigInfo> page = new Page<>();
page.setTotalCount(15);
page.setPageNumber(1);
page.setPagesAvailable(2);
page.setPageItems(configInfoList);
Map<String, Object> configAdvanceInfo = new HashMap<>(8);
when(persistService.findConfigInfo4Page(1, 10, "test", "test", "", configAdvanceInfo)).thenReturn(page);
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.CONFIG_CONTROLLER_PATH).param("search", "accurate").param("dataId", "test").param("group", "test").param("appName", "").param("tenant", "").param("config_tags", "").param("pageNo", "1").param("pageSize", "10");
String actualValue = mockmvc.perform(builder).andReturn().getResponse().getContentAsString();
JsonNode pageItemsNode = JacksonUtils.toObj(actualValue).get("pageItems");
List resultList = JacksonUtils.toObj(pageItemsNode.toString(), List.class);
ConfigInfo resConfigInfo = JacksonUtils.toObj(pageItemsNode.get(0).toString(), ConfigInfo.class);
Assert.assertEquals(configInfoList.size(), resultList.size());
Assert.assertEquals(configInfo.getDataId(), resConfigInfo.getDataId());
Assert.assertEquals(configInfo.getGroup(), resConfigInfo.getGroup());
Assert.assertEquals(configInfo.getContent(), resConfigInfo.getContent());
}
use of com.alibaba.nacos.config.server.model.Page in project nacos by alibaba.
the class ExternalStoragePersistServiceImpl method findConfigInfoLike.
@Override
public Page<ConfigInfo> findConfigInfoLike(final int pageNo, final int pageSize, final ConfigKey[] configKeys, final boolean blacklist) {
String sqlCountRows = "SELECT count(*) FROM config_info WHERE ";
String sqlFetchRows = "SELECT id,data_id,group_id,tenant_id,app_name,content FROM config_info WHERE ";
StringBuilder where = new StringBuilder(" 1=1 ");
// Whitelist, please leave the synchronization condition empty, there is no configuration that meets the conditions
if (configKeys.length == 0 && blacklist == false) {
Page<ConfigInfo> page = new Page<ConfigInfo>();
page.setTotalCount(0);
return page;
}
PaginationHelper<ConfigInfo> helper = createPaginationHelper();
List<String> params = new ArrayList<String>();
boolean isFirst = true;
for (ConfigKey configInfo : configKeys) {
String dataId = configInfo.getDataId();
String group = configInfo.getGroup();
String appName = configInfo.getAppName();
if (StringUtils.isBlank(dataId) && StringUtils.isBlank(group) && StringUtils.isBlank(appName)) {
break;
}
if (blacklist) {
if (isFirst) {
isFirst = false;
where.append(" AND ");
} else {
where.append(" AND ");
}
where.append('(');
boolean isFirstSub = true;
if (!StringUtils.isBlank(dataId)) {
where.append(" data_id NOT LIKE ? ");
params.add(generateLikeArgument(dataId));
isFirstSub = false;
}
if (!StringUtils.isBlank(group)) {
if (!isFirstSub) {
where.append(" OR ");
}
where.append(" group_id NOT LIKE ? ");
params.add(generateLikeArgument(group));
isFirstSub = false;
}
if (!StringUtils.isBlank(appName)) {
if (!isFirstSub) {
where.append(" OR ");
}
where.append(" app_name != ? ");
params.add(appName);
isFirstSub = false;
}
where.append(") ");
} else {
if (isFirst) {
isFirst = false;
where.append(" AND ");
} else {
where.append(" OR ");
}
where.append('(');
boolean isFirstSub = true;
if (!StringUtils.isBlank(dataId)) {
where.append(" data_id LIKE ? ");
params.add(generateLikeArgument(dataId));
isFirstSub = false;
}
if (!StringUtils.isBlank(group)) {
if (!isFirstSub) {
where.append(" AND ");
}
where.append(" group_id LIKE ? ");
params.add(generateLikeArgument(group));
isFirstSub = false;
}
if (!StringUtils.isBlank(appName)) {
if (!isFirstSub) {
where.append(" AND ");
}
where.append(" app_name = ? ");
params.add(appName);
isFirstSub = false;
}
where.append(") ");
}
}
try {
return helper.fetchPage(sqlCountRows + where.toString(), sqlFetchRows + where.toString(), params.toArray(), pageNo, pageSize, CONFIG_INFO_ROW_MAPPER);
} catch (CannotGetJdbcConnectionException e) {
LogUtil.FATAL_LOG.error("[db-error] " + e.toString(), e);
throw e;
}
}
use of com.alibaba.nacos.config.server.model.Page in project nacos by alibaba.
the class HistoryControllerTest method testListConfigHistory.
@Test
public void testListConfigHistory() throws Exception {
ConfigHistoryInfo configHistoryInfo = new ConfigHistoryInfo();
configHistoryInfo.setDataId("test");
configHistoryInfo.setGroup("test");
configHistoryInfo.setContent("test");
configHistoryInfo.setCreatedTime(new Timestamp(new Date().getTime()));
configHistoryInfo.setLastModifiedTime(new Timestamp(new Date().getTime()));
List<ConfigHistoryInfo> configHistoryInfoList = new ArrayList<>();
configHistoryInfoList.add(configHistoryInfo);
Page<ConfigHistoryInfo> page = new Page<>();
page.setTotalCount(15);
page.setPageNumber(1);
page.setPagesAvailable(2);
page.setPageItems(configHistoryInfoList);
when(persistService.findConfigHistory("test", "test", "", 1, 10)).thenReturn(page);
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(Constants.HISTORY_CONTROLLER_PATH).param("search", "accurate").param("dataId", "test").param("group", "test").param("tenant", "").param("appName", "").param("pageNo", "1").param("pageSize", "10");
MockHttpServletResponse response = mockmvc.perform(builder).andReturn().getResponse();
String actualValue = mockmvc.perform(builder).andReturn().getResponse().getContentAsString();
JsonNode pageItemsNode = JacksonUtils.toObj(actualValue).get("pageItems");
List resultList = JacksonUtils.toObj(pageItemsNode.toString(), List.class);
ConfigHistoryInfo resConfigHistoryInfo = JacksonUtils.toObj(pageItemsNode.get(0).toString(), ConfigHistoryInfo.class);
Assert.assertEquals(configHistoryInfoList.size(), resultList.size());
Assert.assertEquals(configHistoryInfo.getDataId(), resConfigHistoryInfo.getDataId());
Assert.assertEquals(configHistoryInfo.getGroup(), resConfigHistoryInfo.getGroup());
Assert.assertEquals(configHistoryInfo.getContent(), resConfigHistoryInfo.getContent());
}
Aggregations