From 534c013754df473cfd22a553d11da307372a2ed4 Mon Sep 17 00:00:00 2001 From: Dharan <14145706+dhrn@users.noreply.github.com> Date: Mon, 26 Apr 2021 22:14:11 +0530 Subject: [PATCH] [ACA-4361] should be able to change permission if search service is down (#6948) * should be able to change permission if search service is down * Update node-permission.service.ts * Update node-permission.service.spec.ts * Update node-permission.service.spec.ts --- .../services/node-permission.service.spec.ts | 13 ++++++++++++- .../services/node-permission.service.ts | 5 +++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts b/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts index bed5d0fa12..0555a991d9 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission.service.spec.ts @@ -19,7 +19,7 @@ import { async, TestBed } from '@angular/core/testing'; import { NodePermissionService } from './node-permission.service'; import { SearchService, NodesApiService, setupTestBed } from '@alfresco/adf-core'; import { Node, PermissionElement } from '@alfresco/js-api'; -import { of } from 'rxjs'; +import { of, throwError } from 'rxjs'; import { fakeEmptyResponse, fakeNodeWithOnlyLocally, fakeSiteRoles, fakeSiteNodeResponse, fakeNodeToRemovePermission, fakeNodeWithoutPermissions } from '../../mock/permission-list.component.mock'; import { fakeAuthorityResults } from '../../mock/add-permission.component.mock'; @@ -232,4 +232,15 @@ describe('NodePermissionService', () => { expect(roles[0].role).toBe('SiteCollaborator'); }); })); + + it('should provide node and default role if search API failed', async(() => { + const fakeNodeCopy = JSON.parse(JSON.stringify(fakeNodeWithOnlyLocally)); + spyOn(nodeService, 'getNode').and.returnValue(of(fakeNodeCopy)); + spyOn(searchApiService, 'searchByQueryBody').and.returnValue(throwError('search service down')); + service.getNodeWithRoles('node-id').subscribe(({ node, roles }) => { + expect(node).toBe(fakeNodeCopy); + expect(roles.length).toBe(5); + expect(roles[0].role).toBe('Contributor'); + }); + })); }); diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts index 12674f716a..35944c3f24 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission.service.ts @@ -19,7 +19,7 @@ import { AlfrescoApiService, NodesApiService, SearchService, TranslationService import { Group, GroupMemberEntry, GroupMemberPaging, Node, PathElement, PermissionElement, Person, QueryBody } from '@alfresco/js-api'; import { Injectable } from '@angular/core'; import { forkJoin, from, Observable, of, throwError } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; +import { catchError, map, switchMap } from 'rxjs/operators'; import { PermissionDisplayModel } from '../models/permission.model'; import { RoleModel } from '../models/role.model'; @@ -278,7 +278,8 @@ export class NodePermissionService { node: of(node), roles: this.getNodeRoles(node) .pipe( - map(_roles => _roles.map(role => ({ role, label: role })) + catchError(() => of(node.permissions?.settable)), + map(_roles => _roles.map(role => ({ role, label: role })) ) ) });