Browse Source

wrapped /infos endpoint by PageData for UI opportunities

pull/11231/head
dashevchenko 2 years ago
parent
commit
60b03288cd
  1. 21
      application/src/main/java/org/thingsboard/server/controller/DomainController.java
  2. 21
      application/src/main/java/org/thingsboard/server/controller/MobileAppController.java
  3. 20
      application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java
  4. 2
      application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java
  5. 36
      application/src/test/java/org/thingsboard/server/controller/DomainControllerTest.java
  6. 36
      application/src/test/java/org/thingsboard/server/controller/MobileAppControllerTest.java
  7. 33
      application/src/test/java/org/thingsboard/server/controller/Oauth2ClientControllerTest.java
  8. 4
      common/dao-api/src/main/java/org/thingsboard/server/dao/domain/DomainService.java
  9. 4
      common/dao-api/src/main/java/org/thingsboard/server/dao/mobile/MobileAppService.java
  10. 4
      common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientService.java
  11. 4
      dao/src/main/java/org/thingsboard/server/dao/domain/DomainDao.java
  12. 10
      dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java
  13. 4
      dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppDao.java
  14. 10
      dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java
  15. 4
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientDao.java
  16. 11
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientServiceImpl.java
  17. 5
      dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java
  18. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java
  19. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java
  20. 5
      dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java
  21. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java
  22. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java
  23. 10
      dao/src/test/java/org/thingsboard/server/dao/service/DomainServiceTest.java
  24. 10
      dao/src/test/java/org/thingsboard/server/dao/service/MobileAppServiceTest.java
  25. 6
      dao/src/test/java/org/thingsboard/server/dao/service/OAuth2ClientServiceTest.java

21
application/src/main/java/org/thingsboard/server/controller/DomainController.java

