Search in sources :

Example 51 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 create.

@Override
public Single<Scope> create(String domain, NewScope newScope, User principal) {
    LOGGER.debug("Create a new scope {} for domain {}", newScope, domain);
    // replace all whitespace by an underscore (whitespace is a reserved keyword to separate tokens)
    String scopeKey = newScope.getKey().replaceAll("\\s+", "_");
    return scopeRepository.findByDomainAndKey(domain, scopeKey).isEmpty().map(empty -> {
        if (!empty) {
            throw new ScopeAlreadyExistsException(scopeKey, domain);
        }
        Scope scope = new Scope();
        scope.setId(RandomString.generate());
        scope.setDomain(domain);
        scope.setKey(scopeKey);
        scope.setName(newScope.getName());
        scope.setDescription(newScope.getDescription());
        scope.setIconUri(newScope.getIconUri());
        scope.setExpiresIn(newScope.getExpiresIn());
        scope.setDiscovery(newScope.isDiscovery());
        scope.setParameterized(newScope.isParameterized());
        scope.setCreatedAt(new Date());
        scope.setUpdatedAt(new Date());
        return scope;
    }).flatMap(this::validateIconUri).flatMap(scopeRepository::create).flatMap(scope -> {
        // create event for sync process
        Event event = new Event(Type.SCOPE, new Payload(scope.getId(), ReferenceType.DOMAIN, scope.getDomain(), Action.CREATE));
        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 create a scope", ex);
        return Single.error(new TechnicalManagementException("An error occurs while trying to create a scope", ex));
    }).doOnSuccess(scope -> auditService.report(AuditBuilder.builder(ScopeAuditBuilder.class).principal(principal).type(EventType.SCOPE_CREATED).scope(scope))).doOnError(throwable -> auditService.report(AuditBuilder.builder(ScopeAuditBuilder.class).principal(principal).type(EventType.SCOPE_CREATED).throwable(throwable)));
}
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) Scope(io.gravitee.am.model.oauth2.Scope) Event(io.gravitee.am.model.common.event.Event) Payload(io.gravitee.am.model.common.event.Payload) RandomString(io.gravitee.am.common.utils.RandomString) ScopeAuditBuilder(io.gravitee.am.service.reporter.builder.management.ScopeAuditBuilder)

Example 52 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 PatchScope method patch.

public Scope patch(Scope toPatch) {
    Scope patched = new Scope(toPatch);
    SetterUtils.safeSet(patched::setName, this.getName());
    SetterUtils.safeSet(patched::setDescription, this.getDescription());
    SetterUtils.safeSet(patched::setIconUri, this.getIconUri());
    SetterUtils.safeSet(patched::setExpiresIn, this.getExpiresIn());
    if (!toPatch.isSystem()) {
        SetterUtils.safeSet(patched::setDiscovery, this.getDiscovery(), boolean.class);
        SetterUtils.safeSet(patched::setParameterized, this.getParameterized(), boolean.class);
    }
    return patched;
}
Also used : Scope(io.gravitee.am.model.oauth2.Scope)

Example 53 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 ScopeResourceTest method shouldGetScope.

@Test
public void shouldGetScope() {
    final String domainId = "domain-id";
    final Domain mockDomain = new Domain();
    mockDomain.setId(domainId);
    final String scopeId = "scope-id";
    final Scope mockScope = new Scope();
    mockScope.setId(scopeId);
    mockScope.setKey(scopeId);
    mockScope.setName("scope-name");
    mockScope.setDomain(domainId);
    doReturn(Maybe.just(mockDomain)).when(domainService).findById(domainId);
    doReturn(Maybe.just(mockScope)).when(scopeService).findById(scopeId);
    final Response response = target("domains").path(domainId).path("scopes").path(scopeId).request().get();
    assertEquals(HttpStatusCode.OK_200, response.getStatus());
    final Scope scope = readEntity(response, Scope.class);
    assertEquals(domainId, scope.getDomain());
    assertEquals(scopeId, scope.getKey());
}
Also used : Response(javax.ws.rs.core.Response) Scope(io.gravitee.am.model.oauth2.Scope) Domain(io.gravitee.am.model.Domain) JerseySpringTest(io.gravitee.am.management.handlers.management.api.JerseySpringTest) Test(org.junit.Test)

Example 54 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 UserConsentResourceTest method shouldGetUserConsent.

