Search in sources :

Example 46 with Scope

use of org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope in project gravitee-access-management by gravitee-io.

the class ScopeRepositoryTest method buildScope.

private Scope buildScope() {
    Scope scope = new Scope();
    String rand = UUID.randomUUID().toString();
    scope.setName("name" + rand);
    scope.setDescription("desc" + rand);
    scope.setDiscovery(true);
    scope.setDomain("domain" + rand);
    scope.setExpiresIn(321);
    scope.setIconUri("http://icon.acme.fr/" + rand);
    scope.setKey("key" + rand);
    scope.setSystem(true);
    scope.setParameterized(true);
    scope.setCreatedAt(new Date());
    scope.setUpdatedAt(new Date());
    scope.setClaims(Arrays.asList("claim1" + rand, "claim2" + rand));
    return scope;
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope)

Example 47 with Scope

use of org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope in project gravitee-access-management by gravitee-io.

the class ScopeRepositoryTest method testCreate.

@Test
public void testCreate() {
    Scope scope = new Scope();
    scope.setName("testName");
    scope.setSystem(true);
    scope.setClaims(Collections.emptyList());
    TestObserver<Scope> testObserver = scopeRepository.create(scope).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    testObserver.assertValue(s -> s.getName().equals(scope.getName()));
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope) Test(org.junit.Test) AbstractManagementTest(io.gravitee.am.repository.management.AbstractManagementTest)

Example 48 with Scope

use of org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope in project gravitee-access-management by gravitee-io.

the class ScopeRepositoryTest method testUpdate.

@Test
public void testUpdate() {
    // create scope
    Scope scope = buildScope();
    Scope scopeCreated = scopeRepository.create(scope).blockingGet();
    // update scope
    Scope updatedScope = buildScope();
    updatedScope.setId(scopeCreated.getId());
    TestObserver<Scope> testObserver = scopeRepository.update(updatedScope).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    assertEqualsTo(updatedScope, testObserver);
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope) Test(org.junit.Test) AbstractManagementTest(io.gravitee.am.repository.management.AbstractManagementTest)

Example 49 with Scope

use of org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope in project gravitee-access-management by gravitee-io.

the class JdbcScopeRepository method search.

@Override
public Single<Page<Scope>> search(String domain, String query, int page, int size) {
    LOGGER.debug("search({}, {})", domain, query);
    boolean wildcardSearch = query.contains("*");
    String wildcardQuery = query.replaceAll("\\*+", "%");
    String search = this.databaseDialectHelper.buildSearchScopeQuery(wildcardSearch, page, size);
    String count = this.databaseDialectHelper.buildCountScopeQuery(wildcardSearch);
    return fluxToFlowable(template.getDatabaseClient().sql(search).bind(COL_DOMAIN, domain).bind("value", wildcardSearch ? wildcardQuery.toUpperCase() : query.toUpperCase()).map(row -> rowMapper.read(JdbcScope.class, row)).all()).map(this::toEntity).flatMap(scope -> completeWithClaims(Maybe.just(scope), scope.getId()).toFlowable()).toList().flatMap(data -> monoToSingle(template.getDatabaseClient().sql(count).bind(COL_DOMAIN, domain).bind("value", wildcardSearch ? wildcardQuery.toUpperCase() : query.toUpperCase()).map(row -> row.get(0, Long.class)).first()).map(total -> new Page<>(data, page, total)));
}
Also used : Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) Query(org.springframework.data.relational.core.query.Query) LocalDateTime(java.time.LocalDateTime) Autowired(org.springframework.beans.factory.annotation.Autowired) Criteria.where(org.springframework.data.relational.core.query.Criteria.where) Single(io.reactivex.Single) InitializingBean(org.springframework.beans.factory.InitializingBean) DatabaseClient(org.springframework.r2dbc.core.DatabaseClient) SpringScopeClaimRepository(io.gravitee.am.repository.jdbc.management.api.spring.scope.SpringScopeClaimRepository) AbstractJdbcRepository(io.gravitee.am.repository.jdbc.management.AbstractJdbcRepository) Flowable(io.reactivex.Flowable) Sort(org.springframework.data.domain.Sort) JdbcScope(io.gravitee.am.repository.jdbc.management.api.model.JdbcScope) Repository(org.springframework.stereotype.Repository) Scope(io.gravitee.am.model.oauth2.Scope) Page(io.gravitee.am.model.common.Page) CriteriaDefinition.from(org.springframework.data.relational.core.query.CriteriaDefinition.from) TransactionalOperator(org.springframework.transaction.reactive.TransactionalOperator) PageRequest(org.springframework.data.domain.PageRequest) Mono(reactor.core.publisher.Mono) ScopeRepository(io.gravitee.am.repository.management.api.ScopeRepository) RandomString(io.gravitee.am.common.utils.RandomString) SpringScopeRepository(io.gravitee.am.repository.jdbc.management.api.spring.scope.SpringScopeRepository) Flux(reactor.core.publisher.Flux) List(java.util.List) RxJava2Adapter(reactor.adapter.rxjava.RxJava2Adapter) SqlIdentifier(org.springframework.data.relational.core.sql.SqlIdentifier) JdbcScope(io.gravitee.am.repository.jdbc.management.api.model.JdbcScope) Page(io.gravitee.am.model.common.Page) RandomString(io.gravitee.am.common.utils.RandomString)

