Search in sources :

Example 6 with Page

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);
}
Also used : Permission(com.alibaba.nacos.plugin.auth.api.Permission) Page(com.alibaba.nacos.config.server.model.Page) TypeReference(com.fasterxml.jackson.core.type.TypeReference) HttpClient4Test(com.alibaba.nacos.test.base.HttpClient4Test) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 7 with Page

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());
}
Also used : HashMap(java.util.HashMap) MockHttpServletRequestBuilder(org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder) ArrayList(java.util.ArrayList) Page(com.alibaba.nacos.config.server.model.Page) ArrayList(java.util.ArrayList) ArgumentMatchers.anyList(org.mockito.ArgumentMatchers.anyList) List(java.util.List) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConfigInfo(com.alibaba.nacos.config.server.model.ConfigInfo) Test(org.junit.Test)

Example 8 with Page

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());
}
Also used : HashMap(java.util.HashMap) MockHttpServletRequestBuilder(org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder) ArrayList(java.util.ArrayList) Page(com.alibaba.nacos.config.server.model.Page) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayList(java.util.ArrayList) ArgumentMatchers.anyList(org.mockito.ArgumentMatchers.anyList) List(java.util.List) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ConfigInfo(com.alibaba.nacos.config.server.model.ConfigInfo) Test(org.junit.Test)

Example 9 with Page

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;
    }
}
Also used : ConfigKey(com.alibaba.nacos.config.server.model.ConfigKey) CannotGetJdbcConnectionException(org.springframework.jdbc.CannotGetJdbcConnectionException) ArrayList(java.util.ArrayList) Page(com.alibaba.nacos.config.server.model.Page) ConfigInfo(com.alibaba.nacos.config.server.model.ConfigInfo)

Example 10 with Page

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());
}
Also used : ConfigHistoryInfo(com.alibaba.nacos.config.server.model.ConfigHistoryInfo) MockHttpServletRequestBuilder(org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder) ArrayList(java.util.ArrayList) Page(com.alibaba.nacos.config.server.model.Page) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayList(java.util.ArrayList) List(java.util.List) Timestamp(java.sql.Timestamp) Date(java.util.Date) MockHttpServletResponse(org.springframework.mock.web.MockHttpServletResponse) Test(org.junit.Test)

Aggregations

Page (com.alibaba.nacos.config.server.model.Page)12 ArrayList (java.util.ArrayList)7 ConfigKey (com.alibaba.nacos.config.server.model.ConfigKey)6 Test (org.junit.Test)6 ConfigInfo (com.alibaba.nacos.config.server.model.ConfigInfo)4 HttpClient4Test (com.alibaba.nacos.test.base.HttpClient4Test)3 TypeReference (com.fasterxml.jackson.core.type.TypeReference)3 List (java.util.List)3 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)3 CannotGetJdbcConnectionException (org.springframework.jdbc.CannotGetJdbcConnectionException)3 MockHttpServletRequestBuilder (org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder)3 ConfigInfoAggr (com.alibaba.nacos.config.server.model.ConfigInfoAggr)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)2 HashMap (java.util.HashMap)2 ArgumentMatchers.anyList (org.mockito.ArgumentMatchers.anyList)2 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)2 ConfigHistoryInfo (com.alibaba.nacos.config.server.model.ConfigHistoryInfo)1 Permission (com.alibaba.nacos.plugin.auth.api.Permission)1 RoleInfo (com.alibaba.nacos.plugin.auth.impl.persistence.RoleInfo)1 User (com.alibaba.nacos.plugin.auth.impl.persistence.User)1