mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-05 22:41:24 +01:00
Disable add group button for LDAP project admin (#15448)
Signed-off-by: AllForNothing <sshijun@vmware.com>
This commit is contained in:
parent
cdb13f5191
commit
2e8c3463ec
@ -16,7 +16,7 @@
|
||||
<button class="btn btn-secondary" (click)="openAddMemberModal()" [disabled]="!hasCreateMemberPermission">
|
||||
<span><clr-icon shape="plus" size="16"></clr-icon> {{'MEMBER.USER' | translate }}</span>
|
||||
</button>
|
||||
<button class="btn btn-secondary" (click)="openAddGroupModal()" [disabled]="!hasCreateMemberPermission || !(isLdapMode || isHttpAuthMode || isOidcMode)">
|
||||
<button class="btn btn-secondary" (click)="openAddGroupModal()" [disabled]="!hasCreateMemberPermission || !((isLdapMode && currentUser?.has_admin_role) || isHttpAuthMode || isOidcMode)">
|
||||
<span><clr-icon shape="plus" size="16"></clr-icon> {{'MEMBER.LDAP_GROUP' | translate}}</span>
|
||||
</button>
|
||||
<clr-dropdown [clrCloseMenuOnItemClick]="false" class="btn btn-link" clrDropdownTrigger>
|
||||
|
@ -4,7 +4,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { MessageHandlerService } from "../../../shared/services/message-handler.service";
|
||||
import { SessionService } from "../../../shared/services/session.service";
|
||||
import { MemberService } from "./member.service";
|
||||
import { MemberService } from "../../../../../ng-swagger-gen/services/member.service";
|
||||
import { AppConfigService } from "../../../services/app-config.service";
|
||||
import { of } from 'rxjs';
|
||||
import { OperationService } from "../../../shared/components/operation/operation.service";
|
||||
@ -14,20 +14,42 @@ import { ConfirmationDialogService } from "../../global-confirmation-dialog/conf
|
||||
import { SharedTestingModule } from "../../../shared/shared.module";
|
||||
import { HttpHeaders, HttpResponse } from "@angular/common/http";
|
||||
import { Registry } from "../../../../../ng-swagger-gen/models/registry";
|
||||
import { ProjectMemberEntity } from "../../../../../ng-swagger-gen/models/project-member-entity";
|
||||
import { delay } from "rxjs/operators";
|
||||
|
||||
describe('MemberComponent', () => {
|
||||
let component: MemberComponent;
|
||||
let fixture: ComponentFixture<MemberComponent>;
|
||||
const mockedMembers: ProjectMemberEntity[] = [
|
||||
{
|
||||
id: 1,
|
||||
project_id: 1,
|
||||
entity_name: 'test1',
|
||||
role_name: 'projectAdmin',
|
||||
role_id: 1,
|
||||
entity_id: 1,
|
||||
entity_type: 'u'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
project_id: 1,
|
||||
entity_name: 'test2',
|
||||
role_name: 'projectAdmin',
|
||||
role_id: 1,
|
||||
entity_id: 2,
|
||||
entity_type: 'u'
|
||||
}
|
||||
];
|
||||
const mockMemberService = {
|
||||
getUsersNameList: () => {
|
||||
return of([]);
|
||||
},
|
||||
listProjectMembersResponse: () => {
|
||||
const response: HttpResponse<Array<Registry>> = new HttpResponse<Array<Registry>>({
|
||||
headers: new HttpHeaders({'x-total-count': '0'}),
|
||||
body: []
|
||||
headers: new HttpHeaders({'x-total-count': '2'}),
|
||||
body: mockedMembers
|
||||
});
|
||||
return of(response);
|
||||
return of(response).pipe(delay(0));
|
||||
},
|
||||
updateProjectMember: () => {
|
||||
return of(null);
|
||||
@ -118,11 +140,16 @@ describe('MemberComponent', () => {
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(MemberComponent);
|
||||
component = fixture.componentInstance;
|
||||
component.loading = true;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
it('should render member list', async () => {
|
||||
fixture.autoDetectChanges(true);
|
||||
await fixture.whenStable();
|
||||
const rows = fixture.nativeElement.querySelectorAll('clr-dg-row');
|
||||
expect(rows.length).toEqual(2);
|
||||
});
|
||||
});
|
||||
|
@ -55,7 +55,7 @@ export class MemberComponent implements OnInit, OnDestroy {
|
||||
roleNum: number;
|
||||
isDelete = false;
|
||||
isChangeRole = false;
|
||||
loading = false;
|
||||
loading = true;
|
||||
|
||||
isChangingRole = false;
|
||||
batchChangeRoleInfos = {};
|
||||
|
Loading…
Reference in New Issue
Block a user