Example 50 with Scope

use of org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope in project gravitee-access-management by gravitee-io.

the class ScopeServiceImpl method update.

@Override
public Single<Scope> update(String domain, String id, UpdateSystemScope updateScope) {
    LOGGER.debug("Update a system scope {} for domain {}", id, domain);
    return scopeRepository.findById(id).switchIfEmpty(Maybe.error(new ScopeNotFoundException(id))).flatMapSingle(scope -> {
        scope.setName(updateScope.getName());
        scope.setDescription(updateScope.getDescription());
        scope.setUpdatedAt(new Date());
        scope.setSystem(true);
        scope.setClaims(updateScope.getClaims());
        scope.setExpiresIn(updateScope.getExpiresIn());
        scope.setDiscovery(updateScope.isDiscovery());
        return scopeRepository.update(scope);
    }).flatMap(scope -> {
        // create event for sync process
        Event event = new Event(Type.SCOPE, new Payload(scope.getId(), ReferenceType.DOMAIN, scope.getDomain(), Action.UPDATE));
        return eventService.create(event).flatMap(__ -> Single.just(scope));
    }).onErrorResumeNext(ex -> {
        if (ex instanceof AbstractManagementException) {
            return Single.error(ex);
        }
        LOGGER.error("An error occurs while trying to update a system scope", ex);
        return Single.error(new TechnicalManagementException("An error occurs while trying to update a system scope", ex));
    });
}
Also used : java.util(java.util) Completable(io.reactivex.Completable) Maybe(io.reactivex.Maybe) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Single(io.reactivex.Single) Event(io.gravitee.am.model.common.event.Event) Type(io.gravitee.am.common.event.Type) io.gravitee.am.service.exception(io.gravitee.am.service.exception) User(io.gravitee.am.identityprovider.api.User) AuditBuilder(io.gravitee.am.service.reporter.builder.AuditBuilder) ReferenceType(io.gravitee.am.model.ReferenceType) Observable(io.reactivex.Observable) URI(java.net.URI) Scope(io.gravitee.am.model.oauth2.Scope) io.gravitee.am.service(io.gravitee.am.service) Action(io.gravitee.am.common.event.Action) Page(io.gravitee.am.model.common.Page) Logger(org.slf4j.Logger) ApplicationOAuthSettings(io.gravitee.am.model.application.ApplicationOAuthSettings) MalformedURLException(java.net.MalformedURLException) ScopeRepository(io.gravitee.am.repository.management.api.ScopeRepository) EventType(io.gravitee.am.common.audit.EventType) Collectors(java.util.stream.Collectors) RandomString(io.gravitee.am.common.utils.RandomString) io.gravitee.am.service.model(io.gravitee.am.service.model) Component(org.springframework.stereotype.Component) Payload(io.gravitee.am.model.common.event.Payload) ApplicationScopeSettings(io.gravitee.am.model.application.ApplicationScopeSettings) ScopeAuditBuilder(io.gravitee.am.service.reporter.builder.management.ScopeAuditBuilder) Lazy(org.springframework.context.annotation.Lazy) ScopeApprovalRepository(io.gravitee.am.repository.oauth2.api.ScopeApprovalRepository) Event(io.gravitee.am.model.common.event.Event) Payload(io.gravitee.am.model.common.event.Payload)

Aggregations

Scope (io.gravitee.am.model.oauth2.Scope)63 Test (org.junit.Test)43 TestObserver (io.reactivex.observers.TestObserver)25 Event (io.gravitee.am.model.common.event.Event)16 Page (io.gravitee.am.model.common.Page)15 Domain (io.gravitee.am.model.Domain)10 NewScope (io.gravitee.am.service.model.NewScope)9 Autowired (org.springframework.beans.factory.annotation.Autowired)9 AbstractManagementTest (io.gravitee.am.repository.management.AbstractManagementTest)8 Maybe (io.reactivex.Maybe)8 Single (io.reactivex.Single)8 RandomString (io.gravitee.am.common.utils.RandomString)7 ScopeRepository (io.gravitee.am.repository.management.api.ScopeRepository)7 Completable (io.reactivex.Completable)7 JerseySpringTest (io.gravitee.am.management.handlers.management.api.JerseySpringTest)6 ApplicationOAuthSettings (io.gravitee.am.model.application.ApplicationOAuthSettings)6 Observable (io.reactivex.Observable)6 User (io.gravitee.am.identityprovider.api.User)5 ReferenceType (io.gravitee.am.model.ReferenceType)5 ApplicationScopeSettings (io.gravitee.am.model.application.ApplicationScopeSettings)5