Search in sources :

Example 26 with Page

use of io.gravitee.am.model.common.Page in project gravitee-access-management by gravitee-io.

the class ApplicationRepositoryTest method testFindByDomainPagination.

@Test
public void testFindByDomainPagination() throws TechnicalException {
    // create app 1
    Application app = new Application();
    app.setName("testClientId");
    app.setDomain("testDomainPagination");
    applicationRepository.create(app).blockingGet();
    // create app 2
    Application app2 = new Application();
    app2.setName("testClientId2");
    app2.setDomain("testDomainPagination");
    applicationRepository.create(app2).blockingGet();
    TestObserver<Page<Application>> testObserver = applicationRepository.findByDomain("testDomainPagination", 1, 1).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    testObserver.assertValue(pageApplications -> pageApplications.getTotalCount() == 2 && pageApplications.getData().size() == 1);
}
Also used : Page(io.gravitee.am.model.common.Page) Application(io.gravitee.am.model.Application) Test(org.junit.Test) AbstractManagementTest(io.gravitee.am.repository.management.AbstractManagementTest)

Example 27 with Page

use of io.gravitee.am.model.common.Page in project gravitee-access-management by gravitee-io.

the class ApplicationRepositoryTest method testSearch_strict.

@Test
public void testSearch_strict() {
    final String domain = "domain";
    // create app
    Application app = new Application();
    app.setDomain(domain);
    app.setName("clientId");
    applicationRepository.create(app).blockingGet();
    Application app2 = new Application();
    app2.setDomain(domain);
    app2.setName("clientId2");
    applicationRepository.create(app2).blockingGet();
    // fetch user
    TestObserver<Page<Application>> testObserver = applicationRepository.search(domain, "clientId", 0, Integer.MAX_VALUE).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    testObserver.assertValue(apps -> apps.getData().size() == 1);
    testObserver.assertValue(apps -> apps.getTotalCount() == 1);
    testObserver.assertValue(apps -> apps.getData().iterator().next().getName().equals(app.getName()));
}
Also used : Page(io.gravitee.am.model.common.Page) Application(io.gravitee.am.model.Application) Test(org.junit.Test) AbstractManagementTest(io.gravitee.am.repository.management.AbstractManagementTest)

Example 28 with Page

use of io.gravitee.am.model.common.Page in project gravitee-access-management by gravitee-io.

the class ResourceServiceTest method findByDomainAndClient.

@Test
public void findByDomainAndClient() {
    when(repository.findByDomainAndClient(DOMAIN_ID, CLIENT_ID, 0, Integer.MAX_VALUE)).thenReturn(Single.just(new Page<>(Collections.emptyList(), 0, 0)));
    TestObserver testObserver = service.findByDomainAndClient(DOMAIN_ID, CLIENT_ID, 0, Integer.MAX_VALUE).test();
    testObserver.assertComplete().assertNoErrors();
    verify(repository, times(1)).findByDomainAndClient(DOMAIN_ID, CLIENT_ID, 0, Integer.MAX_VALUE);
}
Also used : Page(io.gravitee.am.model.common.Page) TestObserver(io.reactivex.observers.TestObserver) Test(org.junit.Test)

Example 29 with Page

use of io.gravitee.am.model.common.Page in project gravitee-access-management by gravitee-io.

the class JdbcUserRepository method search.

