[ACA-2948] Add API to fetch the bpm properties (#5610)

* Add the api to fetch the bpm properties

* remove useless map

* Use latest api

* Use the BehaviorSubject

* filter the status true
This commit is contained in:
Maurizio Vitale 2020-04-16 17:23:00 +01:00 committed by GitHub
parent 55a5cc073b
commit e56331fecb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 112 additions and 41 deletions

View File

@ -34,7 +34,7 @@ export class AlfrescoApiServiceMock extends AlfrescoApiService {
initialize(): Promise<any> {
return new Promise((resolve) => {
this.alfrescoApiInitializedSubject.next();
this.alfrescoApiInitializedSubject.next(true);
resolve();
});
}

View File

@ -25,7 +25,7 @@ import {
AlfrescoApiCompatibility, AlfrescoApiConfig
} from '@alfresco/js-api';
import { AppConfigService, AppConfigValues } from '../app-config/app-config.service';
import { Subject, Observable } from 'rxjs';
import { Subject, Observable, BehaviorSubject } from 'rxjs';
import { OauthConfigModel } from '../models/oauth-config.model';
import { StorageService } from './storage.service';
@ -40,7 +40,7 @@ export class AlfrescoApiService {
*/
nodeUpdated = new Subject<Node>();
protected alfrescoApiInitializedSubject: Subject<any>;
protected alfrescoApiInitializedSubject: BehaviorSubject<any>;
alfrescoApiInitialized: Observable<any>;
protected alfrescoApi: AlfrescoApiCompatibility;
@ -102,7 +102,7 @@ export class AlfrescoApiService {
constructor(
protected appConfig: AppConfigService,
protected storageService: StorageService) {
this.alfrescoApiInitializedSubject = new Subject();
this.alfrescoApiInitializedSubject = new BehaviorSubject(null);
this.alfrescoApiInitialized = this.alfrescoApiInitializedSubject.asObservable();
}
@ -110,7 +110,7 @@ export class AlfrescoApiService {
await this.appConfig.load().then(() => {
this.storageService.prefix = this.appConfig.get<string>(AppConfigValues.STORAGE_PREFIX, '');
this.initAlfrescoApi();
this.alfrescoApiInitializedSubject.next();
this.alfrescoApiInitializedSubject.next(true);
});
}

View File

@ -21,6 +21,7 @@ import { AppConfigService } from '../app-config/app-config.service';
import { DiscoveryApiService } from './discovery-api.service';
import { setupTestBed } from '../testing/setup-test-bed';
import { CoreTestingModule } from '../testing/core.testing.module';
import { SystemPropertiesRepresentation } from '@alfresco/js-api';
declare let jasmine: any;
@ -87,6 +88,18 @@ const fakeBPMDiscoveryResponse: any = {
'minorVersion': '6'
};
const fakeBPMDiscoverySystemPropertyResponse: any = {
'allowInvolveByEmail': true,
'disableJavaScriptEventsInFormEditor': false,
'logoutDisabled': false,
'authConfiguration': {
'authUrl': 'fakeAuthUrl',
'realm': 'fakeRealm',
'clientId': 'fakeClient',
'useBrowserLogout': true
}
};
describe('Discovery Api Service', () => {
let service;
@ -172,5 +185,42 @@ describe('Discovery Api Service', () => {
status: 403
});
});
it('Should retrieve the system properties for BPM', (done) => {
service.getBPMSystemProperties().subscribe((data: SystemPropertiesRepresentation) => {
expect(data).not.toBeNull();
expect(data.allowInvolveByEmail).toBe(true);
expect(data.disableJavaScriptEventsInFormEditor).toBe(false);
expect(data.logoutDisabled).toBe(false);
expect(data.authConfiguration.authUrl).toBe('fakeAuthUrl');
expect(data.authConfiguration.realm).toBe('fakeRealm');
expect(data.authConfiguration.clientId).toBe('fakeClient');
expect(data.authConfiguration.useBrowserLogout).toBe(true);
done();
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'json',
responseText: fakeBPMDiscoverySystemPropertyResponse
});
});
it('Should retrieve the system properties for BPM', (done) => {
service.getBPMSystemProperties().subscribe(
() => {
fail('expected an error, bpm not running');
},
(error) => {
expect(error.response.statusCode).toEqual(404);
expect(error.response.statusText).toEqual('Not Found');
done();
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 404,
statusText: 'Not Found'
});
});
});
});

