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)));
}
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;
}
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());
}
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());
}
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());
}
Aggregations