@ -36,6 +36,8 @@ import org.thingsboard.server.common.data.domain.DomainInfo;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.DomainId;
import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.config.annotations.ApiOperation;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.entitiy.domain.TbDomainService;
@ -45,8 +47,11 @@ import org.thingsboard.server.service.security.permission.Resource;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_ORDER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_PROPERTY_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SYSTEM_AUTHORITY_PARAGRAPH;
import static org.thingsboard.server.controller.ControllerConstants.TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH;
import static org.thingsboard.server.controller.ControllerConstants.UUID_WIKI_LINK;
@RestController
@ -91,8 +96,18 @@ public class DomainController extends BaseController {
@ApiOperation(value = "Get Domain infos (getTenantDomainInfos)", notes = SYSTEM_AUTHORITY_PARAGRAPH)
@PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
@GetMapping(value = "/domain/infos")
public List<DomainInfo> getTenantDomainInfos() throws ThingsboardException {
return domainService.findDomainInfosByTenantId(getTenantId());
public PageData<DomainInfo> getTenantDomainInfos(@Parameter(description = PAGE_SIZE_DESCRIPTION, required = true)
@RequestParam int pageSize,
@Parameter(description = PAGE_NUMBER_DESCRIPTION, required = true)
@RequestParam int page,
@Parameter(description = "Case-insensitive 'substring' filter based on rule's name")
@RequestParam(required = false) String textSearch,
@Parameter(description = SORT_PROPERTY_DESCRIPTION)
@RequestParam(required = false) String sortProperty,
@Parameter(description = SORT_ORDER_DESCRIPTION)
@RequestParam(required = false) String sortOrder) throws ThingsboardException {
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
return domainService.findDomainInfosByTenantId(getTenantId(), pageLink);
}
@ApiOperation(value = "Get Domain info by Id (getDomainInfoById)", notes = SYSTEM_AUTHORITY_PARAGRAPH)

21
application/src/main/java/org/thingsboard/server/controller/MobileAppController.java

@ -37,6 +37,8 @@ import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.config.annotations.ApiOperation;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.entitiy.mobile.TbMobileAppService;
@ -46,8 +48,11 @@ import org.thingsboard.server.service.security.permission.Resource;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_ORDER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_PROPERTY_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SYSTEM_AUTHORITY_PARAGRAPH;
import static org.thingsboard.server.controller.ControllerConstants.TENANT_OR_CUSTOMER_AUTHORITY_PARAGRAPH;
import static org.thingsboard.server.controller.ControllerConstants.UUID_WIKI_LINK;
@RestController
@ -92,9 +97,19 @@ public class MobileAppController extends BaseController {
@ApiOperation(value = "Get mobile app infos (getTenantMobileAppInfos)", notes = SYSTEM_AUTHORITY_PARAGRAPH)
@PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
@GetMapping(value = "/mobileApp/infos")
public List<MobileAppInfo> getTenantMobileAppInfos() throws ThingsboardException {
public PageData<MobileAppInfo> getTenantMobileAppInfos(@Parameter(description = PAGE_SIZE_DESCRIPTION, required = true)
@RequestParam int pageSize,
@Parameter(description = PAGE_NUMBER_DESCRIPTION, required = true)
@RequestParam int page,
@Parameter(description = "Case-insensitive 'substring' filter based on rule's name")
@RequestParam(required = false) String textSearch,
@Parameter(description = SORT_PROPERTY_DESCRIPTION)
@RequestParam(required = false) String sortProperty,
@Parameter(description = SORT_ORDER_DESCRIPTION)
@RequestParam(required = false) String sortOrder) throws ThingsboardException {
TenantId tenantId = getCurrentUser().getTenantId();
return mobileAppService.findMobileAppInfosByTenantId(tenantId);
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
return mobileAppService.findMobileAppInfosByTenantId(tenantId, pageLink);
}
@ApiOperation(value = "Get mobile info by id (getMobileAppInfoById)", notes = SYSTEM_AUTHORITY_PARAGRAPH)

20
application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java

@ -38,6 +38,8 @@ import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.config.annotations.ApiOperation;
import org.thingsboard.server.dao.oauth2.OAuth2Configuration;
import org.thingsboard.server.queue.util.TbCoreComponent;
@ -50,6 +52,10 @@ import java.util.Enumeration;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.PAGE_SIZE_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_ORDER_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SORT_PROPERTY_DESCRIPTION;
import static org.thingsboard.server.controller.ControllerConstants.SYSTEM_AUTHORITY_PARAGRAPH;
@RestController
@ -112,8 +118,18 @@ public class OAuth2Controller extends BaseController {
@ApiOperation(value = "Get OAuth2 Client Registration infos (findTenantOAuth2ClientInfos)", notes = SYSTEM_AUTHORITY_PARAGRAPH)
@PreAuthorize("hasAnyAuthority('SYS_ADMIN')")
@GetMapping(value = "/oauth2/client/infos")
public List<OAuth2ClientInfo> findTenantOAuth2ClientInfos() throws ThingsboardException {
return oAuth2ClientService.findOAuth2ClientInfosByTenantId(getTenantId());
public PageData<OAuth2ClientInfo> findTenantOAuth2ClientInfos(@Parameter(description = PAGE_SIZE_DESCRIPTION, required = true)
@RequestParam int pageSize,
@Parameter(description = PAGE_NUMBER_DESCRIPTION, required = true)
@RequestParam int page,
@Parameter(description = "Case-insensitive 'substring' filter based on rule's name")
@RequestParam(required = false) String textSearch,
@Parameter(description = SORT_PROPERTY_DESCRIPTION)
@RequestParam(required = false) String sortProperty,
@Parameter(description = SORT_ORDER_DESCRIPTION)
@RequestParam(required = false) String sortOrder) throws ThingsboardException {
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
return oAuth2ClientService.findOAuth2ClientInfosByTenantId(getTenantId(), pageLink);
}
@ApiOperation(value = "Get OAuth2 Client Registration by id (getOAuth2ClientById)", notes = SYSTEM_AUTHORITY_PARAGRAPH)

2
application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java

@ -308,7 +308,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
jwtSettingsService.saveJwtSettings(jwtSettings);
}
List<MobileApp> mobiles = oAuth2MobileDao.findByTenantId(TenantId.SYS_TENANT_ID);
List<MobileApp> mobiles = oAuth2MobileDao.findByTenantId(TenantId.SYS_TENANT_ID, new PageLink(Integer.MAX_VALUE,0)).getData();
if (CollectionUtils.isNotEmpty(mobiles)) {
mobiles.stream()
.filter(config -> !validateKeyLength(config.getAppSecret()))

36
application/src/test/java/org/thingsboard/server/controller/DomainControllerTest.java

@ -20,22 +20,17 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.domain.Domain;
import org.thingsboard.server.common.data.domain.DomainInfo;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.MapperType;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.service.DaoSqlTest;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.containsString;
@ -45,6 +40,11 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@DaoSqlTest
public class DomainControllerTest extends AbstractControllerTest {
static final TypeReference<PageData<DomainInfo>> PAGE_DATA_DOMAIN_TYPE_REF = new TypeReference<>() {
};
static final TypeReference<PageData<OAuth2ClientInfo>> PAGE_DATA_OAUTH2_CLIENT_TYPE_REF = new TypeReference<>() {
};
@Before
public void setUp() throws Exception {
loginSysAdmin();
@ -52,16 +52,14 @@ public class DomainControllerTest extends AbstractControllerTest {
@After
public void tearDown() throws Exception {
List<DomainInfo> domains = doGetTyped("/api/domain/infos", new TypeReference<List<DomainInfo>>() {
});
for (Domain domain : domains) {
PageData<DomainInfo> pageData = doGetTypedWithPageLink("/api/domain/infos?", PAGE_DATA_DOMAIN_TYPE_REF, new PageLink(10, 0));
for (Domain domain : pageData.getData()) {
doDelete("/api/domain/" + domain.getId().getId())
.andExpect(status().isOk());
}
List<OAuth2ClientInfo> oAuth2ClientInfos = doGetTyped("/api/oauth2/client/infos", new TypeReference<List<OAuth2ClientInfo>>() {
});
for (OAuth2ClientInfo oAuth2ClientInfo : oAuth2ClientInfos) {
PageData<OAuth2ClientInfo> clients = doGetTypedWithPageLink("/api/oauth2/client/infos?", PAGE_DATA_OAUTH2_CLIENT_TYPE_REF, new PageLink(10, 0));
for (OAuth2ClientInfo oAuth2ClientInfo : clients.getData()) {
doDelete("/api/oauth2/client/" + oAuth2ClientInfo.getId().getId().toString())
.andExpect(status().isOk());
}
@ -69,17 +67,15 @@ public class DomainControllerTest extends AbstractControllerTest {
@Test
public void testSaveDomain() throws Exception {
List<DomainInfo> domainInfos = doGetTyped("/api/domain/infos", new TypeReference<List<DomainInfo>>() {
});
assertThat(domainInfos).isEmpty();
PageData<DomainInfo> pageData = doGetTypedWithPageLink("/api/domain/infos?", PAGE_DATA_DOMAIN_TYPE_REF, new PageLink(10, 0));
assertThat(pageData.getData()).isEmpty();
Domain domain = constructDomain(TenantId.SYS_TENANT_ID, "my.test.domain", true, true);
Domain savedDomain = doPost("/api/domain", domain, Domain.class);
List<DomainInfo> domainInfos2 = doGetTyped("/api/domain/infos", new TypeReference<List<DomainInfo>>() {
});
assertThat(domainInfos2).hasSize(1);
assertThat(domainInfos2.get(0)).isEqualTo(new DomainInfo(savedDomain, Collections.emptyList()));
PageData<DomainInfo> pageData2 = doGetTypedWithPageLink("/api/domain/infos?", PAGE_DATA_DOMAIN_TYPE_REF, new PageLink(10, 0));
assertThat(pageData2.getData()).hasSize(1);
assertThat(pageData2.getData().get(0)).isEqualTo(new DomainInfo(savedDomain, Collections.emptyList()));
DomainInfo retrievedDomainInfo = doGet("/api/domain/info/{id}", DomainInfo.class, savedDomain.getId().getId());
assertThat(retrievedDomainInfo).isEqualTo(new DomainInfo(savedDomain, Collections.emptyList()));

36
application/src/test/java/org/thingsboard/server/controller/MobileAppControllerTest.java

@ -20,23 +20,18 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppInfo;
import org.thingsboard.server.common.data.oauth2.MapperType;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.service.DaoSqlTest;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.containsString;
@ -46,6 +41,11 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@DaoSqlTest
public class MobileAppControllerTest extends AbstractControllerTest {
static final TypeReference<PageData<MobileAppInfo>> PAGE_DATA_MOBILE_APP_TYPE_REF = new TypeReference<>() {
};
static final TypeReference<PageData<OAuth2ClientInfo>> PAGE_DATA_OAUTH2_CLIENT_TYPE_REF = new TypeReference<>() {
};
@Before
public void setUp() throws Exception {
loginSysAdmin();
@ -53,16 +53,14 @@ public class MobileAppControllerTest extends AbstractControllerTest {
@After
public void tearDown() throws Exception {
List<MobileAppInfo> mobileAppInfos = doGetTyped("/api/mobileApp/infos", new TypeReference<List<MobileAppInfo>>() {
});
for (MobileApp mobileApp : mobileAppInfos) {
PageData<MobileAppInfo> pageData = doGetTypedWithPageLink("/api/mobileApp/infos?", PAGE_DATA_MOBILE_APP_TYPE_REF, new PageLink(10, 0));
for (MobileApp mobileApp : pageData.getData()) {
doDelete("/api/mobileApp/" + mobileApp.getId().getId())
.andExpect(status().isOk());
}
List<OAuth2ClientInfo> oAuth2ClientInfos = doGetTyped("/api/oauth2/client/infos", new TypeReference<List<OAuth2ClientInfo>>() {
});
for (OAuth2ClientInfo oAuth2ClientInfo : oAuth2ClientInfos) {
PageData<OAuth2ClientInfo> clients = doGetTypedWithPageLink("/api/oauth2/client/infos?", PAGE_DATA_OAUTH2_CLIENT_TYPE_REF, new PageLink(10, 0));
for (OAuth2ClientInfo oAuth2ClientInfo : clients.getData()) {
doDelete("/api/oauth2/client/" + oAuth2ClientInfo.getId().getId().toString())
.andExpect(status().isOk());
}
@ -70,17 +68,15 @@ public class MobileAppControllerTest extends AbstractControllerTest {
@Test
public void testSaveMobileApp() throws Exception {
List<MobileAppInfo> MobileAppInfos = doGetTyped("/api/mobileApp/infos", new TypeReference<List<MobileAppInfo>>() {
});
assertThat(MobileAppInfos).isEmpty();
PageData<MobileAppInfo> pageData = doGetTypedWithPageLink("/api/mobileApp/infos?", PAGE_DATA_MOBILE_APP_TYPE_REF, new PageLink(10, 0));
assertThat(pageData.getData()).isEmpty();
MobileApp mobileApp = validMobileApp(TenantId.SYS_TENANT_ID, "my.test.package", true);
MobileApp savedMobileApp = doPost("/api/mobileApp", mobileApp, MobileApp.class);
List<MobileAppInfo> MobileAppInfos2 = doGetTyped("/api/mobileApp/infos", new TypeReference<List<MobileAppInfo>>() {
});
assertThat(MobileAppInfos2).hasSize(1);
assertThat(MobileAppInfos2.get(0)).isEqualTo(new MobileAppInfo(savedMobileApp, Collections.emptyList()));
PageData<MobileAppInfo> pageData2 = doGetTypedWithPageLink("/api/mobileApp/infos?", PAGE_DATA_MOBILE_APP_TYPE_REF, new PageLink(10, 0));
assertThat(pageData2.getData()).hasSize(1);
assertThat(pageData2.getData().get(0)).isEqualTo(new MobileAppInfo(savedMobileApp, Collections.emptyList()));
MobileAppInfo retrievedMobileAppInfo = doGet("/api/mobileApp/info/{id}", MobileAppInfo.class, savedMobileApp.getId().getId());
assertThat(retrievedMobileAppInfo).isEqualTo(new MobileAppInfo(savedMobileApp, Collections.emptyList()));

33
application/src/test/java/org/thingsboard/server/controller/Oauth2ClientControllerTest.java

@ -20,21 +20,13 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.MapperType;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.service.DaoSqlTest;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ -42,6 +34,9 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@DaoSqlTest
public class Oauth2ClientControllerTest extends AbstractControllerTest {
static final TypeReference<PageData<OAuth2ClientInfo>> PAGE_DATA_OAUTH2_CLIENT_TYPE_REF = new TypeReference<>() {
};
@Before
public void setUp() throws Exception {
loginSysAdmin();
@ -49,9 +44,8 @@ public class Oauth2ClientControllerTest extends AbstractControllerTest {
@After
public void tearDown() throws Exception {
List<OAuth2ClientInfo> oAuth2ClientInfos = doGetTyped("/api/oauth2/client/infos", new TypeReference<List<OAuth2ClientInfo>>() {
});
for (OAuth2ClientInfo oAuth2ClientInfo : oAuth2ClientInfos) {
PageData<OAuth2ClientInfo> pageData = doGetTypedWithPageLink("/api/oauth2/client/infos?", PAGE_DATA_OAUTH2_CLIENT_TYPE_REF, new PageLink(10, 0));
for (OAuth2ClientInfo oAuth2ClientInfo : pageData.getData()) {
doDelete("/api/oauth2/client/" + oAuth2ClientInfo.getId().getId().toString())
.andExpect(status().isOk());
}
@ -60,17 +54,16 @@ public class Oauth2ClientControllerTest extends AbstractControllerTest {
@Test
public void testSaveOauth2Client() throws Exception {
loginSysAdmin();
List<OAuth2ClientInfo> oAuth2ClientInfos = doGetTyped("/api/oauth2/client/infos", new TypeReference<List<OAuth2ClientInfo>>() {
});
assertThat(oAuth2ClientInfos).isEmpty();
PageData<OAuth2ClientInfo> pageData = doGetTypedWithPageLink("/api/oauth2/client/infos?", PAGE_DATA_OAUTH2_CLIENT_TYPE_REF, new PageLink(10, 0));
assertThat(pageData.getData()).isEmpty();
OAuth2Client oAuth2Client = validClientInfo(TenantId.SYS_TENANT_ID, "test google client");
OAuth2Client savedOAuth2Client = doPost("/api/oauth2/client", oAuth2Client, OAuth2Client.class);
List<OAuth2ClientInfo> oAuth2ClientInfos2 = doGetTyped("/api/oauth2/client/infos", new TypeReference<List<OAuth2ClientInfo>>() {
});
assertThat(oAuth2ClientInfos2).hasSize(1);
assertThat(oAuth2ClientInfos2.get(0)).isEqualTo(new OAuth2ClientInfo(savedOAuth2Client));
PageData<OAuth2ClientInfo> pageData2 = doGetTypedWithPageLink("/api/oauth2/client/infos?", PAGE_DATA_OAUTH2_CLIENT_TYPE_REF, new PageLink(10, 0));
assertThat(pageData2.getData()).hasSize(1);
assertThat(pageData2.getData().get(0)).isEqualTo(new OAuth2ClientInfo(savedOAuth2Client));
OAuth2Client retrievedOAuth2ClientInfo = doGet("/api/oauth2/client/{id}", OAuth2Client.class, savedOAuth2Client.getId().getId());
assertThat(retrievedOAuth2ClientInfo).isEqualTo(savedOAuth2Client);

4
common/dao-api/src/main/java/org/thingsboard/server/dao/domain/DomainService.java

@ -20,6 +20,8 @@ import org.thingsboard.server.common.data.domain.DomainInfo;
import org.thingsboard.server.common.data.id.DomainId;
import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.EntityDaoService;
import java.util.List;
@ -32,7 +34,7 @@ public interface DomainService extends EntityDaoService {
Domain findDomainById(TenantId tenantId, DomainId domainId);
List<DomainInfo> findDomainInfosByTenantId(TenantId tenantId);
PageData<DomainInfo> findDomainInfosByTenantId(TenantId tenantId, PageLink pageLink);
DomainInfo findDomainInfoById(TenantId tenantId, DomainId domainId);

4
common/dao-api/src/main/java/org/thingsboard/server/dao/mobile/MobileAppService.java

@ -20,6 +20,8 @@ import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.EntityDaoService;
import java.util.List;
@ -32,7 +34,7 @@ public interface MobileAppService extends EntityDaoService {
MobileApp findMobileAppById(TenantId tenantId, MobileAppId mobileAppId);
List<MobileAppInfo> findMobileAppInfosByTenantId(TenantId tenantId);
PageData<MobileAppInfo> findMobileAppInfosByTenantId(TenantId tenantId, PageLink pageLink);
MobileAppInfo findMobileAppInfoById(TenantId tenantId, MobileAppId mobileAppId);

4
common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientService.java

@ -21,6 +21,8 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.EntityDaoService;
import java.util.List;
@ -44,5 +46,5 @@ public interface OAuth2ClientService extends EntityDaoService {
void deleteOauth2ClientsByTenantId(TenantId tenantId);
List<OAuth2ClientInfo> findOAuth2ClientInfosByTenantId(TenantId tenantId);
PageData<OAuth2ClientInfo> findOAuth2ClientInfosByTenantId(TenantId tenantId, PageLink pageLink);
}

4
dao/src/main/java/org/thingsboard/server/dao/domain/DomainDao.java

@ -20,13 +20,15 @@ import org.thingsboard.server.common.data.domain.DomainOauth2Client;
import org.thingsboard.server.common.data.id.DomainId;
import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.Dao;
import java.util.List;
public interface DomainDao extends Dao<Domain> {
List<Domain> findByTenantId(TenantId tenantId);
PageData<Domain> findByTenantId(TenantId tenantId, PageLink pageLink);
int countDomainByTenantIdAndOauth2Enabled(TenantId tenantId, boolean oauth2Enabled);

10
dao/src/main/java/org/thingsboard/server/dao/domain/DomainServiceImpl.java

@ -31,6 +31,8 @@ import org.thingsboard.server.common.data.id.HasId;
import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.AbstractEntityService;
import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent;
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
@ -117,16 +119,16 @@ public class DomainServiceImpl extends AbstractEntityService implements DomainSe
}
@Override
public List<DomainInfo> findDomainInfosByTenantId(TenantId tenantId) {
public PageData<DomainInfo> findDomainInfosByTenantId(TenantId tenantId, PageLink pageLink) {
log.trace("Executing findDomainInfosByTenantId [{}]", tenantId);
List<Domain> domains = domainDao.findByTenantId(tenantId);
PageData<Domain> pageData = domainDao.findByTenantId(tenantId, pageLink);
List<DomainInfo> domainInfos = new ArrayList<>();
domains.stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(domain -> {
pageData.getData().stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(domain -> {
domainInfos.add(new DomainInfo(domain, oauth2ClientDao.findByDomainId(domain.getUuidId()).stream()
.map(OAuth2ClientInfo::new)
.collect(Collectors.toList())));
});
return domainInfos;
return new PageData<>(domainInfos, pageData.getTotalPages(), pageData.getTotalElements(), pageData.hasNext());
}
@Override

4
dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppDao.java

@ -20,13 +20,15 @@ import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppOauth2Client;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.Dao;
import java.util.List;
public interface MobileAppDao extends Dao<MobileApp> {
List<MobileApp> findByTenantId(TenantId tenantId);
PageData<MobileApp> findByTenantId(TenantId tenantId, PageLink pageLink);
List<MobileAppOauth2Client> findOauth2ClientsByMobileAppId(TenantId tenantId, MobileAppId mobileAppId);

10
dao/src/main/java/org/thingsboard/server/dao/mobile/MobileAppServiceImpl.java

@ -31,6 +31,8 @@ import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppInfo;
import org.thingsboard.server.common.data.mobile.MobileAppOauth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.AbstractEntityService;
import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent;
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
@ -89,16 +91,16 @@ public class MobileAppServiceImpl extends AbstractEntityService implements Mobil
}
@Override
public List<MobileAppInfo> findMobileAppInfosByTenantId(TenantId tenantId) {
public PageData<MobileAppInfo> findMobileAppInfosByTenantId(TenantId tenantId, PageLink pageLink) {
log.trace("Executing findMobileAppInfosByTenantId [{}]", tenantId);
List<MobileApp> mobileApps = mobileAppDao.findByTenantId(tenantId);
PageData<MobileApp> pageData = mobileAppDao.findByTenantId(tenantId, pageLink);
List<MobileAppInfo> mobileAppInfos = new ArrayList<>();
mobileApps.stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(mobileApp -> {
pageData.getData().stream().sorted(Comparator.comparing(BaseData::getUuidId)).forEach(mobileApp -> {
mobileAppInfos.add(new MobileAppInfo(mobileApp, oauth2ClientDao.findByMobileAppId(mobileApp.getUuidId()).stream()
.map(OAuth2ClientInfo::new)
.collect(Collectors.toList())));
});
return mobileAppInfos;
return new PageData<>(mobileAppInfos, pageData.getTotalPages(), pageData.getTotalElements(), pageData.hasNext());
}
@Override

4
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientDao.java

@ -18,6 +18,8 @@ package org.thingsboard.server.dao.oauth2;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.Dao;
import java.util.List;
@ -25,7 +27,7 @@ import java.util.UUID;
public interface OAuth2ClientDao extends Dao<OAuth2Client> {
List<OAuth2Client> findByTenantId(UUID tenantId);
PageData<OAuth2Client> findByTenantId(UUID tenantId, PageLink pageLink);
List<OAuth2Client> findEnabledByDomainName(String domainName);

11
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientServiceImpl.java

@ -28,6 +28,8 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.entity.AbstractEntityService;
import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent;
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
@ -94,7 +96,7 @@ public class OAuth2ClientServiceImpl extends AbstractEntityService implements OA
@Override
public List<OAuth2Client> findOAuth2ClientsByTenantId(TenantId tenantId) {
log.trace("Executing findOAuth2ClientsByTenantId [{}]", tenantId);
return oauth2ClientDao.findByTenantId(tenantId.getId());
return oauth2ClientDao.findByTenantId(tenantId.getId(), new PageLink(Integer.MAX_VALUE)).getData();
}
@Override
@ -125,12 +127,15 @@ public class OAuth2ClientServiceImpl extends AbstractEntityService implements OA
}
@Override
public List<OAuth2ClientInfo> findOAuth2ClientInfosByTenantId(TenantId tenantId) {
public PageData<OAuth2ClientInfo> findOAuth2ClientInfosByTenantId(TenantId tenantId, PageLink pageLink) {
log.trace("Executing findOAuth2ClientInfosByTenantId tenantId=[{}]", tenantId);
return oauth2ClientDao.findByTenantId(tenantId.getId())
PageData<OAuth2Client> clientInfos = oauth2ClientDao.findByTenantId(tenantId.getId(), pageLink);
List<OAuth2ClientInfo> oAuth2ClientInfos = clientInfos
.getData()
.stream()
.map(OAuth2ClientInfo::new)
.collect(Collectors.toList());
return new PageData<>(oAuth2ClientInfos, clientInfos.getTotalPages(), clientInfos.getTotalPages(), clientInfos.hasNext());
}
@Override

5
dao/src/main/java/org/thingsboard/server/dao/sql/domain/DomainRepository.java

@ -15,6 +15,8 @@
*/
package org.thingsboard.server.dao.sql.domain;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@ -22,12 +24,11 @@ import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.server.dao.model.sql.DomainEntity;
import java.util.List;
import java.util.UUID;
public interface DomainRepository extends JpaRepository<DomainEntity, UUID> {
List<DomainEntity> findByTenantId(@Param("tenantId") UUID tenantId);
Page<DomainEntity> findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable);
@Transactional
@Modifying

6
dao/src/main/java/org/thingsboard/server/dao/sql/domain/JpaDomainDao.java

@ -24,6 +24,8 @@ import org.thingsboard.server.common.data.domain.DomainOauth2Client;
import org.thingsboard.server.common.data.id.DomainId;
import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.domain.DomainDao;
import org.thingsboard.server.dao.model.sql.DomainEntity;
@ -54,8 +56,8 @@ public class JpaDomainDao extends JpaAbstractDao<DomainEntity, Domain> implement
}
@Override
public List<Domain> findByTenantId(TenantId tenantId) {
return DaoUtil.convertDataList(domainRepository.findByTenantId(tenantId.getId()));
public PageData<Domain> findByTenantId(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(domainRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink)));
}
@Override

6
dao/src/main/java/org/thingsboard/server/dao/sql/mobile/JpaMobileAppDao.java

@ -24,6 +24,8 @@ import org.thingsboard.server.common.data.id.OAuth2ClientId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.mobile.MobileApp;
import org.thingsboard.server.common.data.mobile.MobileAppOauth2Client;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.mobile.MobileAppDao;
import org.thingsboard.server.dao.model.sql.MobileAppEntity;
@ -54,8 +56,8 @@ public class JpaMobileAppDao extends JpaAbstractDao<MobileAppEntity, MobileApp>
}
@Override
public List<MobileApp> findByTenantId(TenantId tenantId) {
return DaoUtil.convertDataList(mobileAppRepository.findByTenantId(tenantId.getId()));
public PageData<MobileApp> findByTenantId(TenantId tenantId, PageLink pageLink) {
return DaoUtil.toPageData(mobileAppRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink)));
}
@Override

5
dao/src/main/java/org/thingsboard/server/dao/sql/mobile/MobileAppRepository.java

@ -15,6 +15,8 @@
*/
package org.thingsboard.server.dao.sql.mobile;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@ -22,12 +24,11 @@ import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.server.dao.model.sql.MobileAppEntity;
import java.util.List;
import java.util.UUID;
public interface MobileAppRepository extends JpaRepository<MobileAppEntity, UUID> {
List<MobileAppEntity> findByTenantId(@Param("tenantId") UUID tenantId);
Page<MobileAppEntity> findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable);
@Transactional
@Modifying

6
dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientDao.java

@ -22,6 +22,8 @@ import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.model.sql.OAuth2ClientEntity;
import org.thingsboard.server.dao.oauth2.OAuth2ClientDao;
@ -49,8 +51,8 @@ public class JpaOAuth2ClientDao extends JpaAbstractDao<OAuth2ClientEntity, OAuth
}
@Override
public List<OAuth2Client> findByTenantId(UUID tenantId) {
return DaoUtil.convertDataList(repository.findByTenantId(tenantId));
public PageData<OAuth2Client> findByTenantId(UUID tenantId, PageLink pageLink) {
return DaoUtil.toPageData(repository.findByTenantId(tenantId, DaoUtil.toPageable(pageLink)));
}
@Override

4
dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRepository.java

@ -15,6 +15,8 @@
*/
package org.thingsboard.server.dao.sql.oauth2;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@ -27,7 +29,7 @@ import java.util.UUID;
public interface OAuth2ClientRepository extends JpaRepository<OAuth2ClientEntity, UUID> {
List<OAuth2ClientEntity> findByTenantId(@Param("tenantId") UUID tenantId);
Page<OAuth2ClientEntity> findByTenantId(@Param("tenantId") UUID tenantId, Pageable pageable);
@Query("SELECT c " +
"FROM OAuth2ClientEntity c " +

10
dao/src/test/java/org/thingsboard/server/dao/service/DomainServiceTest.java

@ -25,6 +25,8 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.domain.DomainService;
import org.thingsboard.server.dao.oauth2.OAuth2ClientService;
@ -91,16 +93,16 @@ public class DomainServiceTest extends AbstractServiceTest {
Domain savedOauth2Client = domainService.saveDomain(SYSTEM_TENANT_ID, oAuth2Client);
domains.add(savedOauth2Client);
}
List<DomainInfo> retrieved = domainService.findDomainInfosByTenantId(TenantId.SYS_TENANT_ID);
PageData<DomainInfo> retrieved = domainService.findDomainInfosByTenantId(TenantId.SYS_TENANT_ID, new PageLink(10, 0));
List<DomainInfo> domainInfos = domains.stream().map(domain -> new DomainInfo(domain, Collections.emptyList())).toList();
assertThat(retrieved).containsOnlyOnceElementsOf(domainInfos);
assertThat(retrieved.getData()).containsOnlyOnceElementsOf(domainInfos);
}
@Test
public void tesGetDomainInfo() {
OAuth2Client oAuth2Client = validClientInfo(TenantId.SYS_TENANT_ID, "Test google client");
OAuth2Client savedOauth2Client = oAuth2ClientService.saveOAuth2Client(SYSTEM_TENANT_ID, oAuth2Client);
List<OAuth2ClientInfo> infos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID);
PageData<OAuth2ClientInfo> infos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID, new PageLink(10));
Domain domain = constructDomain(TenantId.SYS_TENANT_ID, "test.domain.com", true, true);
Domain savedDomain = domainService.saveDomain(SYSTEM_TENANT_ID, domain);
@ -109,7 +111,7 @@ public class DomainServiceTest extends AbstractServiceTest {
// check domain info
DomainInfo retrievedInfo = domainService.findDomainInfoById(SYSTEM_TENANT_ID, savedDomain.getId());
assertThat(retrievedInfo).isEqualTo(new DomainInfo(savedDomain, infos));
assertThat(retrievedInfo).isEqualTo(new DomainInfo(savedDomain, infos.getData()));
//find clients by domain name
List<OAuth2ClientLoginInfo> oauth2LoginInfo = oAuth2ClientService.findOAuth2ClientLoginInfosByDomainName(savedDomain.getName());

10
dao/src/test/java/org/thingsboard/server/dao/service/MobileAppServiceTest.java

@ -25,6 +25,8 @@ import org.thingsboard.server.common.data.mobile.MobileAppInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientLoginInfo;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.mobile.MobileAppService;
import org.thingsboard.server.dao.oauth2.OAuth2ClientService;
@ -77,16 +79,16 @@ public class MobileAppServiceTest extends AbstractServiceTest {
MobileApp savedOauth2Client = mobileAppService.saveMobileApp(SYSTEM_TENANT_ID, oAuth2Client);
MobileApps.add(savedOauth2Client);
}
List<MobileAppInfo> retrieved = mobileAppService.findMobileAppInfosByTenantId(TenantId.SYS_TENANT_ID);
PageData<MobileAppInfo> retrieved = mobileAppService.findMobileAppInfosByTenantId(TenantId.SYS_TENANT_ID, new PageLink(10, 0));
List<MobileAppInfo> MobileAppInfos = MobileApps.stream().map(MobileApp -> new MobileAppInfo(MobileApp, Collections.emptyList())).toList();
assertThat(retrieved).containsOnlyOnceElementsOf(MobileAppInfos);
assertThat(retrieved.getData()).containsOnlyOnceElementsOf(MobileAppInfos);
}
@Test
public void tesGetMobileAppInfo() {
OAuth2Client oAuth2Client = validClientInfo(TenantId.SYS_TENANT_ID, "Test google client");
OAuth2Client savedOauth2Client = oAuth2ClientService.saveOAuth2Client(SYSTEM_TENANT_ID, oAuth2Client);
List<OAuth2ClientInfo> infos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID);
PageData<OAuth2ClientInfo> infos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID, new PageLink(10));
MobileApp MobileApp = validMobileApp(TenantId.SYS_TENANT_ID, "my.app", true);
MobileApp savedMobileApp = mobileAppService.saveMobileApp(SYSTEM_TENANT_ID, MobileApp);
@ -95,7 +97,7 @@ public class MobileAppServiceTest extends AbstractServiceTest {
// check MobileApp info
MobileAppInfo retrievedInfo = mobileAppService.findMobileAppInfoById(SYSTEM_TENANT_ID, savedMobileApp.getId());
assertThat(retrievedInfo).isEqualTo(new MobileAppInfo(savedMobileApp, infos));
assertThat(retrievedInfo).isEqualTo(new MobileAppInfo(savedMobileApp, infos.getData()));
//find clients by MobileApp name
List<OAuth2ClientLoginInfo> oauth2LoginInfo = oAuth2ClientService.findOAuth2ClientLoginInfosByMobilePkgNameAndPlatformType(savedMobileApp.getName(), null);

6
dao/src/test/java/org/thingsboard/server/dao/service/OAuth2ClientServiceTest.java

@ -24,6 +24,8 @@ import org.thingsboard.server.common.data.oauth2.OAuth2Client;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
import org.thingsboard.server.common.data.oauth2.PlatformType;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.oauth2.OAuth2ClientService;
import java.util.ArrayList;
@ -99,9 +101,9 @@ public class OAuth2ClientServiceTest extends AbstractServiceTest {
List<OAuth2Client> retrieved = oAuth2ClientService.findOAuth2ClientsByTenantId(TenantId.SYS_TENANT_ID);
assertThat(retrieved).containsOnlyOnceElementsOf(oAuth2Clients);
List<OAuth2ClientInfo> retrievedInfos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID);
PageData<OAuth2ClientInfo> retrievedInfos = oAuth2ClientService.findOAuth2ClientInfosByTenantId(TenantId.SYS_TENANT_ID, new PageLink(10));
List<OAuth2ClientInfo> oAuth2ClientInfos = oAuth2Clients.stream().map(OAuth2ClientInfo::new).collect(Collectors.toList());
assertThat(retrievedInfos).containsOnlyOnceElementsOf(oAuth2ClientInfos);
assertThat(retrievedInfos.getData()).containsOnlyOnceElementsOf(oAuth2ClientInfos);
}
}

Loading…
Cancel
Save