Search in sources :

Example 16 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 testFindByDomainAndKeys.

@Test
public void testFindByDomainAndKeys() {
    // create scope
    Scope scope = new Scope();
    scope.setName("firstOne");
    scope.setKey("one");
    scope.setDomain("testDomain");
    Scope scopeCreated1 = scopeRepository.create(scope).blockingGet();
    scope.setId(null);
    scope.setName("anotherOne");
    scope.setDomain("another");
    scopeRepository.create(scope).blockingGet();
    scope.setId(null);
    scope.setName("secondOne");
    scope.setKey("two");
    scope.setDomain("testDomain");
    Scope scopeCreated2 = scopeRepository.create(scope).blockingGet();
    // fetch scopes
    TestObserver<List<Scope>> testObserver = scopeRepository.findByDomainAndKeys("testDomain", Arrays.asList("one", "two", "three")).toList().test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    testObserver.assertValue(scopes -> scopes.size() == 2 && scopes.stream().map(Scope::getId).collect(Collectors.toList()).containsAll(Arrays.asList(scopeCreated1.getId(), scopeCreated2.getId())));
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope) Test(org.junit.Test) AbstractManagementTest(io.gravitee.am.repository.management.AbstractManagementTest)

Example 17 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 OpenIDScopeUpgrader method createSystemScope.

private Single<Scope> createSystemScope(String domain, io.gravitee.am.common.oidc.Scope systemScope) {
    return scopeService.findByDomainAndKey(domain, systemScope.getKey()).map(scope -> Optional.of(scope)).defaultIfEmpty(Optional.empty()).flatMapSingle(optScope -> {
        if (!optScope.isPresent()) {
            logger.info("Create a new system scope key[{}] for domain[{}]", systemScope.getKey(), domain);
            NewSystemScope scope = new NewSystemScope();
            scope.setKey(systemScope.getKey());
            scope.setClaims(systemScope.getClaims());
            scope.setName(systemScope.getLabel());
            scope.setDescription(systemScope.getDescription());
            scope.setDiscovery(systemScope.isDiscovery());
            return scopeService.create(domain, scope);
        } else if (shouldUpdateSystemScope(optScope, systemScope)) {
            logger.info("Update a system scope key[{}] for domain[{}]", systemScope.getKey(), domain);
            final Scope existingScope = optScope.get();
            UpdateSystemScope scope = new UpdateSystemScope();
            scope.setName(existingScope.getName() != null ? existingScope.getName() : systemScope.getLabel());
            scope.setDescription(existingScope.getDescription() != null ? existingScope.getDescription() : systemScope.getDescription());
            scope.setClaims(systemScope.getClaims());
            scope.setExpiresIn(existingScope.getExpiresIn());
            scope.setDiscovery(systemScope.isDiscovery());
            return scopeService.update(domain, optScope.get().getId(), scope);
        }
        return Single.just(optScope.get());
    });
}
Also used : NewSystemScope(io.gravitee.am.service.model.NewSystemScope) NewSystemScope(io.gravitee.am.service.model.NewSystemScope) Scope(io.gravitee.am.model.oauth2.Scope) UpdateSystemScope(io.gravitee.am.service.model.UpdateSystemScope) UpdateSystemScope(io.gravitee.am.service.model.UpdateSystemScope)

Example 18 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 ScopeUpgrader method createScope.

private Single<Scope> createScope(String domain, String scopeKey) {
    return scopeService.findByDomain(domain, 0, Integer.MAX_VALUE).flatMap(scopes -> {
        Optional<Scope> optScope = scopes.getData().stream().filter(scope -> scope.getKey().equalsIgnoreCase(scopeKey)).findFirst();
        if (!optScope.isPresent()) {
            logger.info("Create a new scope key[{}] for domain[{}]", scopeKey, domain);
            NewScope scope = new NewScope();
            scope.setKey(scopeKey);
            scope.setName(Character.toUpperCase(scopeKey.charAt(0)) + scopeKey.substring(1));
            scope.setDescription("Default description for scope " + scopeKey);
            return scopeService.create(domain, scope);
        }
        return Single.just(optScope.get());
    });
}
Also used : Ordered(org.springframework.core.Ordered) io.gravitee.am.service(io.gravitee.am.service) Logger(org.slf4j.Logger) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Domain(io.gravitee.am.model.Domain) NewScope(io.gravitee.am.service.model.NewScope) Single(io.reactivex.Single) ArrayList(java.util.ArrayList) Component(org.springframework.stereotype.Component) List(java.util.List) Optional(java.util.Optional) Observable(io.reactivex.Observable) Scope(io.gravitee.am.model.oauth2.Scope) SCOPE_UPGRADER(io.gravitee.am.management.service.impl.upgrades.UpgraderOrder.SCOPE_UPGRADER) NewScope(io.gravitee.am.service.model.NewScope) Scope(io.gravitee.am.model.oauth2.Scope) NewScope(io.gravitee.am.service.model.NewScope)

Example 19 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 ScopeServiceTest method shouldUpdate_systemScope_discoveryNotReplaced.

@Test
public void shouldUpdate_systemScope_discoveryNotReplaced() {
    UpdateScope updateScope = new UpdateScope();
    updateScope.setDiscovery(true);
    updateScope.setName("name");
    final String scopeId = "toUpdateId";
    Scope toUpdate = new Scope();
    toUpdate.setId(scopeId);
    toUpdate.setSystem(true);
    toUpdate.setDiscovery(false);
    toUpdate.setName("oldName");
    toUpdate.setDescription("oldDescription");
    ArgumentCaptor<Scope> argument = ArgumentCaptor.forClass(Scope.class);
    when(scopeRepository.findById(scopeId)).thenReturn(Maybe.just(toUpdate));
    when(scopeRepository.update(argument.capture())).thenReturn(Single.just(new Scope()));
    when(eventService.create(any())).thenReturn(Single.just(new Event()));
    TestObserver testObserver = scopeService.update(DOMAIN, scopeId, updateScope).test();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    verify(scopeRepository, times(1)).update(any(Scope.class));
    assertNotNull(argument.getValue());
    assertEquals("name", argument.getValue().getName());
    assertNull(argument.getValue().getDescription());
    assertFalse(argument.getValue().isDiscovery());
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope) Event(io.gravitee.am.model.common.event.Event) TestObserver(io.reactivex.observers.TestObserver) Test(org.junit.Test)

Example 20 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 ScopeServiceTest method shouldDelete3_technicalException.

@Test
public void shouldDelete3_technicalException() {
    when(scopeRepository.findById("my-scope")).thenReturn(Maybe.just(new Scope()));
    TestObserver testObserver = new TestObserver();
    scopeService.delete("my-scope", false).subscribe(testObserver);
    testObserver.assertError(TechnicalManagementException.class);
    testObserver.assertNotComplete();
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope) TestObserver(io.reactivex.observers.TestObserver) Test(org.junit.Test)

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