@Test
public void shouldGetUserConsent() {
    final String domainId = "domain-1";
    final Domain mockDomain = new Domain();
    mockDomain.setId(domainId);
    final User mockUser = new User();
    mockUser.setId("user-id-1");
    final Application mockClient = new Application();
    mockClient.setId("client-id-1");
    final Scope mockScope = new Scope();
    mockScope.setId("scope-id-1");
    mockScope.setKey("scope");
    final ScopeApproval scopeApproval = new ScopeApproval();
    scopeApproval.setId("consent-id");
    scopeApproval.setClientId("clientId");
    scopeApproval.setScope("scope");
    scopeApproval.setDomain(domainId);
    doReturn(Maybe.just(mockDomain)).when(domainService).findById(domainId);
    doReturn(Maybe.just(mockClient)).when(applicationService).findByDomainAndClientId(domainId, scopeApproval.getClientId());
    doReturn(Maybe.just(mockScope)).when(scopeService).findByDomainAndKey(domainId, scopeApproval.getScope());
    doReturn(Maybe.just(scopeApproval)).when(scopeApprovalService).findById(scopeApproval.getId());
    final Response response = target("domains").path(domainId).path("users").path(mockUser.getId()).path("consents").path(scopeApproval.getId()).request().get();
    assertEquals(HttpStatusCode.OK_200, response.getStatus());
}
Also used : Response(javax.ws.rs.core.Response) User(io.gravitee.am.model.User) Scope(io.gravitee.am.model.oauth2.Scope) Domain(io.gravitee.am.model.Domain) Application(io.gravitee.am.model.Application) ScopeApproval(io.gravitee.am.model.oauth2.ScopeApproval) Test(org.junit.Test) JerseySpringTest(io.gravitee.am.management.handlers.management.api.JerseySpringTest)

Example 55 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 shouldDelete_full.

@Test
public void shouldDelete_full() {
    Scope scope = mock(Scope.class);
    when(scope.getDomain()).thenReturn(DOMAIN);
    when(scope.getKey()).thenReturn("my-scope");
    Role role = mock(Role.class);
    when(role.getId()).thenReturn("role-1");
    when(role.getOauthScopes()).thenReturn(new LinkedList<>(Arrays.asList("my-scope")));
    Application application = mock(Application.class);
    ApplicationSettings applicationSettings = mock(ApplicationSettings.class);
    ApplicationOAuthSettings applicationOAuthSettings = mock(ApplicationOAuthSettings.class);
    when(applicationOAuthSettings.getScopeSettings()).thenReturn(Arrays.asList(new ApplicationScopeSettings("my-scope")));
    when(applicationSettings.getOauth()).thenReturn(applicationOAuthSettings);
    when(application.getSettings()).thenReturn(applicationSettings);
    when(roleService.findByDomain(DOMAIN)).thenReturn(Single.just(Collections.singleton(role)));
    when(applicationService.findByDomain(DOMAIN)).thenReturn(Single.just(Collections.singleton(application)));
    when(roleService.update(anyString(), anyString(), any(UpdateRole.class))).thenReturn(Single.just(new Role()));
    when(applicationService.update(any())).thenReturn(Single.just(new Application()));
    when(scopeRepository.findById("my-scope")).thenReturn(Maybe.just(scope));
    when(scopeRepository.delete("my-scope")).thenReturn(Completable.complete());
    when(scopeApprovalRepository.deleteByDomainAndScopeKey(scope.getDomain(), scope.getKey())).thenReturn(Completable.complete());
    when(eventService.create(any())).thenReturn(Single.just(new Event()));
    TestObserver testObserver = scopeService.delete("my-scope", false).test();
    testObserver.awaitTerminalEvent();
    testObserver.assertComplete();
    testObserver.assertNoErrors();
    verify(roleService, times(1)).findByDomain(DOMAIN);
    verify(applicationService, times(1)).findByDomain(DOMAIN);
    verify(roleService, times(1)).update(anyString(), anyString(), any(UpdateRole.class));
    verify(applicationService, times(1)).update(any());
    verify(scopeRepository, times(1)).delete("my-scope");
    verify(eventService, times(1)).create(any());
}
Also used : Role(io.gravitee.am.model.Role) ApplicationOAuthSettings(io.gravitee.am.model.application.ApplicationOAuthSettings) ApplicationSettings(io.gravitee.am.model.application.ApplicationSettings) Scope(io.gravitee.am.model.oauth2.Scope) ApplicationScopeSettings(io.gravitee.am.model.application.ApplicationScopeSettings) Event(io.gravitee.am.model.common.event.Event) Application(io.gravitee.am.model.Application) 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