@Override
public Single<Page<User>> search(ReferenceType referenceType, String referenceId, String query, int page, int size) {
    LOGGER.debug("search({}, {}, {}, {}, {})", referenceType, referenceId, query, page, size);
    boolean wildcardSearch = query.contains("*");
    String wildcardValue = query.replaceAll("\\*+", "%");
    String search = this.databaseDialectHelper.buildSearchUserQuery(wildcardSearch, page, size);
    String count = this.databaseDialectHelper.buildCountUserQuery(wildcardSearch);
    return fluxToFlowable(template.getDatabaseClient().sql(search).bind(ATTR_COL_VALUE, wildcardSearch ? wildcardValue : query).bind("refId", referenceId).bind("refType", referenceType.name()).map(row -> rowMapper.read(JdbcUser.class, row)).all()).map(this::toEntity).flatMap(app -> completeUser(app).toFlowable(), // single thread to keep order
    CONCURRENT_FLATMAP).toList().flatMap(data -> monoToSingle(template.getDatabaseClient().sql(count).bind(ATTR_COL_VALUE, wildcardSearch ? wildcardValue : query).bind("refId", referenceId).bind("refType", referenceType.name()).map(row -> row.get(0, Long.class)).first()).map(total -> new Page<>(data, page, total)));
}
Also used : DOMAIN(io.gravitee.am.model.ReferenceType.DOMAIN) ScimUserSearch(io.gravitee.am.repository.jdbc.common.dialect.ScimUserSearch) java.util(java.util) Address(io.gravitee.am.model.scim.Address) UserRepository(io.gravitee.am.repository.management.api.UserRepository) FilterCriteria(io.gravitee.am.repository.management.api.search.FilterCriteria) Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) Query(org.springframework.data.relational.core.query.Query) LocalDateTime(java.time.LocalDateTime) JdbcUser(io.gravitee.am.repository.jdbc.management.api.model.JdbcUser) Autowired(org.springframework.beans.factory.annotation.Autowired) Criteria.where(org.springframework.data.relational.core.query.Criteria.where) Field(io.gravitee.am.common.analytics.Field) AnalyticsQuery(io.gravitee.am.model.analytics.AnalyticsQuery) AbstractRole(io.gravitee.am.repository.jdbc.management.api.model.JdbcUser.AbstractRole) Single(io.reactivex.Single) InitializingBean(org.springframework.beans.factory.InitializingBean) DatabaseClient(org.springframework.r2dbc.core.DatabaseClient) AbstractJdbcRepository(io.gravitee.am.repository.jdbc.management.AbstractJdbcRepository) io.gravitee.am.repository.jdbc.management.api.spring.user(io.gravitee.am.repository.jdbc.management.api.spring.user) Attribute(io.gravitee.am.model.scim.Attribute) Flowable(io.reactivex.Flowable) ReferenceType(io.gravitee.am.model.ReferenceType) Sort(org.springframework.data.domain.Sort) Stream.concat(java.util.stream.Stream.concat) User(io.gravitee.am.model.User) Repository(org.springframework.stereotype.Repository) StreamUtils(org.springframework.data.util.StreamUtils) Page(io.gravitee.am.model.common.Page) TransactionalOperator(org.springframework.transaction.reactive.TransactionalOperator) PageRequest(org.springframework.data.domain.PageRequest) Mono(reactor.core.publisher.Mono) RandomString(io.gravitee.am.common.utils.RandomString) Flux(reactor.core.publisher.Flux) ChronoUnit(java.time.temporal.ChronoUnit) Stream(java.util.stream.Stream) RxJava2Adapter(reactor.adapter.rxjava.RxJava2Adapter) UTC(java.time.ZoneOffset.UTC) JdbcUser(io.gravitee.am.repository.jdbc.management.api.model.JdbcUser) Page(io.gravitee.am.model.common.Page) RandomString(io.gravitee.am.common.utils.RandomString)

Example 30 with Page

use of io.gravitee.am.model.common.Page in project gravitee-access-management by gravitee-io.

the class ApplicationServiceTest method shouldFindAllPagination.

@Test
public void shouldFindAllPagination() {
    Page pageClients = new Page(Collections.singleton(new Application()), 1, 1);
    when(applicationRepository.findAll(1, 1)).thenReturn(Single.just(pageClients));
    TestObserver<Page<Application>> testObserver = applicationService.findAll(1, 1).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    testObserver.assertValue(extensionGrants -> extensionGrants.getData().size() == 1);
}
Also used : Page(io.gravitee.am.model.common.Page) Test(org.junit.Test)

Aggregations

Page (io.gravitee.am.model.common.Page)68 Test (org.junit.Test)51 User (io.gravitee.am.model.User)29 AbstractManagementTest (io.gravitee.am.repository.management.AbstractManagementTest)26 FilterCriteria (io.gravitee.am.repository.management.api.search.FilterCriteria)16 Autowired (org.springframework.beans.factory.annotation.Autowired)14 Maybe (io.reactivex.Maybe)12 Single (io.reactivex.Single)12 ReferenceType (io.gravitee.am.model.ReferenceType)11 Flowable (io.reactivex.Flowable)11 Response (javax.ws.rs.core.Response)11 Domain (io.gravitee.am.model.Domain)10 List (java.util.List)10 Application (io.gravitee.am.model.Application)9 Scope (io.gravitee.am.model.oauth2.Scope)8 Completable (io.reactivex.Completable)8 LocalDateTime (java.time.LocalDateTime)8 InitializingBean (org.springframework.beans.factory.InitializingBean)8 Criteria.where (org.springframework.data.relational.core.query.Criteria.where)8 Query (org.springframework.data.relational.core.query.Query)8