View File

@ -20,6 +20,10 @@ import { from, throwError, Observable } from 'rxjs';
import { BpmProductVersionModel, EcmProductVersionModel } from '../models/product-version.model';
import { AlfrescoApiService } from './alfresco-api.service';
import { map, catchError } from 'rxjs/operators';
import {
SystemPropertiesRepresentation,
Activiti
} from '@alfresco/js-api';
@Injectable({
providedIn: 'root'
@ -51,4 +55,15 @@ export class DiscoveryApiService {
catchError((err) => throwError(err))
);
}
private get systemPropertiesApi(): Activiti.SystemPropertiesApi {
return this.apiService.getInstance().activiti.systemPropertiesApi;
}
public getBPMSystemProperties(): Observable<SystemPropertiesRepresentation> {
return from(this.systemPropertiesApi.getProperties())
.pipe(
catchError((err) => throwError(err.error))
);
}
}

View File

@ -21,7 +21,7 @@ import { Observable, BehaviorSubject } from 'rxjs';
import { AppConfigService, AppConfigValues } from '../app-config/app-config.service';
import { LanguageItem } from '../language-menu/language.interface';
import { StorageService } from './storage.service';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { distinctUntilChanged, map, filter } from 'rxjs/operators';
import { AlfrescoApiService } from './alfresco-api.service';
export enum UserPreferenceValues {
@ -51,7 +51,7 @@ export class UserPreferencesService {
private appConfig: AppConfigService,
private storage: StorageService,
private alfrescoApiService: AlfrescoApiService) {
this.alfrescoApiService.alfrescoApiInitialized.subscribe(this.initUserPreferenceStatus.bind(this));
this.alfrescoApiService.alfrescoApiInitialized.pipe(filter(status => status)).subscribe(this.initUserPreferenceStatus.bind(this));
this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
this.onChange = this.onChangeSubject.asObservable();
}

56
package-lock.json generated
View File

@ -5,11 +5,11 @@
"requires": true,
"dependencies": {
"@alfresco/adf-cli": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.7.0.tgz",
"integrity": "sha512-cp0S8TkWWeIRCfapiQq5AfVXyhljtK7gJ4K+MRsU8spaWYRfGUXgA/RMeHdddy+ksBt98dG9EvtYGXiIhq/syQ==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-O3QiEXBBY3Ar+XvPVdVfrw8NYxNr1juXG9qU80iRFAvmE4u5OymEpBJS7aYT100MsUg2ntpxNtnRzvpNPP7Ofg==",
"requires": {
"@alfresco/adf-testing": "3.7.0",
"@alfresco/adf-testing": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@angular-devkit/core": "^7.2.15",
"commander": "^4.0.0",
"ejs": "^2.6.1",
@ -21,65 +21,71 @@
}
},
"@alfresco/adf-content-services": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.7.0.tgz",
"integrity": "sha512-AMFck7pdrYGL0I4AhbFV4RBNE5I273Q9/99m4tNcpctAQJVVo/ZeZ1dpgibkrz2LL9Bd+WwNsqWMUTf0e0ZIMQ==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-DzK7cgeujufLMOthx7wzbDvTvFs5rRvF56I2AxiFUj48mao9EIl+IxHudwzBS814Tln1sV1vY7C+tq/VqX1pzg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-core": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.7.0.tgz",
"integrity": "sha512-A5z85OkZSG6CdH4KUbhDFchZp0mQderSjOPhjGw6EI409DpbZy4UcNf0dsocAMTIdDXh0s4ubmcWN+5NqZqQpw==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-GQMoGBsm5PBhl3iShR3+Q6iiIQ15DLRtL2uF8qi6jajH0MzUycxGri/bN8oEscz6IJ2WBYJM7AMI5qF452Wikg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-extensions": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.7.0.tgz",
"integrity": "sha512-tYM6ddTKceTRemKW2nHiiHJJFH1a+U7l4LTdqNoRyTM66J4s5HDm/G+zsQBy1k7ybPTGC56d1mWA0jqq+gnEEQ==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-PyoGm0psaANn7TluZBQ/8irUAoz8SWxGonR1PoJM06YpI9IKWActqZwLSE2GsyTS2ZbcGD+a/45z9DscHTo/6w==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-insights": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.7.0.tgz",
"integrity": "sha512-NvvQpM0u0w2qSR/2K7Vb7uRSEmuQcJyxcX5f0/qYsZNpbAqsiIW7QzgrTZ9tSSvxVZzBMd7OMwQQn89KV+s95g==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-qOrBF9GjV54pi/XZ3jsl0zF0G0zREdwKvNyJA+aXolrn8+KdCEUgifklcQ57kpngjWFw8fPuHsN4jNRAFv94Vg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-process-services": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.7.0.tgz",
"integrity": "sha512-a9mYsaf19qOdUYjAos5ym7T6roZJGvhYd3ghLs7CkJ7B12dEh+OtuBERAg0UbS+WxLx+tyUIxfBKu3e3SnmIPA==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-+qMbQkl7ApR5etxx915DWYN0DtvkRzL5M8FZDZbMgn86aWA7Nqj3IGlKdcmtIqXKao7lPvQgkEPBUwXFQ0gIug==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-process-services-cloud": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.7.0.tgz",
"integrity": "sha512-4XGv9vLk5mBfMDoqV9+Qi2SciHzZfuWiG5ZYbDmqk6LSsjdsOF73bkAXeXVd5xhWigibIAuBvlaPL9Yb+lpWBQ==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-ZYF/sgsLWI1z+kJ2UkRPNTm+ccOqCxu4+8mEmyi80iF8ZJ1BHxW3wKsq3jLtVllgipjFgQQNVMhq08rjg6aczw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-testing": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.7.0.tgz",
"integrity": "sha512-RvsWg3xHBtBZZ2x7zYhomsZ3gB93D5bmwphg/HeR90v53+ruu2hbgDk1+mv5qINhcbOF21cAcR4GtqVn0UnzVg==",
"version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz",
"integrity": "sha512-v3nJ0ONK/f4WdZKdXXYUVLZnbQB7ku9eC7pGd9SjegPZFU64ztW0+vYM8f8yeX8XD768fPx+v59+xVaPZpwjOw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/js-api": {
<<<<<<< HEAD
"version": "3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd.tgz",
"integrity": "sha512-oHW5wPMjLOgKILpDUH41eduKgpiXbydaFQDKcb7Cz7a2RdtDArExqMu2PRMwg4Dkm2Kx6PDa441aYi+8C7qo/w==",
=======
"version": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78.tgz",
"integrity": "sha512-ip90kBBTqRFUSkPwVev1A0Q7g7oCrxuOuG7KObcgvt77KdH3dLYbYMn0UmVS0i2BuwxITRrIqZ+bxynF3Tt4Rw==",
>>>>>>> Use latest api
"requires": {
"event-emitter": "^0.3.5",
"minimatch": "3.0.4",

View File

@ -78,15 +78,15 @@
"process services-cloud"
],
"dependencies": {
"@alfresco/adf-cli": "3.7.0",
"@alfresco/adf-content-services": "3.7.0",
"@alfresco/adf-core": "3.7.0",
"@alfresco/adf-extensions": "3.7.0",
"@alfresco/adf-insights": "3.7.0",
"@alfresco/adf-process-services": "3.7.0",
"@alfresco/adf-process-services-cloud": "3.7.0",
"@alfresco/adf-testing": "3.7.0",
"@alfresco/js-api": "3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd",
"@alfresco/adf-cli": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-content-services": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-core": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-extensions": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-insights": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-process-services": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-process-services-cloud": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/adf-testing": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193",
"@alfresco/js-api": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78",
"@angular/animations": "^7.2.15",
"@angular/cdk": "7.3.7",
"@angular/common": "^7.2.15",