mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-18 16:25:16 +01:00
Merge branch 'master' into fix/pluggable_scanner_improvments
This commit is contained in:
commit
ae3ff228e1
@ -253,7 +253,7 @@ export class CreateEditRuleComponent implements OnInit, OnDestroy {
|
||||
dest_registry: rule.dest_registry,
|
||||
trigger: rule.trigger,
|
||||
deletion: rule.deletion,
|
||||
enabled: true,
|
||||
enabled: rule.enabled,
|
||||
override: rule.override
|
||||
});
|
||||
let filtersArray = this.getFilterArray(rule);
|
||||
|
@ -24,7 +24,7 @@
|
||||
<div *ngIf="withReplicationJob" class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="row flex-items-xs-between jobsRow">
|
||||
<h5 class="flex-items-xs-bottom option-left-down">{{'REPLICATION.REPLICATION_EXECUTIONS' | translate}}</h5>
|
||||
<div class="row flex-items-xs-between flex-items-xs-bottom">
|
||||
<div class="row flex-items-xs-between flex-items-xs-bottom fiter-task">
|
||||
<div class="execution-select">
|
||||
<div class="select filter-tag" [hidden]="!isOpenFilterTag">
|
||||
<select (change)="doFilterJob($event)">
|
||||
|
@ -49,7 +49,10 @@
|
||||
.row-right {
|
||||
margin-left: 564px;
|
||||
}
|
||||
|
||||
.fiter-task {
|
||||
margin-left: .4rem;
|
||||
margin-top: .05rem;
|
||||
}
|
||||
.replication-row {
|
||||
position: relative;
|
||||
}
|
||||
|
@ -158,6 +158,12 @@ describe('RepositoryComponent (inline template)', () => {
|
||||
let mockHasRetagImagePermission: boolean = true;
|
||||
let mockHasDeleteImagePermission: boolean = true;
|
||||
let mockHasScanImagePermission: boolean = true;
|
||||
const permissions = [
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY.KEY, action: USERSTATICPERMISSION.REPOSITORY.VALUE.PULL},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE},
|
||||
];
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
@ -213,16 +219,10 @@ describe('RepositoryComponent (inline template)', () => {
|
||||
|
||||
spyLabels = spyOn(labelService, 'getGLabels').and.returnValues(of(mockLabels).pipe(delay(0)));
|
||||
spyLabels1 = spyOn(labelService, 'getPLabels').and.returnValues(of(mockLabels1).pipe(delay(0)));
|
||||
spyOn(userPermissionService, "getPermission")
|
||||
.withArgs(compRepo.projectId, USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY, USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE )
|
||||
.and.returnValue(of(mockHasAddLabelImagePermission))
|
||||
.withArgs(compRepo.projectId, USERSTATICPERMISSION.REPOSITORY.KEY, USERSTATICPERMISSION.REPOSITORY.VALUE.PULL )
|
||||
.and.returnValue(of(mockHasRetagImagePermission))
|
||||
.withArgs(compRepo.projectId, USERSTATICPERMISSION.REPOSITORY_TAG.KEY, USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE )
|
||||
.and.returnValue(of(mockHasDeleteImagePermission))
|
||||
.withArgs(compRepo.projectId, USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY
|
||||
, USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE)
|
||||
.and.returnValue(of(mockHasScanImagePermission));
|
||||
spyOn(userPermissionService, "hasProjectPermissions")
|
||||
.withArgs(compRepo.projectId, permissions )
|
||||
.and.returnValue(of([mockHasAddLabelImagePermission, mockHasRetagImagePermission,
|
||||
mockHasDeleteImagePermission, mockHasScanImagePermission]));
|
||||
fixture.detectChanges();
|
||||
});
|
||||
let originalTimeout;
|
||||
|
@ -112,6 +112,15 @@ describe("TagComponent (inline template)", () => {
|
||||
let mockHasRetagImagePermission: boolean = true;
|
||||
let mockHasDeleteImagePermission: boolean = true;
|
||||
let mockHasScanImagePermission: boolean = true;
|
||||
const mockErrorHandler = {
|
||||
error: () => {}
|
||||
};
|
||||
const permissions = [
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY.KEY, action: USERSTATICPERMISSION.REPOSITORY.VALUE.PULL},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE},
|
||||
];
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
@ -141,6 +150,7 @@ describe("TagComponent (inline template)", () => {
|
||||
{ provide: ScanningResultService, useClass: ScanningResultDefaultService },
|
||||
{ provide: LabelService, useClass: LabelDefaultService },
|
||||
{ provide: UserPermissionService, useClass: UserPermissionDefaultService },
|
||||
{ provide: mockErrorHandler, useValue: ErrorHandler },
|
||||
{ provide: OperationService },
|
||||
]
|
||||
}).compileComponents();
|
||||
@ -169,15 +179,10 @@ describe("TagComponent (inline template)", () => {
|
||||
let http: HttpClient;
|
||||
http = fixture.debugElement.injector.get(HttpClient);
|
||||
spyScanner = spyOn(http, "get").and.returnValue(of(scannerMock));
|
||||
spyOn(userPermissionService, "getPermission")
|
||||
.withArgs(comp.projectId, USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY, USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE )
|
||||
.and.returnValue(of(mockHasAddLabelImagePermission))
|
||||
.withArgs(comp.projectId, USERSTATICPERMISSION.REPOSITORY.KEY, USERSTATICPERMISSION.REPOSITORY.VALUE.PULL )
|
||||
.and.returnValue(of(mockHasRetagImagePermission))
|
||||
.withArgs(comp.projectId, USERSTATICPERMISSION.REPOSITORY_TAG.KEY, USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE )
|
||||
.and.returnValue(of(mockHasDeleteImagePermission))
|
||||
.withArgs(comp.projectId, USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY, USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE)
|
||||
.and.returnValue(of(mockHasScanImagePermission));
|
||||
spyOn(userPermissionService, "hasProjectPermissions")
|
||||
.withArgs(comp.projectId, permissions )
|
||||
.and.returnValue(of([mockHasAddLabelImagePermission, mockHasRetagImagePermission,
|
||||
mockHasDeleteImagePermission, mockHasScanImagePermission]));
|
||||
|
||||
labelService = fixture.debugElement.injector.get(LabelService);
|
||||
|
||||
|
@ -220,9 +220,6 @@ export class TagComponent implements OnInit, AfterViewInit {
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
if (!this.withAdmiral) {
|
||||
this.getAllLabels();
|
||||
}
|
||||
}
|
||||
|
||||
public get filterLabelPieceWidth() {
|
||||
@ -726,21 +723,24 @@ export class TagComponent implements OnInit, AfterViewInit {
|
||||
return st !== VULNERABILITY_SCAN_STATUS.RUNNING;
|
||||
}
|
||||
getImagePermissionRule(projectId: number): void {
|
||||
let hasAddLabelImagePermission = this.userPermissionService.getPermission(projectId, USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY,
|
||||
USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE);
|
||||
let hasRetagImagePermission = this.userPermissionService.getPermission(projectId,
|
||||
USERSTATICPERMISSION.REPOSITORY.KEY, USERSTATICPERMISSION.REPOSITORY.VALUE.PULL);
|
||||
let hasDeleteImagePermission = this.userPermissionService.getPermission(projectId,
|
||||
USERSTATICPERMISSION.REPOSITORY_TAG.KEY, USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE);
|
||||
let hasScanImagePermission = this.userPermissionService.getPermission(projectId,
|
||||
USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY, USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE);
|
||||
forkJoin(hasAddLabelImagePermission, hasRetagImagePermission, hasDeleteImagePermission, hasScanImagePermission)
|
||||
.subscribe(permissions => {
|
||||
this.hasAddLabelImagePermission = permissions[0] as boolean;
|
||||
this.hasRetagImagePermission = permissions[1] as boolean;
|
||||
this.hasDeleteImagePermission = permissions[2] as boolean;
|
||||
this.hasScanImagePermission = permissions[3] as boolean;
|
||||
}, error => this.errorHandler.error(error));
|
||||
const permissions = [
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_LABEL.VALUE.CREATE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY.KEY, action: USERSTATICPERMISSION.REPOSITORY.VALUE.PULL},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG.VALUE.DELETE},
|
||||
{resource: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.KEY, action: USERSTATICPERMISSION.REPOSITORY_TAG_SCAN_JOB.VALUE.CREATE},
|
||||
];
|
||||
this.userPermissionService.hasProjectPermissions(this.projectId, permissions).subscribe((results: Array<boolean>) => {
|
||||
this.hasAddLabelImagePermission = results[0];
|
||||
this.hasRetagImagePermission = results[1];
|
||||
this.hasDeleteImagePermission = results[2];
|
||||
this.hasScanImagePermission = results[3];
|
||||
// only has label permission
|
||||
if (this.hasAddLabelImagePermission) {
|
||||
if (!this.withAdmiral) {
|
||||
this.getAllLabels();
|
||||
}
|
||||
}
|
||||
}, error => this.errorHandler.error(error));
|
||||
}
|
||||
// Trigger scan
|
||||
scanNow(t: Tag[]): void {
|
||||
|
@ -54,6 +54,6 @@ Generate And Return Secret
|
||||
Retry Element Click ${more_btn}
|
||||
Retry Element Click ${generate_secret_btn}
|
||||
Retry Double Keywords When Error Retry Element Click ${confirm_btn} Retry Wait Until Page Not Contains Element ${confirm_btn}
|
||||
Retry Wait Until Page Contains generate CLI secret success
|
||||
Retry Wait Until Page Contains Cli secret setting is successful
|
||||
${secret}= Get Secrete By API ${url}
|
||||
[Return] ${secret}
|
Loading…
Reference in New Issue
Block a user