diff --git a/angular.json b/angular.json index 1591263171..b453c76bbd 100644 --- a/angular.json +++ b/angular.json @@ -108,7 +108,6 @@ } ], "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -306,7 +305,6 @@ "configDir": "lib/core/.storybook", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -332,7 +330,6 @@ "outputDir": "dist/storybook/core", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -454,7 +451,6 @@ "configDir": "lib/content-services/.storybook", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -480,7 +476,6 @@ "outputDir": "dist/storybook/content-services", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -648,7 +643,6 @@ "configDir": "lib/process-services-cloud/.storybook", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -674,7 +668,6 @@ "outputDir": "dist/storybook/process-services-cloud", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -1117,7 +1110,6 @@ ] }, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", @@ -1138,7 +1130,6 @@ "outputDir": "dist/storybook/stories", "compodoc": false, "styles": [ - "demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/styles.scss", "demo-shell/src/custom-style-dev.scss", "node_modules/cropperjs/dist/cropper.min.css", diff --git a/demo-shell/e2e/app.e2e-spec.e2e.ts b/demo-shell/e2e/app.e2e-spec.e2e.ts deleted file mode 100644 index e411de897b..0000000000 --- a/demo-shell/e2e/app.e2e-spec.e2e.ts +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { MyAppPage } from './app.po'; - -describe('MyApp App', () => { - let page: MyAppPage; - - beforeEach(() => { - page = new MyAppPage(); - }); - - it('should display toolbar', () => { - page.navigateTo(); - expect(page.getToolbar()).toBeDefined(); - }); -}); diff --git a/demo-shell/e2e/app.po.ts b/demo-shell/e2e/app.po.ts deleted file mode 100644 index c6b0a2e213..0000000000 --- a/demo-shell/e2e/app.po.ts +++ /dev/null @@ -1,28 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { browser, element, by } from 'protractor'; - -export class MyAppPage { - navigateTo() { - return browser.get('/'); - } - - getToolbar() { - return element(by.tagName('adf-toolbar')); - } -} diff --git a/demo-shell/e2e/tsconfig.e2e.json b/demo-shell/e2e/tsconfig.e2e.json deleted file mode 100644 index 8ad53b9929..0000000000 --- a/demo-shell/e2e/tsconfig.e2e.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es5", - "types": ["jasmine", "jasminewd2", "node"] - } -} diff --git a/demo-shell/src/app/app.component.scss b/demo-shell/src/app/app.component.scss index 126f79efe9..76701d62c9 100644 --- a/demo-shell/src/app/app.component.scss +++ b/demo-shell/src/app/app.component.scss @@ -11,7 +11,3 @@ router-outlet[name='overlay'] + * { height: 100%; width: 100%; } - -[dir='rtl'] .mat-icon { - transform: scale(-1, 1); -} diff --git a/demo-shell/src/app/app.module.ts b/demo-shell/src/app/app.module.ts index cf1ee4faa3..d911d172dd 100644 --- a/demo-shell/src/app/app.module.ts +++ b/demo-shell/src/app/app.module.ts @@ -22,20 +22,12 @@ import { NgChartsModule } from 'ng2-charts'; import { HttpClientModule } from '@angular/common/http'; import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations'; import { TranslateModule } from '@ngx-translate/core'; -import { - AppConfigService, - DebugAppConfigService, - CoreModule, - CoreAutomationService, - AuthModule, - provideTranslations -} from '@alfresco/adf-core'; +import { AppConfigService, DebugAppConfigService, CoreModule, CoreAutomationService, AuthModule, provideTranslations } from '@alfresco/adf-core'; import { ExtensionsModule } from '@alfresco/adf-extensions'; import { AppComponent } from './app.component'; import { MaterialModule } from './material.module'; import { LogoutComponent } from './components/logout/logout.component'; import { AppLayoutComponent } from './components/app-layout/app-layout.component'; -import { HomeComponent } from './components/home/home.component'; import { SearchBarComponent } from './components/search/search-bar.component'; import { SearchResultComponent } from './components/search/search-result.component'; import { FormComponent } from './components/form/form.component'; @@ -46,7 +38,6 @@ import { FormNodeViewerComponent } from './components/process-service/form-node- import { AppsViewComponent } from './components/process-service/apps-view.component'; import { FilesComponent } from './components/files/files.component'; import { VersionManagerDialogAdapterComponent } from './components/files/version-manager-dialog-adapter.component'; -import { MetadataDialogAdapterComponent } from './components/files/metadata-dialog-adapter.component'; import { appRoutes } from './app.routes'; import { TaskAttachmentsComponent } from './components/process-service/task-attachments.component'; import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component'; @@ -103,7 +94,6 @@ import { UserInfoComponent } from './components/app-layout/user-info/user-info.c LogoutComponent, AppLayoutComponent, UserInfoComponent, - HomeComponent, SearchBarComponent, SearchResultComponent, ProcessServiceComponent, @@ -114,7 +104,6 @@ import { UserInfoComponent } from './components/app-layout/user-info/user-info.c FilesComponent, FormComponent, VersionManagerDialogAdapterComponent, - MetadataDialogAdapterComponent, TaskAttachmentsComponent, ProcessAttachmentsComponent, DemoPermissionComponent, diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.html b/demo-shell/src/app/components/app-layout/app-layout.component.html index 9f2303604a..30b7d1de97 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.html +++ b/demo-shell/src/app/components/app-layout/app-layout.component.html @@ -23,13 +23,13 @@ - + {{link.icon}} - {{link.title | translate }} + {{ link.title | translate }} arrow_right @@ -41,14 +41,14 @@ routerLinkActive="app-sidenav-link--active" [routerLinkActiveOptions]="{ exact: true }" [attr.data-automation-id]="link.title | translate" class="app-sidenav-link"> {{link.icon}} - {{link.title | translate }} + {{link.title | translate }} exit_to_app - Logout + Logout diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.scss b/demo-shell/src/app/components/app-layout/app-layout.component.scss index 999b399ca6..6bccce0418 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.scss +++ b/demo-shell/src/app/components/app-layout/app-layout.component.scss @@ -1,7 +1,3 @@ -adf-file-uploading-dialog { - z-index: 1100; -} - .app-layout { display: flex; flex: 1; @@ -12,25 +8,7 @@ adf-file-uploading-dialog { color: var(--theme-primary-color); } - .app-sidenav-link { - .mat-list-text { - font-size: 14px; - white-space: nowrap; - min-width: 120px; - padding: 0 10px; - } - } - &-menu-spacer { flex: 1 1 auto; } } - -mat-sidenav-content > div { - display: flex; - height: 100%; - - > div { - flex: auto; - } -} diff --git a/demo-shell/src/app/components/file-view/file-view.component.html b/demo-shell/src/app/components/file-view/file-view.component.html index d5314941d7..ebb5ce4369 100644 --- a/demo-shell/src/app/components/file-view/file-view.component.html +++ b/demo-shell/src/app/components/file-view/file-view.component.html @@ -1,71 +1,24 @@ - - - -

My custom toolbar

-
- - - - - - - - - - - - - - - - - - - -
-
+ + + + @@ -168,231 +121,3 @@ - - - - - - -

- - Url File - -

- -

- - - - - -

- -

- - Show Toolbar - -

- -

- - Allow GoBack - -

- -

- - Open With - -

- -

- - More Actions - -

- -

- - More Actions Menu - -

- -

- - Allow Download - -

- -

- - Allow Print - -

- -

- - Allow Right Sidebar - -

- -

- - Allow Left Sidebar - -

- -

- - Custom Toolbar - -

- -

- - Show tab with icon - -

- -

- - Show tab with icon and label - -

- -

- -

- -

- -

- -
- - - - - - -
-
- - - - - -

My custom toolbar

-
- - - - - - - - - - - - - - - - - - - - - -
-
diff --git a/demo-shell/src/app/components/file-view/file-view.component.scss b/demo-shell/src/app/components/file-view/file-view.component.scss deleted file mode 100644 index c2b9bd70c0..0000000000 --- a/demo-shell/src/app/components/file-view/file-view.component.scss +++ /dev/null @@ -1,12 +0,0 @@ -.app-viewer__sidebar { - width: 380px !important; -} - -/* stylelint-disable */ -.monaco-scrollable-element { - width: 600px; -} - -app-preview-extension { - width: 600px; -} diff --git a/demo-shell/src/app/components/file-view/file-view.component.ts b/demo-shell/src/app/components/file-view/file-view.component.ts index 4da84b4ca7..fbba5a7215 100644 --- a/demo-shell/src/app/components/file-view/file-view.component.ts +++ b/demo-shell/src/app/components/file-view/file-view.component.ts @@ -17,26 +17,16 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router'; -import { - NotificationService -} from '@alfresco/adf-core'; -import { - ContentService, - AllowableOperationsEnum, - PermissionsEnum, - NodesApiService, - FileUploadErrorEvent -} from '@alfresco/adf-content-services'; +import { NotificationService } from '@alfresco/adf-core'; +import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService, FileUploadErrorEvent } from '@alfresco/adf-content-services'; import { PreviewService } from '../../services/preview.service'; @Component({ selector: 'app-file-view', templateUrl: './file-view.component.html', - styleUrls: ['./file-view.component.scss'], encapsulation: ViewEncapsulation.None }) export class FileViewComponent implements OnInit { - nodeId: string = null; versionId: string = null; displayEmptyMetadata = false; @@ -46,36 +36,21 @@ export class FileViewComponent implements OnInit { isPreset = false; customPreset: string = null; displayDefaultProperties = true; - showToolbar = true; - urlFile = null; - allowGoBack = true; - openWith = false; - allowDownload = true; - allowPrint = true; - allowRightSidebar = true; - allowLeftSidebar = true; - moreActions = true; - moreActionsMenu = false; - fileUrlSwitch = false; - showLeftSidebar = null; - showRightSidebar = false; - customToolbar = false; isCommentEnabled = false; - showTabWithIcon = false; - showTabWithIconAndLabel = false; desiredAspect: string = null; showAspect: string = null; name: string; fileName: string; blobFile: Blob; - constructor(private router: Router, - private route: ActivatedRoute, - private nodeApiService: NodesApiService, - private contentServices: ContentService, - private preview: PreviewService, - private notificationService: NotificationService) { - } + constructor( + private router: Router, + private route: ActivatedRoute, + private nodeApiService: NodesApiService, + private contentServices: ContentService, + private preview: PreviewService, + private notificationService: NotificationService + ) {} ngOnInit() { this.route.params.subscribe((params) => { @@ -85,7 +60,8 @@ export class FileViewComponent implements OnInit { this.nodeApiService.getNode(id).subscribe( (node) => { if (node?.isFile) { - this.isCommentEnabled = this.contentServices.hasPermissions(node, PermissionsEnum.NOT_CONSUMER) || + this.isCommentEnabled = + this.contentServices.hasPermissions(node, PermissionsEnum.NOT_CONSUMER) || this.contentServices.hasAllowableOperations(node, AllowableOperationsEnum.UPDATE); this.nodeId = id; return; @@ -131,66 +107,6 @@ export class FileViewComponent implements OnInit { this.displayDefaultProperties = !this.displayDefaultProperties; } - toggleShowToolbar() { - this.showToolbar = !this.showToolbar; - } - - toggleAllowGoBack() { - this.allowGoBack = !this.allowGoBack; - } - - toggleOpenWith() { - this.openWith = !this.openWith; - } - - toggleAllowDownload() { - this.allowDownload = !this.allowDownload; - } - - toggleAllowPrint() { - this.allowPrint = !this.allowPrint; - } - - toggleOpenMoreActions() { - this.moreActions = !this.moreActions; - } - - toggleMoreActionsMenu() { - this.moreActionsMenu = !this.moreActionsMenu; - } - - toggleShowRightSidebar() { - this.showRightSidebar = !this.showRightSidebar; - } - - hideLeftSidebar() { - this.showLeftSidebar = false; - } - - toggleAllowRightSidebar() { - this.allowRightSidebar = !this.allowRightSidebar; - } - - toggleAllowLeftSidebar() { - this.allowLeftSidebar = !this.allowLeftSidebar; - } - - toggleShowTabWithIcon() { - this.showTabWithIcon = !this.showTabWithIcon; - } - - toggleShowTabWithIconAndLabel() { - this.showTabWithIconAndLabel = !this.showTabWithIconAndLabel; - } - - toggleFileUrl() { - this.fileUrlSwitch = !this.fileUrlSwitch; - - if (!this.fileUrlSwitch) { - this.urlFile = null; - } - } - togglePreset() { this.isPreset = !this.isPreset; if (!this.isPreset) { @@ -198,10 +114,6 @@ export class FileViewComponent implements OnInit { } } - toggleToolbar() { - this.customToolbar = !this.customToolbar; - } - applyCustomPreset() { this.isPreset = false; setTimeout(() => { diff --git a/demo-shell/src/app/components/files/files.component.html b/demo-shell/src/app/components/files/files.component.html index 273b030f69..0c29a25328 100644 --- a/demo-shell/src/app/components/files/files.component.html +++ b/demo-shell/src/app/components/files/files.component.html @@ -1,9 +1,4 @@
-
- - -
-
@@ -14,7 +9,6 @@ [versioning]="versioning" [adf-check-allowable-operation]="'create'" [adf-nodes]="disableDragArea ? getCurrentDocumentListNode() : []" - (beginUpload)="onBeginUpload($event)" (updateFileVersion)="onUploadNewVersion($event)">
-
- - {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }} - @@ -301,7 +251,7 @@ @@ -338,18 +288,6 @@
-
- - Show Name Column - -
- -
- - Hyperlink navigation - -
-
Multiselect (with checkboxes) @@ -380,42 +318,18 @@
-
- - Enable Thumbnails - -
-
Enable versioning
-
- - Enable Infinite Scrolling - -
- -
- - Show comments on versions - -
-
Enable version download
-
- - Display warning for multiple uploads - -
-
Enable medium time format for document list @@ -461,8 +375,7 @@ [versioning]="versioning" [adf-check-allowable-operation]="'create'" [adf-nodes]="enableUpload ? getCurrentDocumentListNode() : []" - (permissionEvent)="handlePermissionError($event)" - (beginUpload)="onBeginUpload($event)"> + (permissionEvent)="handlePermissionError($event)">
diff --git a/demo-shell/src/app/components/files/files.component.scss b/demo-shell/src/app/components/files/files.component.scss index 3d85ae9c4d..90080aa61b 100644 --- a/demo-shell/src/app/components/files/files.component.scss +++ b/demo-shell/src/app/components/files/files.component.scss @@ -2,16 +2,6 @@ margin: 10px !important; } -@media screen and (max-width: 599px) { - .app-container { - margin: 0; - } - - .app-show-versions-button.mat-icon-button { - display: none; - } -} - .app-error-message { text-align: left; } @@ -37,18 +27,6 @@ .app-document-action-buttons { flex: 0 0 auto; } - - @media screen and (max-width: 600px) { - adf-breadcrumb, .app-document-action-buttons { - display: none; - } - } - - @media screen and (min-width: 600px) { - adf-dropdown-breadcrumb, .app-toolbar-divider-before-more-menu, .app-toolbar-more-menu-button { - display: none; - } - } } &:not(.app-document-list-container-in-upload-drag-area) { @@ -64,13 +42,6 @@ position: absolute; } -.app-site-container-style { - margin-top: 10px; - margin-bottom: 10px; - width: 100%; - min-width: 200px; -} - .app-content-service-settings { padding: 16px; } diff --git a/demo-shell/src/app/components/files/files.component.ts b/demo-shell/src/app/components/files/files.component.ts index ae1a2f2cc8..8b3ad4810d 100644 --- a/demo-shell/src/app/components/files/files.component.ts +++ b/demo-shell/src/app/components/files/files.component.ts @@ -28,29 +28,23 @@ import { Output, ViewEncapsulation } from '@angular/core'; -import { Location } from '@angular/common'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Params, Router } from '@angular/router'; -import { NodeEntry, NodePaging, Pagination, Node, SiteEntry, SearchEntry } from '@alfresco/js-api'; +import { NodeEntry, NodePaging, Pagination, Node, SearchEntry } from '@alfresco/js-api'; import { NotificationService, - DataRow, UserPreferencesService, PaginationComponent, DisplayMode, ShowHeaderMode, - InfinitePaginationComponent, FormRenderingService } from '@alfresco/adf-core'; - import { ContentService, FolderCreatedEvent, UploadService, DocumentListComponent, PermissionStyleModel, - UploadFilesEvent, - ConfirmDialogComponent, ContentMetadataService, FilterSearch, DialogAspectListService, @@ -59,7 +53,6 @@ import { } from '@alfresco/adf-content-services'; import { ProcessFormRenderingService } from '@alfresco/adf-process-services'; import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component'; -import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.component'; import { Subject } from 'rxjs'; import { PreviewService } from '../../services/preview.service'; import { takeUntil, debounceTime, scan } from 'rxjs/operators'; @@ -100,12 +93,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { @Input() sortingMode: 'server' | 'client' = 'server'; - @Input() - showRecentFiles = true; - - @Input() - showSitePicker = true; - @Input() showSettingsPanel = true; @@ -130,9 +117,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { @Input() maxSizeShow = false; - @Input() - showVersionComments = true; - @Input() versioning = false; @@ -157,9 +141,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { @Input() disableDragArea = false; - @Input() - showNameColumn = true; - @Input() searchTerm = ''; @@ -202,24 +183,16 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { @ViewChild('standardPagination') standardPagination: PaginationComponent; - @ViewChild(InfinitePaginationComponent, { static: true }) - infinitePaginationComponent: InfinitePaginationComponent; - permissionsStyle: PermissionStyleModel[] = []; - infiniteScrolling: boolean; stickyHeader: boolean; - warnOnMultipleUploads = false; - thumbnails = false; enableMediumTimeFormat = false; displayEmptyMetadata = false; - hyperlinkNavigation = false; constructor( private notificationService: NotificationService, private uploadService: UploadService, private contentService: ContentService, private dialog: MatDialog, - private location: Location, private router: Router, private preference: UserPreferencesService, private preview: PreviewService, @@ -236,11 +209,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { } } - toggleThumbnails() { - this.thumbnails = !this.thumbnails; - this.documentList.reload(); - } - ngOnInit() { if (!this.pagination) { this.pagination = { @@ -399,7 +367,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { onManageVersions(event: any) { const contentEntry = event.value.entry; - const showComments = this.showVersionComments; + const showComments = true; const allowDownload = this.allowVersionDownload; if (this.contentService.hasAllowableOperations(contentEntry, 'update')) { @@ -421,28 +389,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { }); } - onManageMetadata(event: any) { - const contentEntry = event.value.entry; - const displayEmptyMetadata = this.displayEmptyMetadata; - - if (this.contentService.hasAllowableOperations(contentEntry, 'update')) { - this.dialog.open(MetadataDialogAdapterComponent, { - data: { - contentEntry, - displayEmptyMetadata - }, - panelClass: 'adf-metadata-manager-dialog', - width: '630px' - }); - } else { - this.openSnackMessageError('OPERATION.ERROR.PERMISSION'); - } - } - - onSiteChange(site: SiteEntry) { - this.currentFolderId = site.entry.guid; - } - hasSelection(selection: Array): boolean { return selection && selection.length > 0; } @@ -457,13 +403,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { return this.contentService.hasAllowableOperations(selection[0].entry, 'update'); } - getNodeNameTooltip(row: DataRow): string { - if (row) { - return row.getValue('name'); - } - return null; - } - canEditFolder(selection: Array): boolean { if (selection && selection.length === 1) { const entry = selection[0].entry; @@ -507,44 +446,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { this.turnedPreviousPage.emit(event); } - toggleGalleryView(): void { - this.displayMode = this.displayMode === DisplayMode.List ? DisplayMode.Gallery : DisplayMode.List; - const url = this.router.createUrlTree(['/files', this.currentFolderId, 'display', this.displayMode]).toString(); - - this.location.go(url); - } - - onInfiniteScrolling(): void { - this.infiniteScrolling = !this.infiniteScrolling; - this.infinitePaginationComponent.reset(); - } - - onBeginUpload(event: UploadFilesEvent) { - if (this.warnOnMultipleUploads && event) { - const files = event.files || []; - if (files.length > 1) { - event.pauseUpload(); - - const dialogRef = this.dialog.open(ConfirmDialogComponent, { - data: { - title: 'Upload', - message: `Are you sure you want to upload ${files.length} file(s)?` - }, - minWidth: '250px' - }); - - dialogRef.afterClosed().subscribe((result) => { - if (result === true) { - event.resumeUpload(); - } - }); - } - } - } - onUploadNewVersion(ev) { const contentEntry = ev.detail.data.node.entry; - const showComments = this.showVersionComments; + const showComments = true; const allowDownload = this.allowVersionDownload; const newFileVersion = ev.detail.files[0].file; diff --git a/demo-shell/src/app/components/files/metadata-dialog-adapter.component.html b/demo-shell/src/app/components/files/metadata-dialog-adapter.component.html deleted file mode 100644 index 77e15e0fc9..0000000000 --- a/demo-shell/src/app/components/files/metadata-dialog-adapter.component.html +++ /dev/null @@ -1,10 +0,0 @@ -
Metadata
-
- - -
-
- -
diff --git a/demo-shell/src/app/components/files/metadata-dialog-adapter.component.ts b/demo-shell/src/app/components/files/metadata-dialog-adapter.component.ts deleted file mode 100644 index 4e570015be..0000000000 --- a/demo-shell/src/app/components/files/metadata-dialog-adapter.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Component, Inject, ViewEncapsulation } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { Node } from '@alfresco/js-api'; - -@Component({ - templateUrl: './metadata-dialog-adapter.component.html', - encapsulation: ViewEncapsulation.None -}) -export class MetadataDialogAdapterComponent { - contentEntry: Node; - displayEmptyMetadata = false; - - constructor(@Inject(MAT_DIALOG_DATA) data: any, private containingDialog?: MatDialogRef) { - this.contentEntry = data.contentEntry; - this.displayEmptyMetadata = data.displayEmptyMetadata; - } - - close() { - this.containingDialog.close(); - } -} diff --git a/demo-shell/src/app/components/home/home.component.html b/demo-shell/src/app/components/home/home.component.html index c94433b2b7..d8f542b749 100644 --- a/demo-shell/src/app/components/home/home.component.html +++ b/demo-shell/src/app/components/home/home.component.html @@ -3,6 +3,4 @@

ADF

Angular components for Alfresco

- - Documentation
diff --git a/demo-shell/src/app/components/home/home.component.ts b/demo-shell/src/app/components/home/home.component.ts index 1dd40f0048..f43dbf845b 100644 --- a/demo-shell/src/app/components/home/home.component.ts +++ b/demo-shell/src/app/components/home/home.component.ts @@ -18,6 +18,7 @@ import { Component, ViewEncapsulation } from '@angular/core'; @Component({ + standalone: true, selector: 'app-home-view', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'], diff --git a/demo-shell/src/app/components/logout/logout.component.html b/demo-shell/src/app/components/logout/logout.component.html index 71b22c099c..384db29bf9 100644 --- a/demo-shell/src/app/components/logout/logout.component.html +++ b/demo-shell/src/app/components/logout/logout.component.html @@ -1,15 +1,11 @@ -
+

Logout Page

You are now logged out

- -
- Home -
+ Login + Home
diff --git a/demo-shell/src/app/components/logout/logout.component.scss b/demo-shell/src/app/components/logout/logout.component.scss index b1d677177f..be914c1c72 100644 --- a/demo-shell/src/app/components/logout/logout.component.scss +++ b/demo-shell/src/app/components/logout/logout.component.scss @@ -4,10 +4,6 @@ align-items: center; } -.app-logout-header-background { - overflow: hidden; -} - .app-logout-section { text-align: center; padding-top: 60px; @@ -24,9 +20,5 @@ } .app-logout-docs-button { - margin: 30px; -} - -.app-logout-login { - float: left; + margin: 8px; } diff --git a/demo-shell/src/app/components/search/search-filter-chips.component.html b/demo-shell/src/app/components/search/search-filter-chips.component.html index 2bb8461a9f..9b5de08a00 100644 --- a/demo-shell/src/app/components/search/search-filter-chips.component.html +++ b/demo-shell/src/app/components/search/search-filter-chips.component.html @@ -20,8 +20,6 @@ [showHeader]="showHeader" [sorting]="sorting" [sortingMode]="'server'" - [showRecentFiles]="false" - [showSitePicker]="false" [showSettingsPanel]="false" [currentFolderId]="null" [nodeResult]="$any(data)" diff --git a/demo-shell/src/app/components/search/search-result.component.html b/demo-shell/src/app/components/search/search-result.component.html index 19d32193cb..3b036e75a7 100644 --- a/demo-shell/src/app/components/search/search-result.component.html +++ b/demo-shell/src/app/components/search/search-result.component.html @@ -18,8 +18,6 @@ [showHeader]="showHeader" [sorting]="sorting" [sortingMode]="'server'" - [showRecentFiles]="false" - [showSitePicker]="false" [showSettingsPanel]="false" [currentFolderId]="null" [nodeResult]="$any(data)" diff --git a/demo-shell/src/assets/fonts/muli/Muli-Black.ttf b/demo-shell/src/assets/fonts/muli/Muli-Black.ttf deleted file mode 100755 index 76825b8170..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-Black.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-BlackItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-BlackItalic.ttf deleted file mode 100755 index 70762c09d9..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-BlackItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-Bold.ttf b/demo-shell/src/assets/fonts/muli/Muli-Bold.ttf deleted file mode 100755 index 732c3ec02e..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-Bold.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-BoldItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-BoldItalic.ttf deleted file mode 100755 index 1dac1c9cb6..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-BoldItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-ExtraBold.ttf b/demo-shell/src/assets/fonts/muli/Muli-ExtraBold.ttf deleted file mode 100755 index a8ef44cec3..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-ExtraBold.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-ExtraBoldItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-ExtraBoldItalic.ttf deleted file mode 100755 index b99e68d460..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-ExtraBoldItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-ExtraLight.ttf b/demo-shell/src/assets/fonts/muli/Muli-ExtraLight.ttf deleted file mode 100755 index ffe7b29deb..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-ExtraLight.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-ExtraLightItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-ExtraLightItalic.ttf deleted file mode 100755 index eb8b36a0a3..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-ExtraLightItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-Italic.ttf b/demo-shell/src/assets/fonts/muli/Muli-Italic.ttf deleted file mode 100755 index e1599293f2..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-Italic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-Light.ttf b/demo-shell/src/assets/fonts/muli/Muli-Light.ttf deleted file mode 100755 index 4e66b6979f..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-Light.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-LightItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-LightItalic.ttf deleted file mode 100755 index 85ac251328..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-LightItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-Regular.ttf b/demo-shell/src/assets/fonts/muli/Muli-Regular.ttf deleted file mode 100755 index 1dfd643187..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-Regular.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-SemiBold.ttf b/demo-shell/src/assets/fonts/muli/Muli-SemiBold.ttf deleted file mode 100755 index 096a15e424..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-SemiBold.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/Muli-SemiBoldItalic.ttf b/demo-shell/src/assets/fonts/muli/Muli-SemiBoldItalic.ttf deleted file mode 100755 index 6d7bcc8569..0000000000 Binary files a/demo-shell/src/assets/fonts/muli/Muli-SemiBoldItalic.ttf and /dev/null differ diff --git a/demo-shell/src/assets/fonts/muli/OFL.txt b/demo-shell/src/assets/fonts/muli/OFL.txt deleted file mode 100755 index 1016891d2d..0000000000 --- a/demo-shell/src/assets/fonts/muli/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright (c) 2016 The Muli Project Authors (contact@sansoxygen.com) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/demo-shell/src/assets/fonts/muli/muli.css b/demo-shell/src/assets/fonts/muli/muli.css deleted file mode 100644 index 609c76fc9a..0000000000 --- a/demo-shell/src/assets/fonts/muli/muli.css +++ /dev/null @@ -1,63 +0,0 @@ -/* vietnamese */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 400; - src: local('Muli Regular'), - local('Muli-Regular'), - url(Muli-Regular.ttf) format('truetype'); - unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; - } - /* latin-ext */ - @font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 400; - src: local('Muli Regular'), - local('Muli-Regular'), - url(Muli-Regular.ttf) format('truetype'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; - } - /* latin */ - @font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 400; - src: local('Muli Regular'), - local('Muli-Regular'), - url(Muli-Regular.ttf) format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; - } - -/* vietnamese */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 100; - src: local('Muli Light'), - local('Muli-Light'), - url(Muli-Light.ttf) format('truetype'); - unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 100; - src: local('Muli Light'), - local('Muli-Light'), - url(Muli-Light.ttf) format('truetype'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Muli'; - font-style: normal; - font-weight: 100; - src: local('Muli Light'), - local('Muli-Light'), - url(Muli-Light.ttf) format('truetype'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} diff --git a/e2e/content-services/components/permissions-component.e2e.ts b/e2e/content-services/components/permissions-component.e2e.ts deleted file mode 100644 index 211e2d4759..0000000000 --- a/e2e/content-services/components/permissions-component.e2e.ts +++ /dev/null @@ -1,413 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { PermissionsPage } from '../../content-services/pages/permissions.page'; -import { ContentServicesPage } from '../../core/pages/content-services.page'; -import { FileModel } from '../../models/ACS/file.model'; -import { - createApiService, - BrowserActions, Logger, - LoginPage, - PermissionActions, - SearchService, - StringUtil, - UploadActions, - UserModel, - UsersActions, - ViewerPage, - SnackbarPage -} from '@alfresco/adf-testing'; -import { browser } from 'protractor'; -import { FolderModel } from '../../models/ACS/folder.model'; -import { MetadataViewPage } from '../../core/pages/metadata-view.page'; -import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { UploadDialogPage } from '../../core/pages/dialog/upload-dialog.page'; -import { GroupsApi, NodeEntry } from '@alfresco/js-api'; - -describe('Permissions Component', () => { - - const apiService = createApiService(); - const loginPage = new LoginPage(); - const contentServicesPage = new ContentServicesPage(); - const permissionsPage = new PermissionsPage(); - const navigationBarPage = new NavigationBarPage(); - const uploadActions = new UploadActions(apiService); - const usersActions = new UsersActions(apiService); - const snackbarPage = new SnackbarPage(); - const searchService = new SearchService(apiService); - const permissionActions = new PermissionActions(apiService); - const groupsApi = new GroupsApi(apiService.getInstance()); - - const contentList = contentServicesPage.getDocumentList(); - const viewerPage = new ViewerPage(); - const metadataViewPage = new MetadataViewPage(); - const uploadDialog = new UploadDialogPage(); - let file; - const fileModel = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_path - }); - const fileLocation = browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_location; - - const testFileModel = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location - }); - - const pngFileModel = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_location - }); - - const groupBody = { - id: `GROUP_${StringUtil.generateRandomString()}`, - displayName: StringUtil.generateRandomString() - }; - - const fileOwnerUser = new UserModel(); - const filePermissionUser = new UserModel(); - - const roleConsumerFolderModel = new FolderModel({ name: 'roleConsumer' + StringUtil.generateRandomString() }); - const roleCoordinatorFolderModel = new FolderModel({ name: 'roleCoordinator' + StringUtil.generateRandomString() }); - const roleCollaboratorFolderModel = new FolderModel({ name: 'roleCollaborator' + StringUtil.generateRandomString() }); - const roleContributorFolderModel = new FolderModel({ name: 'roleContributor' + StringUtil.generateRandomString() }); - const roleEditorFolderModel = new FolderModel({ name: 'roleEditor' + StringUtil.generateRandomString() }); - - let roleConsumerFolder: NodeEntry; - let roleCoordinatorFolder: NodeEntry; - let roleContributorFolder: NodeEntry; - let roleCollaboratorFolder: NodeEntry; - let roleEditorFolder: NodeEntry; - - beforeAll(async () => { - try { - await apiService.loginWithProfile('admin'); - await usersActions.createUser(fileOwnerUser); - await usersActions.createUser(filePermissionUser); - await groupsApi.createGroup(groupBody); - - await apiService.login(fileOwnerUser.username, fileOwnerUser.password); - roleConsumerFolder = await uploadActions.createFolder(roleConsumerFolderModel.name, '-my-'); - roleCoordinatorFolder = await uploadActions.createFolder(roleCoordinatorFolderModel.name, '-my-'); - roleContributorFolder = await uploadActions.createFolder(roleContributorFolderModel.name, '-my-'); - roleCollaboratorFolder = await uploadActions.createFolder(roleCollaboratorFolderModel.name, '-my-'); - roleEditorFolder = await uploadActions.createFolder(roleEditorFolderModel.name, '-my-'); - - await uploadActions.uploadFile(fileModel.location, 'RoleConsumer' + fileModel.name, roleConsumerFolder.entry.id); - await uploadActions.uploadFile(fileModel.location, 'RoleContributor' + fileModel.name, roleContributorFolder.entry.id); - await uploadActions.uploadFile(fileModel.location, 'RoleCoordinator' + fileModel.name, roleCoordinatorFolder.entry.id); - await uploadActions.uploadFile(fileModel.location, 'RoleCollaborator' + fileModel.name, roleCollaboratorFolder.entry.id); - await uploadActions.uploadFile(fileModel.location, 'RoleEditor' + fileModel.name, roleEditorFolder.entry.id); - - await permissionActions.addRoleForUser(filePermissionUser.username, 'Consumer', roleConsumerFolder); - await permissionActions.addRoleForUser(filePermissionUser.username, 'Collaborator', roleCollaboratorFolder); - await permissionActions.addRoleForUser(filePermissionUser.username, 'Coordinator', roleCoordinatorFolder); - await permissionActions.addRoleForUser(filePermissionUser.username, 'Contributor', roleContributorFolder); - await permissionActions.addRoleForUser(filePermissionUser.username, 'Editor', roleEditorFolder); - - // to sync user in acs - try { - await searchService.isUserSearchable(filePermissionUser); - } catch (e) { - Logger.error(`*****\n Failed to sync user \n*****`); - } - await browser.sleep(browser.params.testConfig.timeouts.index_search); // wait search index previous file/folder uploaded - } catch (e) { - fail('Failed to set up permission : \n' + JSON.stringify(e, null, 2)); - } - }); - - describe('Inherit and assigning permissions', () => { - - beforeEach(async () => { - await apiService.login(fileOwnerUser.username, fileOwnerUser.password); - file = await uploadActions.uploadFile(fileModel.location, fileModel.name, '-my-'); - - await loginPage.login(fileOwnerUser.username, fileOwnerUser.password); - - await contentServicesPage.goToDocumentList(); - await contentServicesPage.contentList.dataTablePage().waitTillContentLoaded(); - await contentServicesPage.checkContentIsDisplayed(fileModel.name); - - await contentList.rightClickOnRow(fileModel.name); - await contentServicesPage.pressContextMenuActionNamed('Permission'); - await permissionsPage.checkPermissionManagerDisplayed(); - }); - - afterEach(async () => { - await BrowserActions.closeMenuAndDialogs(); - try { - await uploadActions.deleteFileOrFolder(file.entry.id); - } catch (error) { - } - await navigationBarPage.clickLogoutButton(); - }); - - it('[C286272] Should be able to see results when searching for a user', async () => { - await permissionsPage.addPermissionButton.waitVisible(); - await permissionsPage.addPermissionsDialog.clickAddPermissionButton(); - await permissionsPage.addPermissionsDialog.checkAddPermissionDialogIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); - await permissionsPage.addPermissionsDialog.searchUserOrGroup('a'); - await permissionsPage.addPermissionsDialog.checkResultListIsDisplayed(); - }); - - it('[C276979] Should be able to give permissions to a group of people', async () => { - await permissionsPage.addPermissionButton.waitVisible(); - await permissionsPage.addPermissionsDialog.clickAddPermissionButton(); - await permissionsPage.addPermissionsDialog.checkAddPermissionDialogIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); - await permissionsPage.addPermissionsDialog.searchUserOrGroup(groupBody.id); - await permissionsPage.addPermissionsDialog.clickUserOrGroup(groupBody.displayName); - await permissionsPage.addPermissionsDialog.selectRole(groupBody.displayName, 'Consumer'); - await expect(await permissionsPage.addPermissionsDialog.addButtonIsEnabled()).toBe(true, 'button should be enabled'); - await permissionsPage.addPermissionsDialog.clickAddButton(); - await expect(await snackbarPage.getSnackBarMessage()).toEqual('Added 0 user(s) 1 group(s)'); - await permissionsPage.checkUserIsAdded(groupBody.id); - }); - - it('[C277100] Should display EVERYONE group in the search result set', async () => { - await permissionsPage.addPermissionButton.waitVisible(); - await permissionsPage.addPermissionsDialog.clickAddPermissionButton(); - await permissionsPage.addPermissionsDialog.checkAddPermissionDialogIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); - await permissionsPage.addPermissionsDialog.searchUserOrGroup(filePermissionUser.username); - await permissionsPage.addPermissionsDialog.checkResultListIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsDisplayed('EVERYONE'); - await permissionsPage.addPermissionsDialog.searchUserOrGroup('somerandomtext'); - await permissionsPage.addPermissionsDialog.checkResultListIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsDisplayed('EVERYONE'); - }); - - it('should be able to toggle the inherited permission', async () => { - await permissionsPage.checkPermissionListDisplayed(); - await expect(await permissionsPage.isInherited()).toBe(true, 'Inherited permission should be on'); - await permissionsPage.toggleInheritPermission(); - await expect(await snackbarPage.getSnackBarMessage()).toContain('Disabled inherited permission', 'Disabled notification not shown'); - await snackbarPage.waitForSnackBarToClose(); - await expect(await permissionsPage.isInherited()).toBe(false, 'Inherited permission should be off'); - }); - }); - - describe('Changing and duplicate Permissions', () => { - - beforeEach(async () => { - await apiService.login(fileOwnerUser.username, fileOwnerUser.password); - file = await uploadActions.uploadFile(fileModel.location, fileModel.name, '-my-'); - await loginPage.login(fileOwnerUser.username, fileOwnerUser.password); - await contentServicesPage.goToDocumentList(); - await contentServicesPage.checkContentIsDisplayed(fileModel.name); - await contentServicesPage.checkSelectedSiteIsDisplayed('My files'); - await contentList.rightClickOnRow(fileModel.name); - await contentServicesPage.pressContextMenuActionNamed('Permission'); - await permissionsPage.checkPermissionManagerDisplayed(); - await permissionsPage.addPermissionButton.waitVisible(); - await permissionsPage.addPermissionsDialog.clickAddPermissionButton(); - await permissionsPage.addPermissionsDialog.checkAddPermissionDialogIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); - await permissionsPage.addPermissionsDialog.searchUserOrGroup(filePermissionUser.firstName); - await permissionsPage.addPermissionsDialog.checkResultListIsDisplayed(); - await permissionsPage.addPermissionsDialog.clickUserOrGroup(filePermissionUser.firstName); - await permissionsPage.addPermissionsDialog.selectRole(filePermissionUser.fullName, 'Contributor'); - await expect(await permissionsPage.addPermissionsDialog.addButtonIsEnabled()).toBe(true, 'button should be enabled'); - await permissionsPage.addPermissionsDialog.clickAddButton(); - await expect(await snackbarPage.getSnackBarMessage()).toEqual('Added 1 user(s) 0 group(s)'); - await snackbarPage.waitForSnackBarToClose(); - await permissionsPage.checkUserIsAdded(filePermissionUser.username); - }); - - afterEach(async () => { - await uploadActions.deleteFileOrFolder(file.entry.id); - await navigationBarPage.clickLogoutButton(); - }); - - it('[C274691] Should be able to add a new User with permission to the file and also change locally set permissions', async () => { - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Contributor'); - await permissionsPage.clickRoleDropdownByUserOrGroupName(filePermissionUser.username); - const roleDropdownOptions = permissionsPage.addPermissionsDialog.getRoleDropdownOptions(); - await expect(await roleDropdownOptions.count()).toBe(5); - - await expect(await BrowserActions.getText(roleDropdownOptions.get(0))).toBe('Contributor'); - await expect(await BrowserActions.getText(roleDropdownOptions.get(1))).toBe('Collaborator'); - await expect(await BrowserActions.getText(roleDropdownOptions.get(2))).toBe('Coordinator'); - await expect(await BrowserActions.getText(roleDropdownOptions.get(3))).toBe('Editor'); - await expect(await BrowserActions.getText(roleDropdownOptions.get(4))).toBe('Consumer'); - - await BrowserActions.closeMenuAndDialogs(); - await permissionsPage.changePermission(filePermissionUser.username, 'Collaborator'); - await snackbarPage.waitForSnackBarToClose(); - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Collaborator'); - - await permissionsPage.changePermission(filePermissionUser.username, 'Coordinator'); - await snackbarPage.waitForSnackBarToClose(); - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Coordinator'); - - await permissionsPage.changePermission(filePermissionUser.username, 'Editor'); - await snackbarPage.waitForSnackBarToClose(); - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Editor'); - - await permissionsPage.changePermission(filePermissionUser.username, 'Consumer'); - await snackbarPage.waitForSnackBarToClose(); - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Consumer'); - }); - - it('[C276980] Should not be able to duplicate User or Group to the locally set permissions', async () => { - await expect(await permissionsPage.addPermissionsDialog.getRoleCellValue(filePermissionUser.username)).toEqual('Contributor'); - await permissionsPage.addPermissionsDialog.clickAddPermissionButton(); - await permissionsPage.addPermissionsDialog.checkAddPermissionDialogIsDisplayed(); - await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); - await permissionsPage.addPermissionsDialog.searchUserOrGroup(filePermissionUser.firstName); - await permissionsPage.addPermissionsDialog.clickUserOrGroup(filePermissionUser.firstName); - await expect(await permissionsPage.addPermissionsDialog.getRoleCellValue(filePermissionUser.fullName)).toEqual('Contributor'); - await expect(await permissionsPage.addPermissionsDialog.addButtonIsEnabled()).toBe(false, 'button should not be enabled'); - }); - - it('[C276982] Should be able to remove User or Group from the locally set permissions', async () => { - await expect(await permissionsPage.getRoleCellValue(filePermissionUser.username)).toEqual('Contributor'); - await permissionsPage.clickDeletePermissionButton(filePermissionUser.username); - await permissionsPage.checkUserIsDeleted(filePermissionUser.username); - await expect(await snackbarPage.getSnackBarMessage()).toEqual('User/Group deleted'); - }); - }); - - describe('Role: Consumer, Contributor, Coordinator, Collaborator, Editor, No Permissions', () => { - - afterEach(async () => { - await navigationBarPage.clickLogoutButton(); - }); - - it('[C276993] Role Consumer', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleConsumerFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleConsumer' + fileModel.name); - await contentList.doubleClickRow('RoleConsumer' + fileModel.name); - await viewerPage.checkFileIsLoaded(); - await viewerPage.clickCloseButton(); - await contentList.waitForTableBody(); - await contentServicesPage.checkDeleteIsDisabled('RoleConsumer' + fileModel.name); - await BrowserActions.closeMenuAndDialogs(); - await contentList.checkActionMenuIsNotDisplayed(); - await contentServicesPage.metadataContent('RoleConsumer' + fileModel.name); - await expect(await snackbarPage.getSnackBarMessage()).toEqual('You don\'t have access to do this.'); - await browser.sleep(3000); - await contentServicesPage.uploadFile(fileLocation); - await expect(await snackbarPage.getSnackBarMessage()).toEqual('You don\'t have the create permission to upload the content'); - }); - - it('[C276996] Role Contributor', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleContributorFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleContributor' + fileModel.name); - await contentList.doubleClickRow('RoleContributor' + fileModel.name); - await viewerPage.checkFileIsLoaded(); - await viewerPage.clickCloseButton(); - await contentList.waitForTableBody(); - await contentServicesPage.checkDeleteIsDisabled('RoleContributor' + fileModel.name); - await BrowserActions.closeMenuAndDialogs(); - await contentList.checkActionMenuIsNotDisplayed(); - await contentServicesPage.metadataContent('RoleContributor' + fileModel.name); - await contentServicesPage.uploadFile(testFileModel.location); - await contentServicesPage.checkContentIsDisplayed(testFileModel.name); - await uploadDialog.fileIsUploaded(testFileModel.name); - await uploadDialog.clickOnCloseButton(); - await uploadDialog.dialogIsNotDisplayed(); - }); - - it('[C277000] Role Editor', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleEditorFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleEditor' + fileModel.name); - await contentList.doubleClickRow('RoleEditor' + fileModel.name); - await viewerPage.checkFileIsLoaded(); - await viewerPage.clickCloseButton(); - await contentList.waitForTableBody(); - await contentServicesPage.checkDeleteIsDisabled('RoleEditor' + fileModel.name); - await BrowserActions.closeMenuAndDialogs(); - await contentList.checkActionMenuIsNotDisplayed(); - await contentServicesPage.metadataContent('RoleEditor' + fileModel.name); - await metadataViewPage.editIconIsDisplayed(); - await metadataViewPage.editIconClick(); - await metadataViewPage.editPropertyIconIsDisplayed('properties.cm:title'); - await metadataViewPage.enterPropertyText('properties.cm:title', 'newTitle1'); - await expect(await metadataViewPage.getPropertyText('properties.cm:title')).toEqual('newTitle1'); - await metadataViewPage.clickCloseButton(); - await contentServicesPage.uploadFile(fileLocation); - }); - - it('[C277003] Role Collaborator', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleCollaboratorFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleCollaborator' + fileModel.name); - await contentList.doubleClickRow('RoleCollaborator' + fileModel.name); - await viewerPage.checkFileIsLoaded(); - await viewerPage.clickCloseButton(); - await contentList.waitForTableBody(); - await contentServicesPage.checkDeleteIsDisabled('RoleCollaborator' + fileModel.name); - await BrowserActions.closeMenuAndDialogs(); - await contentList.checkActionMenuIsNotDisplayed(); - await contentServicesPage.metadataContent('RoleCollaborator' + fileModel.name); - await metadataViewPage.editIconIsDisplayed(); - await metadataViewPage.editIconClick(); - await metadataViewPage.editPropertyIconIsDisplayed('properties.cm:title'); - await metadataViewPage.enterPropertyText('properties.cm:title', 'newTitle2'); - await expect(await metadataViewPage.getPropertyText('properties.cm:title')).toEqual('newTitle2'); - await metadataViewPage.clickCloseButton(); - await contentServicesPage.uploadFile(testFileModel.location); - await contentServicesPage.checkContentIsDisplayed(testFileModel.name); - await uploadDialog.fileIsUploaded(testFileModel.name); - await uploadDialog.clickOnCloseButton(); - await uploadDialog.dialogIsNotDisplayed(); - }); - - it('[C277004] Role Coordinator', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleCoordinatorFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleCoordinator' + fileModel.name); - await contentList.doubleClickRow('RoleCoordinator' + fileModel.name); - await viewerPage.checkFileIsLoaded(); - await viewerPage.clickCloseButton(); - await contentList.waitForTableBody(); - await contentServicesPage.metadataContent('RoleCoordinator' + fileModel.name); - await metadataViewPage.editIconIsDisplayed(); - await metadataViewPage.editIconClick(); - await metadataViewPage.editPropertyIconIsDisplayed('properties.cm:title'); - await metadataViewPage.enterPropertyText('properties.cm:title', 'newTitle3'); - await expect(await metadataViewPage.getPropertyText('properties.cm:title')).toEqual('newTitle3'); - await metadataViewPage.clickCloseButton(); - await contentServicesPage.uploadFile(pngFileModel.location); - await contentServicesPage.checkContentIsDisplayed(pngFileModel.name); - await uploadDialog.fileIsUploaded(pngFileModel.name); - await uploadDialog.clickOnCloseButton(); - await uploadDialog.dialogIsNotDisplayed(); - await contentServicesPage.checkContentIsDisplayed('RoleCoordinator' + fileModel.name); - await contentServicesPage.deleteContent('RoleCoordinator' + fileModel.name); - await contentServicesPage.checkContentIsNotDisplayed('RoleCoordinator' + fileModel.name); - }); - - it('[C279881] No Permission User', async () => { - await loginPage.login(filePermissionUser.username, filePermissionUser.password); - await navigationBarPage.openContentServicesFolder(roleConsumerFolder.entry.id); - await contentServicesPage.checkContentIsDisplayed('RoleConsumer' + fileModel.name); - await contentServicesPage.checkSelectedSiteIsDisplayed('My files'); - await contentList.rightClickOnRow('RoleConsumer' + fileModel.name); - await contentServicesPage.pressContextMenuActionNamed('Permission'); - await permissionsPage.checkPermissionManagerDisplayed(); - await permissionsPage.errorElement.waitPresent(); - await expect(await permissionsPage.noPermissionContent()).toContain('This item no longer exists or you don\'t have permission to view it.'); - }); - }); -}); diff --git a/e2e/content-services/directives/sso-download-directive-component.e2e.ts b/e2e/content-services/directives/sso-download-directive-component.e2e.ts index c8375cb478..ccaa457ab9 100644 --- a/e2e/content-services/directives/sso-download-directive-component.e2e.ts +++ b/e2e/content-services/directives/sso-download-directive-component.e2e.ts @@ -18,7 +18,8 @@ import { ContentServicesPage } from '../../core/pages/content-services.page'; import { browser } from 'protractor'; import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { createApiService, +import { + createApiService, FileBrowserUtil, IdentityService, LoginPage, @@ -33,7 +34,6 @@ import { FileModel } from '../../models/ACS/file.model'; import { NodeEntry } from '@alfresco/js-api'; describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList, implicitFlow true', () => { - const settingsPage = new SettingsPage(); const navigationBarPage = new NavigationBarPage(); const contentServicesPage = new ContentServicesPage(); @@ -56,8 +56,6 @@ describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path }); - let pdfUploadedFile: NodeEntry; - let pngUploadedFile: NodeEntry; let folder: NodeEntry; let acsUser: UserModel; const folderName = StringUtil.generateRandomString(5); @@ -71,12 +69,17 @@ describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList folder = await uploadActions.createFolder(folderName, '-my-'); - pdfUploadedFile = await uploadActions.uploadFile(firstPdfFileModel.location, firstPdfFileModel.name, folder.entry.id); - pngUploadedFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, folder.entry.id); + await uploadActions.uploadFile(firstPdfFileModel.location, firstPdfFileModel.name, folder.entry.id); + await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, folder.entry.id); - await settingsPage.setProviderEcmSso(browser.params.testConfig.appConfig.ecmHost, + await settingsPage.setProviderEcmSso( + browser.params.testConfig.appConfig.ecmHost, browser.params.testConfig.appConfig.oauth2.host, - browser.params.testConfig.appConfig.identityHost, false, true, browser.params.testConfig.appConfig.oauth2.clientId); + browser.params.testConfig.appConfig.identityHost, + false, + true, + browser.params.testConfig.appConfig.oauth2.clientId + ); await loginSsoPage.loginSSOIdentityService(acsUser.username, acsUser.password); @@ -91,15 +94,13 @@ describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList await apiService.loginWithProfile('admin'); await uploadActions.deleteFileOrFolder(folder.entry.id); await identityService.deleteIdentityUser(acsUser.email); - } catch (error) { - } + } catch (error) {} await apiService.getInstance().logout(); await browser.executeScript('window.sessionStorage.clear();'); await browser.executeScript('window.localStorage.clear();'); }); describe('SSO in ADF using ACS and AIS, implicit flow set', () => { - afterEach(async () => { await browser.refresh(); await contentListPage.waitForTableBody(); @@ -136,15 +137,5 @@ describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList await contentServicesPage.clickDownloadButton(); await FileBrowserUtil.isFileDownloaded('archive.zip'); }); - - it('[C291940] Should be able to view thumbnails when enabled', async () => { - await contentServicesPage.enableThumbnails(); - await contentServicesPage.checkAcsContainer(); - await contentListPage.waitForTableBody(); - const filePdfIconUrl = await contentServicesPage.getRowIconImageUrl(firstPdfFileModel.name); - await expect(filePdfIconUrl).toContain(`/versions/1/nodes/${pdfUploadedFile.entry.id}/renditions`); - const filePngIconUrl = await contentServicesPage.getRowIconImageUrl(pngFileModel.name); - await expect(filePngIconUrl).toContain(`/versions/1/nodes/${pngUploadedFile.entry.id}/renditions`); - }); }); }); diff --git a/e2e/content-services/document-list/document-list-component.e2e.ts b/e2e/content-services/document-list/document-list-component.e2e.ts index e366fdb500..971922a472 100644 --- a/e2e/content-services/document-list/document-list-component.e2e.ts +++ b/e2e/content-services/document-list/document-list-component.e2e.ts @@ -17,7 +17,7 @@ import { ContentServicesPage } from '../../core/pages/content-services.page'; import { browser } from 'protractor'; -import { createApiService, LoginPage, StringUtil, UploadActions, UserModel, UsersActions, ViewerPage } from '@alfresco/adf-testing'; +import { createApiService, LoginPage, StringUtil, UploadActions, UserModel, UsersActions } from '@alfresco/adf-testing'; import { FileModel } from '../../models/ACS/file.model'; import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; import { NodeEntry } from '@alfresco/js-api'; @@ -345,31 +345,4 @@ describe('Document List Component', () => { await contentServicesPage.checkListIsSortedByNameColumn('asc'); }); }); - - describe('Column Template', () => { - const file0BytesModel = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_path - }); - - let file: NodeEntry; - const viewer = new ViewerPage(); - - beforeAll(async () => { - await apiService.loginWithProfile('admin'); - acsUser = await usersActions.createUser(); - await apiService.login(acsUser.username, acsUser.password); - file = await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, '-my-'); - - await loginPage.login(acsUser.username, acsUser.password); - await contentServicesPage.goToDocumentList(); - }); - - it('[C291843] Should be able to navigate using nodes hyperlink when activated', async () => { - await contentServicesPage.clickHyperlinkNavigationToggle(); - await contentServicesPage.checkFileHyperlinkIsEnabled(file.entry.name); - await contentServicesPage.clickFileHyperlink(file.entry.name); - await viewer.checkFileIsLoaded(); - }); - }); }); diff --git a/e2e/content-services/document-list/document-list-permissions.e2e.ts b/e2e/content-services/document-list/document-list-permissions.e2e.ts deleted file mode 100644 index 0a84c09183..0000000000 --- a/e2e/content-services/document-list/document-list-permissions.e2e.ts +++ /dev/null @@ -1,62 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { browser } from 'protractor'; -import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { createApiService, BrowserActions, ErrorPage, LoginPage, StringUtil, UsersActions } from '@alfresco/adf-testing'; -import { SiteEntry, SitesApi } from '@alfresco/js-api'; - -describe('Document List Component', () => { - const loginPage = new LoginPage(); - const errorPage = new ErrorPage(); - const navigationBarPage = new NavigationBarPage(); - const apiService = createApiService(); - const usersActions = new UsersActions(apiService); - - let privateSite: SiteEntry; - let acsUser = null; - - describe('Permission Message', () => { - beforeAll(async () => { - const siteName = `PRIVATE_TEST_SITE_${StringUtil.generateRandomString(5)}`; - const privateSiteBody = { visibility: 'PRIVATE', title: siteName }; - - await apiService.loginWithProfile('admin'); - - acsUser = await usersActions.createUser(); - - const sitesApi = new SitesApi(apiService.getInstance()); - privateSite = await sitesApi.createSite(privateSiteBody); - - await loginPage.login(acsUser.username, acsUser.password); - }); - - afterAll(async () => { - await apiService.loginWithProfile('admin'); - await navigationBarPage.clickLogoutButton(); - - const sitesApi = new SitesApi(apiService.getInstance()); - await sitesApi.deleteSite(privateSite.entry.id, { permanent: true }); - }); - - it('[C217334] Should display a message when accessing file without permissions', async () => { - await BrowserActions.getUrl(browser.baseUrl + '/files/' + privateSite.entry.guid); - await expect(await errorPage.getErrorCode()).toBe('403'); - await expect(await errorPage.getErrorDescription()).toBe("You're not allowed access to this resource on the server."); - }); - }); -}); diff --git a/e2e/content-services/metadata/aspect-oriented-config.e2e.ts b/e2e/content-services/metadata/aspect-oriented-config.e2e.ts deleted file mode 100644 index 4b1cdc92a5..0000000000 --- a/e2e/content-services/metadata/aspect-oriented-config.e2e.ts +++ /dev/null @@ -1,320 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createApiService, - CheckboxPage, - LocalStorageUtil, - LoginPage, - UploadActions, - UserModel, - UsersActions, - ViewerPage -} from '@alfresco/adf-testing'; -import { MetadataViewPage } from '../../core/pages/metadata-view.page'; -import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { FileModel } from '../../models/ACS/file.model'; -import { browser } from 'protractor'; -import { ContentServicesPage } from '../../core/pages/content-services.page'; -import { CustomModelApi, NodesApi } from '@alfresco/js-api'; - -describe('Aspect oriented config', () => { - - const loginPage = new LoginPage(); - const viewerPage = new ViewerPage(); - const metadataViewPage = new MetadataViewPage(); - const navigationBarPage = new NavigationBarPage(); - const contentServicesPage = new ContentServicesPage(); - const modelOneName = 'modelOne'; const emptyAspectName = 'emptyAspect'; - const defaultModel = 'cm'; const defaultEmptyPropertiesAspect = 'taggable'; const aspectName = 'Taggable'; - - const apiService = createApiService(); - const usersActions = new UsersActions(apiService); - const nodesApi = new NodesApi(apiService.getInstance()); - const customModelApi = new CustomModelApi(apiService.getInstance()); - - let acsUser: UserModel; - - const pngFileModel = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path - }); - let uploadActions; - - beforeAll(async () => { - uploadActions = new UploadActions(apiService); - - await apiService.loginWithProfile('admin'); - - try { - await customModelApi.createCustomModel('ACTIVE', modelOneName, modelOneName, modelOneName, modelOneName); - } catch (e) { - } - - try { - await customModelApi.createCustomAspect(modelOneName, emptyAspectName, null, emptyAspectName, emptyAspectName); - } catch (e) { - } - - acsUser = await usersActions.createUser(); - - await apiService.login(acsUser.username, acsUser.password); - - const uploadedFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, '-my-'); - - await loginPage.login(acsUser.username, acsUser.password); - - const aspects = await nodesApi.getNode(uploadedFile.entry.id); - - aspects.entry.aspectNames.push(modelOneName.concat(':', emptyAspectName)); - - aspects.entry.aspectNames.push(defaultModel.concat(':', defaultEmptyPropertiesAspect)); - - await nodesApi.updateNode(uploadedFile.entry.id, { aspectNames: aspects.entry.aspectNames }); - }); - - afterAll(async () => { - await navigationBarPage.clickLogoutButton(); - }); - - afterEach(async () => { - await viewerPage.clickCloseButton(); - await contentServicesPage.checkAcsContainer(); - }); - - it('[C261117] Should be possible restrict the display properties of one an aspect', async () => { - await LocalStorageUtil.setConfigField('content-metadata', JSON.stringify({ - presets: { - default: [ - { - title: 'IMAGE', - items: [ - { - aspect: 'exif:exif', - properties: [ - 'exif:pixelXDimension', - 'exif:pixelYDimension', - 'exif:isoSpeedRatings' - ] - } - ] - } - ] - } - })); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.clickMetadataGroup('IMAGE'); - await metadataViewPage.checkPropertyIsVisible('properties.exif:pixelXDimension', 'textitem'); - await metadataViewPage.checkPropertyIsVisible('properties.exif:pixelYDimension', 'textitem'); - await metadataViewPage.checkPropertyIsNotVisible('properties.exif:isoSpeedRatings', 'textitem'); - - await metadataViewPage.editIconClick(); - - await metadataViewPage.checkPropertyIsVisible('properties.exif:isoSpeedRatings', 'textitem'); - }); - - it('[C260185] Should ignore not existing aspect when present in the configuration', async () => { - await LocalStorageUtil.setConfigField('content-metadata', JSON.stringify({ - presets: { - default: { - 'exif:exif': '*', - 'cm:versionable': '*', - 'not:exists': '*' - } - } - })); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsPresent('EXIF'); - await metadataViewPage.checkMetadataGroupIsPresent('properties'); - await metadataViewPage.checkMetadataGroupIsPresent('Versionable'); - await metadataViewPage.checkMetadataGroupIsNotPresent('exists'); - }); - - it('[C260183] Should show all the aspect if the content-metadata configuration is NOT provided', async () => { - await LocalStorageUtil.setConfigField('content-metadata', '{}'); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsPresent('EXIF'); - await metadataViewPage.checkMetadataGroupIsPresent('properties'); - await metadataViewPage.checkMetadataGroupIsPresent('Versionable'); - }); - - it('[C260182] Should show all the aspects if the default configuration contains the star symbol', async () => { - await LocalStorageUtil.setConfigField('content-metadata', JSON.stringify({ - presets: { - default: '*' - } - })); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsPresent('EXIF'); - await metadataViewPage.checkMetadataGroupIsPresent('properties'); - await metadataViewPage.checkMetadataGroupIsPresent('Versionable'); - }); - - it('[C268899] Should be possible use a Translation key as Title of a metadata group', async () => { - await LocalStorageUtil.setConfigField('content-metadata', '{' + - ' "presets": {' + - ' "default": [' + - ' {' + - ' "title": "GROUP-TITLE1-TRANSLATION-KEY",' + - ' "items": [' + - ' {' + - ' "aspect": "exif:exif",' + - ' "properties": "*"' + - ' }' + - ' ]' + - ' },' + - ' {' + - ' "title": "GROUP-TITLE2-TRANSLATION-KEY",' + - ' "items": [' + - ' {' + - ' "aspect": "exif:exif",' + - ' "properties": "*"' + - ' }' + - ' ]' + - ' }' + - ' ]' + - ' }' + - '}'); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsPresent('GROUP-TITLE1-TRANSLATION-KEY'); - await metadataViewPage.checkMetadataGroupIsPresent('GROUP-TITLE2-TRANSLATION-KEY'); - - await expect(await metadataViewPage.getMetadataGroupTitle('GROUP-TITLE1-TRANSLATION-KEY')).toBe('CUSTOM TITLE TRANSLATION ONE'); - await expect(await metadataViewPage.getMetadataGroupTitle('GROUP-TITLE2-TRANSLATION-KEY')).toBe('CUSTOM TITLE TRANSLATION TWO'); - }); - - it('[C279968] Should be possible use a custom preset', async () => { - await LocalStorageUtil.setConfigField('content-metadata', '{' + - ' "presets": {' + - ' "custom-preset": {' + - ' "exif:exif": "*",' + - ' "cm:versionable": "*"' + - ' }' + - ' }' + - '}'); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - - await CheckboxPage.check(metadataViewPage.presetSwitch); - - await metadataViewPage.enterPresetText('custom-preset'); - - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsPresent('properties'); - await metadataViewPage.checkMetadataGroupIsPresent('Versionable'); - }); - - it('[C299186] The aspect without properties is not displayed', async () => { - await LocalStorageUtil.setConfigField('content-metadata', '{' + - ' "presets": { "' + modelOneName + - ' ": { "' + modelOneName + ':' + emptyAspectName + - ' ":"*"' + - ' }' + - ' }' + - '}'); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsNotPresent(emptyAspectName); - }); - - it('[C299187] The aspect with empty properties is displayed when edit', async () => { - await LocalStorageUtil.setConfigField('content-metadata', '{' + - ' "presets": { "' + defaultModel + - ' ": { "' + defaultModel + ':' + defaultEmptyPropertiesAspect + - ' ":"*"' + - ' }' + - ' }' + - '}'); - - await navigationBarPage.navigateToContentServices(); - - await viewerPage.viewFile(pngFileModel.name); - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await metadataViewPage.clickOnPropertiesTab(); - - await metadataViewPage.informationButtonIsDisplayed(); - await metadataViewPage.clickOnInformationButton(); - - await metadataViewPage.checkMetadataGroupIsNotPresent(aspectName); - - await metadataViewPage.editIconClick(); - - await metadataViewPage.checkMetadataGroupIsPresent(aspectName); - }); -}); diff --git a/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts b/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts index 04dcb68ff5..a8586adaf6 100644 --- a/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts +++ b/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import { createApiService, +import { + createApiService, BrowserActions, LocalStorageUtil, LoginPage, - StringUtil, UploadActions, UserModel, UsersActions, @@ -33,7 +33,6 @@ import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; import { format } from 'date-fns'; describe('Metadata component', () => { - const METADATA = { DATA_FORMAT: 'PP', TITLE: 'Details', @@ -55,8 +54,6 @@ describe('Metadata component', () => { let acsUser: UserModel; - const folderName = StringUtil.generateRandomString(); - const pngFileModel = new FileModel({ name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name, location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path @@ -80,13 +77,16 @@ describe('Metadata component', () => { await loginPage.login(acsUser.username, acsUser.password); await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); - await LocalStorageUtil.setConfigField('content-metadata', JSON.stringify({ - presets: { - default: { - 'exif:exif': '*' + await LocalStorageUtil.setConfigField( + 'content-metadata', + JSON.stringify({ + presets: { + default: { + 'exif:exif': '*' + } } - } - })); + }) + ); }); afterAll(async () => { @@ -103,7 +103,7 @@ describe('Metadata component', () => { await contentServicesPage.waitForTableBody(); }); - it('[C245652] Should be possible to display a file\'s properties', async () => { + it("[C245652] Should be possible to display a file's properties", async () => { await viewerPage.clickInfoButton(); await viewerPage.checkInfoSideBarIsDisplayed(); await metadataViewPage.clickOnPropertiesTab(); @@ -188,7 +188,9 @@ describe('Metadata component', () => { await metadataViewPage.enterPropertyText('properties.cm:name', 'exampleText'); await metadataViewPage.clickResetMetadata(); - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual(browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name); + await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual( + browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name + ); await metadataViewPage.enterPropertyText('properties.cm:name', 'exampleText.png'); await metadataViewPage.enterPropertyText('properties.cm:title', 'example title'); @@ -214,7 +216,9 @@ describe('Metadata component', () => { await metadataViewPage.editIconClick(); await metadataViewPage.enterPropertyText('properties.cm:name', browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name); - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual(browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name); + await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual( + browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name + ); await metadataViewPage.clickSaveMetadata(); }); @@ -243,48 +247,6 @@ describe('Metadata component', () => { }); }); - describe('Folder metadata', () => { - - beforeAll(async () => { - await apiService.login(acsUser.username, acsUser.password); - await loginPage.login(acsUser.username, acsUser.password); - - await uploadActions.createFolder(folderName, '-my-'); - await navigationBarPage.navigateToContentServices(); - await contentServicesPage.waitForTableBody(); - }); - - afterAll(async () => { - await navigationBarPage.clickLogoutButton(); - }); - - it('[C261157] Should be possible use the metadata component When the node is a Folder', async () => { - await contentServicesPage.metadataContent(folderName); - - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual(folderName); - await expect(await metadataViewPage.getPropertyText('createdByUser.displayName')).toEqual(`${acsUser.firstName} ${acsUser.lastName}`); - await BrowserActions.closeMenuAndDialogs(); - }); - - it('[C261158] Should be possible edit the metadata When the node is a Folder', async () => { - await contentServicesPage.metadataContent(folderName); - - await metadataViewPage.editIconClick(); - - await metadataViewPage.enterPropertyText('properties.cm:name', 'newnameFolder'); - await metadataViewPage.clickResetButton(); - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual(folderName); - - await metadataViewPage.enterPropertyText('properties.cm:name', 'newnameFolder'); - await metadataViewPage.clickSaveMetadata(); - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual('newnameFolder'); - - await metadataViewPage.enterPropertyText('properties.cm:name', folderName); - await metadataViewPage.clickSaveMetadata(); - await expect(await metadataViewPage.getPropertyText('properties.cm:name')).toEqual(folderName); - }); - }); - it('[C279960] Should show the last username modifier when modify a File', async () => { await loginPage.loginWithProfile('admin'); diff --git a/e2e/content-services/pages/permissions.page.ts b/e2e/content-services/pages/permissions.page.ts deleted file mode 100644 index 7c5fd4725c..0000000000 --- a/e2e/content-services/pages/permissions.page.ts +++ /dev/null @@ -1,97 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - AddPermissionsDialogPage, - BrowserActions, - DataTableComponentPage, - DropdownPage, - TestElement -} from '@alfresco/adf-testing'; -import { browser } from 'protractor'; - -export class PermissionsPage { - - dataTableComponentPage = new DataTableComponentPage(); - addPermissionsDialog = new AddPermissionsDialogPage(); - - rootElement = 'adf-permission-manager-card'; - inheritedButton = '[data-automation-id="adf-inherit-toggle-button"]'; - errorElement = TestElement.byId('adf-permission-manager-error'); - localPermissionList = TestElement.byCss('[data-automation-id="adf-locally-set-permission"]'); - addPermissionButton = TestElement.byCss('button[data-automation-id=\'adf-add-permission-button\']'); - - async changePermission(name: string, role: string): Promise { - await browser.sleep(1000); - await this.clickRoleDropdownByUserOrGroupName(name); - await new DropdownPage().selectOption(role); - await this.dataTableComponentPage.checkRowByContentIsNotSelected(name); - } - - async checkUserIsAdded(id: string) { - const userOrGroupName = TestElement.byCss('div[data-automation-id="' + id + '"]'); - await userOrGroupName.waitPresent(); - } - - async getRoleCellValue(username: string): Promise { - const locator = this.dataTableComponentPage.getCellByRowContentAndColumn('Users and Groups', username, 'Role'); - return BrowserActions.getText(locator); - } - - async clickRoleDropdownByUserOrGroupName(name: string): Promise { - const row = this.dataTableComponentPage.getRow('Users and Groups', name); - await row.click(); - await BrowserActions.click(row.$('[id="adf-select-role-permission"] .mat-select-trigger')); - await TestElement.byCss('.mat-select-panel').waitVisible(); - } - - async clickDeletePermissionButton(username: string): Promise { - const userOrGroupName = TestElement.byCss(`[data-automation-id="adf-delete-permission-button-${username}"]`); - await userOrGroupName.waitPresent(); - await userOrGroupName.click(); - } - - async checkUserIsDeleted(username: string): Promise { - const userOrGroupName = TestElement.byCss('div[data-automation-id="' + username + '"]'); - await userOrGroupName.waitNotPresent(); - } - - async noPermissionContent(): Promise { - const noPermission = TestElement.byCss('.adf-no-permission__template--text'); - return noPermission.getText(); - } - - async checkPermissionManagerDisplayed(): Promise { - await TestElement.byId(this.rootElement).waitVisible(); - } - - async checkPermissionListDisplayed(): Promise { - await browser.sleep(500); - await this.localPermissionList.waitVisible(); - } - - async isInherited(): Promise { - const inheritButton = TestElement.byCss(this.inheritedButton); - await inheritButton.waitVisible(); - return (await inheritButton.getAttribute('class')).indexOf('mat-checked') !== -1; - } - - async toggleInheritPermission(): Promise { - const inheritButton = TestElement.byCss(`${this.inheritedButton} label`); - await inheritButton.click(); - } -} diff --git a/e2e/content-services/upload/uploader-component.e2e.ts b/e2e/content-services/upload/uploader-component.e2e.ts index f61a66d915..8cb8d80332 100644 --- a/e2e/content-services/upload/uploader-component.e2e.ts +++ b/e2e/content-services/upload/uploader-component.e2e.ts @@ -17,14 +17,7 @@ import { browser, by, element } from 'protractor'; -import { createApiService, - DropActions, - LoginPage, - StringUtil, - UploadActions, - UserModel, - UsersActions -} from '@alfresco/adf-testing'; +import { createApiService, DropActions, LoginPage, StringUtil, UploadActions, UserModel, UsersActions } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../core/pages/content-services.page'; import { UploadDialogPage } from '../../core/pages/dialog/upload-dialog.page'; import { UploadTogglesPage } from '../../core/pages/dialog/upload-toggles.page'; @@ -32,7 +25,6 @@ import { FileModel } from '../../models/ACS/file.model'; import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; describe('Upload component', () => { - const contentServicesPage = new ContentServicesPage(); const uploadDialog = new UploadDialogPage(); const uploadToggles = new UploadTogglesPage(); @@ -93,8 +85,7 @@ describe('Upload component', () => { for (const node of nodeList) { try { await uploadActions.deleteFileOrFolder(node); - } catch (error) { - } + } catch (error) {} } }); @@ -226,14 +217,6 @@ describe('Upload component', () => { await uploadDialog.dialogIsNotDisplayed(); await contentServicesPage.checkContentIsDisplayed(fileWithSpecificSize.name); }); - - it('[C91318] Should Enable/Disable upload button when change the disable property', async () => { - await uploadToggles.clickCheckboxDisableUpload(); - await expect(await contentServicesPage.uploadButtonIsEnabled()).toBe(false, 'Upload button is enabled'); - - await uploadToggles.clickCheckboxDisableUpload(); - await expect(await contentServicesPage.uploadButtonIsEnabled()).toBe(true, 'Upload button not enabled'); - }); }); it('[C260171] Should upload only the extension filter allowed when Enable extension filter is enabled', async () => { diff --git a/e2e/core/infinite-scrolling.e2e.ts b/e2e/core/infinite-scrolling.e2e.ts deleted file mode 100644 index 64feb5310b..0000000000 --- a/e2e/core/infinite-scrolling.e2e.ts +++ /dev/null @@ -1,119 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createApiService, - LocalStorageUtil, - LoginPage, - StringUtil, - UploadActions, - UserModel, - UsersActions -} from '@alfresco/adf-testing'; -import { FolderModel } from '../models/ACS/folder.model'; -import { ContentServicesPage } from './pages/content-services.page'; -import { InfinitePaginationPage } from './pages/infinite-pagination.page'; -import { NavigationBarPage } from './pages/navigation-bar.page'; -import { NodeEntry } from '@alfresco/js-api'; - -describe('Enable infinite scrolling', () => { - const loginPage = new LoginPage(); - const contentServicesPage = new ContentServicesPage(); - const infinitePaginationPage = new InfinitePaginationPage(); - const navigationBarPage = new NavigationBarPage(); - - const apiService = createApiService(); - const usersActions = new UsersActions(apiService); - - const acsUser = new UserModel(); - const folderModel = new FolderModel({ name: 'folderOne' }); - - let fileNames = []; - const nrOfFiles = 30; - let deleteFileNames = []; - const nrOfDeletedFiles = 22; - let deleteUploaded: NodeEntry; - const pageSize = 20; - let emptyFolderModel: NodeEntry; - - const files = { - base: 'newFile', - extension: '.txt' - }; - - beforeAll(async () => { - const uploadActions = new UploadActions(apiService); - - await apiService.loginWithProfile('admin'); - - await usersActions.createUser(acsUser); - - await loginPage.login(acsUser.username, acsUser.password); - - fileNames = StringUtil.generateFilesNames(1, nrOfFiles, files.base, files.extension); - deleteFileNames = StringUtil.generateFilesNames(1, nrOfDeletedFiles, files.base, files.extension); - - await apiService.login(acsUser.username, acsUser.password); - - const folderUploadedModel = await uploadActions.createFolder(folderModel.name, '-my-'); - emptyFolderModel = await uploadActions.createFolder('emptyFolder', '-my-'); - - await uploadActions.createEmptyFiles(fileNames, folderUploadedModel.entry.id); - deleteUploaded = await uploadActions.createFolder('deleteFolder', '-my-'); - - await uploadActions.createEmptyFiles(deleteFileNames, deleteUploaded.entry.id); - }); - - afterAll(async () => { - await navigationBarPage.clickLogoutButton(); - }); - - beforeEach(async () => { - await navigationBarPage.navigateToContentServices(); - await contentServicesPage.contentList.dataTablePage().waitTillContentLoaded(); - }); - - it('[C299201] Should use default pagination settings for infinite pagination', async () => { - await contentServicesPage.openFolder(folderModel.name); - - await contentServicesPage.enableInfiniteScrolling(); - await contentServicesPage.contentList.dataTablePage().waitTillContentLoadedInfinitePagination(); - - await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(pageSize); - await infinitePaginationPage.clickLoadMoreButton(); - await contentServicesPage.contentList.dataTablePage().waitTillContentLoadedInfinitePagination(); - - await infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed(); - await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(nrOfFiles); - }); - - it('[C299202] Should not display load more button when all the files are already displayed', async () => { - await LocalStorageUtil.setUserPreference('paginationSize', '30'); - - await contentServicesPage.openFolder(folderModel.name); - - await contentServicesPage.enableInfiniteScrolling(); - await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(nrOfFiles); - - await infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed(); - }); - - it('[C299203] Should not display load more button when a folder is empty', async () => { - await contentServicesPage.openFolder(emptyFolderModel.entry.name); - - await infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed(); - }); -}); diff --git a/e2e/core/pages/content-services.page.ts b/e2e/core/pages/content-services.page.ts index 4cd1703cec..a8d3425ed2 100644 --- a/e2e/core/pages/content-services.page.ts +++ b/e2e/core/pages/content-services.page.ts @@ -16,7 +16,7 @@ */ import { DropActions, BrowserActions, BrowserVisibility, DocumentListPage, DropdownPage, Logger } from '@alfresco/adf-testing'; -import { $$, browser, by, element, protractor, $ } from 'protractor'; +import { $$, browser, protractor, $ } from 'protractor'; import { FolderDialogPage } from './dialog/folder-dialog.page'; import { NavigationBarPage } from './navigation-bar.page'; import * as path from 'path'; @@ -51,17 +51,11 @@ export class ContentServicesPage { createdByColumnHeader = 'createdByUser.displayName'; createdColumnHeader = 'createdAt'; deleteContentElement = $('button[data-automation-id="Delete"]'); - metadataAction = $('button[data-automation-id="Info"]'); versionManagerAction = $('button[data-automation-id="Manage versions"]'); downloadContent = $('button[data-automation-id="Download"]'); downloadButton = $('button[title="Download"]'); multiSelectToggle = $('[data-automation-id="multiSelectToggle"]'); selectionModeDropdown = $('.mat-select[placeholder="Selection Mode"]'); - siteListDropdown = new DropdownPage($(`mat-select[data-automation-id='site-my-files-option']`)); - - async pressContextMenuActionNamed(actionName: string): Promise { - await BrowserActions.clickExecuteScript(`button[data-automation-id="context-${actionName}"]`); - } async isContextActionEnabled(actionName: string): Promise { const actionButton = $(`button[data-automation-id="context-${actionName}"`); @@ -73,43 +67,17 @@ export class ContentServicesPage { return this.contentList; } - async checkDeleteIsDisabled(content: string): Promise { - await this.contentList.clickOnActionMenu(content); - const disabledDelete = $(`button[data-automation-id='Delete'][disabled='true']`); - await BrowserVisibility.waitUntilElementIsVisible(disabledDelete); - } - async deleteContent(content: string): Promise { await this.contentList.clickOnActionMenu(content); await BrowserActions.click(this.deleteContentElement); await this.checkContentIsNotDisplayed(content); } - async metadataContent(content: string): Promise { - await this.contentList.clickOnActionMenu(content); - await BrowserActions.click(this.metadataAction); - } - async versionManagerContent(content: string): Promise { await this.contentList.clickOnActionMenu(content); await BrowserActions.click(this.versionManagerAction); } - async clickFileHyperlink(fileName: string): Promise { - const hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); - await BrowserActions.click(hyperlink); - } - - async checkFileHyperlinkIsEnabled(fileName: string): Promise { - const hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); - await BrowserVisibility.waitUntilElementIsVisible(hyperlink); - } - - async clickHyperlinkNavigationToggle(): Promise { - const hyperlinkToggle = element(by.cssContainingText('.mat-slide-toggle-content', 'Hyperlink navigation')); - await BrowserActions.click(hyperlinkToggle); - } - async getElementsDisplayedId() { return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.nodeId); } @@ -267,25 +235,11 @@ export class ContentServicesPage { await BrowserVisibility.waitUntilElementIsClickable(this.uploadFileButton); } - async uploadButtonIsEnabled(): Promise { - return this.uploadFileButton.isEnabled(); - } - - async enableInfiniteScrolling(): Promise { - const infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); - await BrowserActions.click(infiniteScrollButton); - } - async enableMediumTimeFormat(): Promise { const mediumTimeFormat = $('#enableMediumTimeFormat'); await BrowserActions.click(mediumTimeFormat); } - async enableThumbnails(): Promise { - const thumbnailSlide = $('#adf-thumbnails-upload-switch'); - await BrowserActions.click(thumbnailSlide); - } - async checkPaginationIsNotDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.emptyPagination); } @@ -339,11 +293,6 @@ export class ContentServicesPage { await expect(await BrowserActions.getAttribute(this.emptyFolderImage, 'src')).toContain(url); } - async getRowIconImageUrl(fileName: string): Promise { - const iconRow = $(`.app-document-list-container div.adf-datatable-cell[data-automation-id="${fileName}"] img`); - return BrowserActions.getAttribute(iconRow, 'src'); - } - async getAttributeValueForElement(elementName: string, propertyName: string): Promise { const elementSize = $( `.app-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"][title="${propertyName}"] span` @@ -351,10 +300,6 @@ export class ContentServicesPage { return BrowserActions.getText(elementSize); } - async checkSelectedSiteIsDisplayed(siteName: string): Promise { - await this.siteListDropdown.checkOptionIsSelected(siteName); - } - async clickDownloadButton(): Promise { await BrowserActions.closeMenuAndDialogs(); await BrowserActions.click(this.downloadButton); diff --git a/e2e/core/pages/dialog/upload-toggles.page.ts b/e2e/core/pages/dialog/upload-toggles.page.ts index 7a7e52ffcd..b4916c6928 100644 --- a/e2e/core/pages/dialog/upload-toggles.page.ts +++ b/e2e/core/pages/dialog/upload-toggles.page.ts @@ -27,7 +27,6 @@ export class UploadTogglesPage { versioningToggle = $('#adf-version-upload-switch'); extensionAcceptedField = $('input[data-automation-id="accepted-files-type"]'); maxSizeField = $('input[data-automation-id="max-files-size"]'); - disableUploadCheckbox = $('[id="adf-disable-upload"]'); async enableMultipleFileUpload(): Promise { await browser.executeScript('arguments[0].scrollIntoView()', this.multipleFileUploadToggle); @@ -79,10 +78,6 @@ export class UploadTogglesPage { await this.togglePage.disableToggle(this.versioningToggle); } - async clickCheckboxDisableUpload(): Promise { - await BrowserActions.click(this.disableUploadCheckbox); - } - async addExtension(extension: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.extensionAcceptedField); await this.extensionAcceptedField.sendKeys(',' + extension); diff --git a/e2e/core/pages/infinite-pagination.page.ts b/e2e/core/pages/infinite-pagination.page.ts deleted file mode 100644 index 0225f96c95..0000000000 --- a/e2e/core/pages/infinite-pagination.page.ts +++ /dev/null @@ -1,41 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ElementFinder, $, $$ } from 'protractor'; -import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; - -export class InfinitePaginationPage { - - rootElement: ElementFinder; - loadMoreButton: ElementFinder; - loading = $('[data-automation-id="adf-infinite-pagination-spinner"]'); - - constructor(rootElement = $$('adf-infinite-pagination').first()) { - this.rootElement = rootElement; - this.loadMoreButton = this.rootElement.$('button[data-automation-id="adf-infinite-pagination-button"]'); - } - - async clickLoadMoreButton(): Promise { - await BrowserActions.click(this.loadMoreButton); - await BrowserVisibility.waitUntilElementIsNotVisible(this.loading); - } - - async checkLoadMoreButtonIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.loadMoreButton); - } - -} diff --git a/e2e/core/pages/metadata-view.page.ts b/e2e/core/pages/metadata-view.page.ts index 058d7ed65b..7edf5cc0f2 100644 --- a/e2e/core/pages/metadata-view.page.ts +++ b/e2e/core/pages/metadata-view.page.ts @@ -38,7 +38,6 @@ export class MetadataViewPage { displayEmptySwitch = $(`#adf-metadata-empty`); readonlySwitch = $(`#adf-metadata-readonly`); multiSwitch = $(`#adf-metadata-multi`); - presetSwitch = $('#adf-toggle-custom-preset'); defaultPropertiesSwitch = $('#adf-metadata-default-properties'); closeButton = element(by.cssContainingText('button.mat-button span', 'Close')); displayAspect = $(`input[data-placeholder='Display Aspect']`); @@ -143,25 +142,12 @@ export class MetadataViewPage { await BrowserVisibility.waitUntilElementIsPresent(editPropertyIcon); } - async clickResetButton(): Promise { - const clearPropertyIcon = $('button[data-automation-id="reset-metadata"]'); - await BrowserActions.click(clearPropertyIcon); - } - async enterPropertyText(propertyName: string, text: string | number): Promise { const textField = $('input[data-automation-id="card-textitem-value-' + propertyName + '"]'); await BrowserActions.clearSendKeys(textField, text.toString()); await textField.sendKeys(protractor.Key.ENTER); } - async enterPresetText(text: string): Promise { - const presetField = $('input[data-automation-id="adf-text-custom-preset"]'); - await BrowserActions.clearSendKeys(presetField, text.toString()); - await presetField.sendKeys(protractor.Key.ENTER); - const applyButton = $('button[id="adf-metadata-aplly"]'); - await BrowserActions.click(applyButton); - } - async enterDescriptionText(text: string): Promise { const textField = $('textarea[data-automation-id="card-textitem-value-properties.cm:description"]'); await BrowserActions.clearSendKeys(textField, text); @@ -205,13 +191,6 @@ export class MetadataViewPage { await expect(await BrowserActions.getAttribute(group, 'class')).not.toContain('mat-expanded'); } - async getMetadataGroupTitle(groupName: string): Promise { - const group = $( - 'mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header > span > mat-panel-title' - ); - return BrowserActions.getText(group); - } - async checkPropertyIsVisible(propertyName: string, type: string): Promise { const property = $('[data-automation-id="card-' + type + '-label-' + propertyName + '"]'); await BrowserVisibility.waitUntilElementIsVisible(property); @@ -292,10 +271,6 @@ export class MetadataViewPage { await TestElement.byCss('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]').waitNotVisible(); } - async clickCloseButton(): Promise { - await BrowserActions.click(this.closeButton); - } - async typeAspectName(aspectName): Promise { await BrowserActions.clearSendKeys(this.displayAspect, aspectName); } diff --git a/e2e/core/pages/navigation-bar.page.ts b/e2e/core/pages/navigation-bar.page.ts index e0876a21d1..e19839442b 100644 --- a/e2e/core/pages/navigation-bar.page.ts +++ b/e2e/core/pages/navigation-bar.page.ts @@ -24,7 +24,7 @@ export class NavigationBarPage { processServicesNestedButton = this.linkMenuChildrenContainer.$('.app-sidenav-link[data-automation-id="App"]'); processServicesCloudHomeButton = this.linkMenuChildrenContainer.$('.app-sidenav-link[data-automation-id="Home"]'); formButton = this.linkMenuChildrenContainer.$('.app-sidenav-link[data-automation-id="Form"]'); - logoutSection = $('div[data-automation-id="adf-logout-section"]'); + logoutSection = $('[data-automation-id="adf-logout-section"]'); personalFiles = $('div [title="Personal Files"]'); getMenuItemLocator = (title: string) => $(`.app-sidenav-link[data-automation-id="${title}"]`); diff --git a/e2e/core/user-info-component-cloud.e2e.ts b/e2e/core/user-info-component-cloud.e2e.ts deleted file mode 100644 index cea825224b..0000000000 --- a/e2e/core/user-info-component-cloud.e2e.ts +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createApiService, LoginPage, SettingsPage, UserInfoPage, UserModel, UsersActions } from '@alfresco/adf-testing'; -import { browser } from 'protractor'; - -describe('User Info - SSO', () => { - const settingsPage = new SettingsPage(); - const loginSSOPage = new LoginPage(); - const userInfoPage = new UserInfoPage(); - - const apiService = createApiService({ authType: 'OAUTH', provider: 'ECM' }); - const usersActions = new UsersActions(apiService); - - let identityUser: UserModel; - - beforeAll(async () => { - await apiService.login(browser.params.testConfig.users.admin.username, browser.params.testConfig.users.admin.password); - - identityUser = await usersActions.createUser(); - - await settingsPage.setProviderEcmSso( - browser.params.testConfig.appConfig.ecmHost, - browser.params.testConfig.appConfig.oauth2.host, - browser.params.testConfig.appConfig.identityHost, - false, - true, - browser.params.testConfig.appConfig.oauth2.clientId - ); - - await loginSSOPage.loginSSOIdentityService(identityUser.username, identityUser.password); - }); - - it('[C290066] Should display UserInfo when login using SSO', async () => { - await userInfoPage.clickUserProfile(); - await expect(await userInfoPage.getSsoHeaderTitle()).toEqual(identityUser.firstName + ' ' + identityUser.lastName); - await expect(await userInfoPage.getSsoTitle()).toEqual(identityUser.firstName + ' ' + identityUser.lastName); - await expect(await userInfoPage.getSsoEmail()).toEqual(identityUser.email); - await userInfoPage.closeUserProfile(); - await userInfoPage.dialogIsNotDisplayed(); - }); -}); diff --git a/e2e/core/viewer/viewer-content-services-component.e2e.ts b/e2e/core/viewer/viewer-content-services-component.e2e.ts index f0aadfd7fb..d3d24a9c21 100644 --- a/e2e/core/viewer/viewer-content-services-component.e2e.ts +++ b/e2e/core/viewer/viewer-content-services-component.e2e.ts @@ -16,14 +16,7 @@ */ import { browser, by, element, protractor } from 'protractor'; -import { createApiService, - BrowserActions, - LoginPage, - UploadActions, - UserModel, - UsersActions, - ViewerPage -} from '@alfresco/adf-testing'; +import { createApiService, BrowserActions, LoginPage, UploadActions, UserModel, UsersActions, ViewerPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../core/pages/content-services.page'; import { FileModel } from '../../models/ACS/file.model'; import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; @@ -271,19 +264,6 @@ describe('Content Services Viewer', () => { await viewerPage.clickCloseButton(); }); - it('[C291903] Should display the buttons in order in the adf viewer toolbar', async () => { - await contentServicesPage.doubleClickRow(pdfFile.name); - await viewerPage.waitTillContentLoaded(); - - await viewerPage.checkLeftSideBarIsNotDisplayed(); - await viewerPage.clickLeftSidebarButton(); - await viewerPage.checkLeftSideBarIsDisplayed(); - await viewerPage.enableMoreActionsMenu(); - await viewerPage.checkToolbarIsDisplayed(); - await expect(await viewerPage.getLastButtonTitle()).toEqual(await viewerPage.getMoreActionsMenuTitle()); - await viewerPage.clickCloseButton(); - }); - it('[C260053] Should display first page, toolbar and pagination when opening a .docx file', async () => { await contentServicesPage.doubleClickRow(docxFile.name); await viewerPage.waitTillContentLoaded(); @@ -318,7 +298,7 @@ describe('Content Services Viewer', () => { await viewerPage.checkZoomInButtonIsNotDisplayed(); await viewerPage.checkUnknownFormatIsDisplayed(); - await expect(await viewerPage.getUnknownFormatMessage()).toBe('Couldn\'t load preview. Unknown format.'); + await expect(await viewerPage.getUnknownFormatMessage()).toBe("Couldn't load preview. Unknown format."); await viewerPage.clickCloseButton(); }); @@ -434,7 +414,7 @@ describe('Content Services Viewer', () => { await contentServicesPage.doubleClickRow(unsupportedFileName); await viewerPage.waitTillContentLoaded(); await viewerPage.checkUnknownFormatIsDisplayed(); - await expect(await viewerPage.getUnknownFormatMessage()).toBe('Couldn\'t load preview. Unknown format.'); + await expect(await viewerPage.getUnknownFormatMessage()).toBe("Couldn't load preview. Unknown format."); await viewerPage.clickCloseButton(); } diff --git a/e2e/core/viewer/viewer-custom-toolbar-info-drawer.e2e.ts b/e2e/core/viewer/viewer-custom-toolbar-info-drawer.e2e.ts deleted file mode 100644 index 083a3d419d..0000000000 --- a/e2e/core/viewer/viewer-custom-toolbar-info-drawer.e2e.ts +++ /dev/null @@ -1,114 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { browser } from 'protractor'; -import { createApiService, FileBrowserUtil, LoginPage, UploadActions, UserModel, UsersActions, ViewerPage } from '@alfresco/adf-testing'; -import { ContentServicesPage } from '../../core/pages/content-services.page'; -import { FileModel } from '../../models/ACS/file.model'; -import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { VersionManagePage } from '../pages/version-manager.page'; - -describe('Viewer', () => { - - const navigationBarPage = new NavigationBarPage(); - const viewerPage = new ViewerPage(); - const loginPage = new LoginPage(); - const contentServicesPage = new ContentServicesPage(); - - const apiService = createApiService(); - const uploadActions = new UploadActions(apiService); - const usersActions = new UsersActions(apiService); - - const versionManagePage = new VersionManagePage(); - const acsUser = new UserModel(); - let txtFileUploaded; - - const txtFileInfo = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_path - }); - - const fileModelVersionTwo = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_location - }); - - beforeAll(async () => { - await apiService.loginWithProfile('admin'); - await usersActions.createUser(acsUser); - - await apiService.login(acsUser.username, acsUser.password); - - txtFileUploaded = await uploadActions.uploadFile(txtFileInfo.location, txtFileInfo.name, '-my-'); - - await loginPage.login(acsUser.username, acsUser.password); - }); - - afterAll(async () => { - await apiService.loginWithProfile('admin'); - await uploadActions.deleteFileOrFolder(txtFileUploaded.entry.id); - await navigationBarPage.clickLogoutButton(); - }); - - beforeEach(async () => { - await contentServicesPage.goToDocumentList(); - await contentServicesPage.doubleClickRow(txtFileUploaded.entry.name); - await viewerPage.waitTillContentLoaded(); - }); - - afterEach(async () => { - await viewerPage.clickCloseButton(); - }); - - it('[C260096] Should the Viewer able to accept a customToolbar', async () => { - await viewerPage.clickLeftSidebarButton(); - await viewerPage.checkLeftSideBarIsDisplayed(); - await viewerPage.checkToolbarIsDisplayed(); - await viewerPage.enableCustomToolbar(); - await viewerPage.checkCustomToolbarIsDisplayed(); - await viewerPage.disableCustomToolbar(); - }); - - it('[C260097] Should the viewer able to show a custom info-drawer when the sidebarTemplate is set', async () => { - await viewerPage.clickInfoButton(); - await viewerPage.checkInfoSideBarIsDisplayed(); - await viewerPage.clickOnTab('Comments'); - await viewerPage.checkTabIsActive('Comments'); - await viewerPage.clickOnTab('Properties'); - await viewerPage.checkTabIsActive('Properties'); - await viewerPage.clickOnTab('Versions'); - await viewerPage.checkTabIsActive('Versions'); - }); - - it('[C362242] Should the Viewer be able to view a previous version of a file', async () => { - await contentServicesPage.versionManagerContent(txtFileInfo.name); - await versionManagePage.showNewVersionButton.click(); - await versionManagePage.uploadNewVersionFile(fileModelVersionTwo.location); - await versionManagePage.closeVersionDialog(); - await contentServicesPage.doubleClickRow(txtFileUploaded.entry.name); - await viewerPage.waitTillContentLoaded(); - await viewerPage.clickInfoButton(); - await viewerPage.clickOnTab('Versions'); - await versionManagePage.viewFileVersion('1.0'); - await viewerPage.expectUrlToContain('1.0'); - }); - - it('[C362265] Should the Viewer be able to download a previous version of a file', async () => { - await viewerPage.clickDownloadButton(); - await FileBrowserUtil.isFileDownloaded(txtFileInfo.name); - }); -}); diff --git a/e2e/core/viewer/viewer-properties.e2e.ts b/e2e/core/viewer/viewer-properties.e2e.ts deleted file mode 100644 index ac590a1153..0000000000 --- a/e2e/core/viewer/viewer-properties.e2e.ts +++ /dev/null @@ -1,170 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { browser } from 'protractor'; -import { createApiService, - LoginPage, - UploadActions, - UserModel, - UsersActions, - ViewerPage -} from '@alfresco/adf-testing'; -import { ContentServicesPage } from '../../core/pages/content-services.page'; -import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; -import { FileModel } from '../../models/ACS/file.model'; - -describe('Viewer', () => { - - const acsUser = new UserModel(); - const viewerPage = new ViewerPage(); - const contentServicesPage = new ContentServicesPage(); - const loginPage = new LoginPage(); - const navigationBarPage = new NavigationBarPage(); - - const pngFile = new FileModel({ - name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name, - location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path - }); - - const fileForOverlay = new FileModel({ - name: 'fileForOverlay.png', - location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path - }); - const apiService = createApiService(); - const usersActions = new UsersActions(apiService); - const uploadActions = new UploadActions(apiService); - - beforeAll(async () => { - await apiService.loginWithProfile('admin'); - - await usersActions.createUser(acsUser); - - await apiService.login(acsUser.username, acsUser.password); - - let pngFileUploaded = await uploadActions.uploadFile(pngFile.location, pngFile.name, '-my-'); - Object.assign(pngFile, pngFileUploaded.entry); - - pngFileUploaded = await uploadActions.uploadFile(fileForOverlay.location, fileForOverlay.name, '-my-'); - Object.assign(fileForOverlay, pngFileUploaded.entry); - - await loginPage.login(acsUser.username, acsUser.password); - - await contentServicesPage.goToDocumentList(); - }); - - afterAll(async () => { - await apiService.loginWithProfile('admin'); - await uploadActions.deleteFileOrFolder(pngFile.getId()); - await navigationBarPage.clickLogoutButton(); - }); - - describe('properties', () => { - - beforeAll(async () => { - await viewerPage.viewFile(pngFile.name); - - await viewerPage.clickLeftSidebarButton(); - await viewerPage.checkLeftSideBarIsDisplayed(); - }); - - afterAll(async () => { - await viewerPage.clickCloseButton(); - }); - - it('[C260066] Should Show/Hide viewer toolbar when showToolbar is true/false', async () => { - await viewerPage.checkToolbarIsDisplayed(); - await viewerPage.disableToolbar(); - await viewerPage.checkToolbarIsNotDisplayed(); - await viewerPage.enableToolbar(); - }); - - it('[C260076] Should Show/Hide back button when allowGoBack is true/false', async () => { - await viewerPage.checkGoBackIsDisplayed(); - await viewerPage.disableGoBack(); - await viewerPage.checkGoBackIsNotDisplayed(); - await viewerPage.enableGoBack(); - }); - - it('[C260077] Should Show toolbar options dropdown when adf-viewer-open-with directive is used', async () => { - await viewerPage.checkToolbarOptionsIsNotDisplayed(); - await viewerPage.enableToolbarOptions(); - await viewerPage.checkToolbarOptionsIsDisplayed(); - await viewerPage.disableToolbarOptions(); - }); - - it('[C260079] Should Show/Hide download button when allowDownload is true/false', async () => { - await viewerPage.checkDownloadButtonIsDisplayed(); - await viewerPage.disableDownload(); - await viewerPage.checkDownloadButtonIsNotDisplayed(); - await viewerPage.enableDownload(); - }); - - it('[C260082] Should Show/Hide print button when allowPrint is true/false', async () => { - await viewerPage.checkPrintButtonIsDisplayed(); - await viewerPage.disablePrint(); - await viewerPage.checkPrintButtonIsNotDisplayed(); - await viewerPage.enablePrint(); - }); - - it('[C260092] Should show adf-viewer-toolbar-actions directive buttons when adf-viewer-toolbar-actions is used', async () => { - await viewerPage.checkMoreActionsDisplayed(); - - await viewerPage.disableMoreActions(); - - await viewerPage.checkMoreActionsIsNotDisplayed(); - - await viewerPage.enableMoreActions(); - }); - - it('[C260090] Should showSidebar allow right info-drawer to be shown', async () => { - await viewerPage.clickToggleRightSidebar(); - await viewerPage.checkInfoSideBarIsDisplayed(); - - await viewerPage.clickToggleRightSidebar(); - await viewerPage.checkInfoSideBarIsNotDisplayed(); - }); - - it('[C286442] Should showLeftSidebar allow left info-drawer to be shown', async () => { - await viewerPage.clickToggleLeftSidebar(); - await viewerPage.checkLeftSideBarIsNotDisplayed(); - await viewerPage.clickLeftSidebarButton(); - await viewerPage.checkLeftSideBarIsDisplayed(); - }); - - it('[C260089] Should Show/Hide info-drawer if allowSidebar true/false', async () => { - await viewerPage.clickInfoButton(); - - await viewerPage.checkInfoSideBarIsDisplayed(); - await viewerPage.checkInfoButtonIsDisplayed(); - - await viewerPage.disableAllowSidebar(); - - await viewerPage.checkInfoButtonIsNotDisplayed(); - await viewerPage.checkInfoSideBarIsNotDisplayed(); - }); - - it('[C286596] Should Show/Hide left info-drawer if allowLeftSidebar true/false', async () => { - await viewerPage.checkLeftSideBarIsDisplayed(); - await viewerPage.checkLeftSideBarButtonIsDisplayed(); - - await viewerPage.disableAllowLeftSidebar(); - - await viewerPage.checkLeftSideBarButtonIsNotDisplayed(); - await viewerPage.checkLeftSideBarIsNotDisplayed(); - }); - }); -}); diff --git a/e2e/insights/analytics-component.e2e.ts b/e2e/insights/analytics-component.e2e.ts deleted file mode 100644 index fdb809fb9a..0000000000 --- a/e2e/insights/analytics-component.e2e.ts +++ /dev/null @@ -1,61 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { createApiService, LoginPage, UserModel, UsersActions } from '@alfresco/adf-testing'; -import { NavigationBarPage } from '../core/pages/navigation-bar.page'; -import { AnalyticsPage } from '../process-services/pages/analytics.page'; -import { ProcessServicesPage } from '../process-services/pages/process-services.page'; -import { ProcessServiceTabBarPage } from '../process-services/pages/process-service-tab-bar.page'; - -describe('Analytics Smoke Test', () => { - - const loginPage = new LoginPage(); - const navigationBarPage = new NavigationBarPage(); - const processServiceTabBarPage = new ProcessServiceTabBarPage(); - const analyticsPage = new AnalyticsPage(); - const processServicesPage = new ProcessServicesPage(); - - const reportTitle = 'New Title'; - let procUserModel: UserModel; - - const apiService = createApiService(); - const usersActions = new UsersActions(apiService); - - beforeAll(async () => { - await apiService.loginWithProfile('admin'); - - procUserModel = await usersActions.createUser(); - - await loginPage.login(procUserModel.username, procUserModel.password); - }); - - afterAll(async () => { - await apiService.loginWithProfile('admin'); - await usersActions.deleteTenant(procUserModel.tenantId); - }); - - it('[C260346] Should be able to change title of a report', async () => { - await navigationBarPage.navigateToProcessServicesPage(); - await processServicesPage.checkApsContainer(); - await processServicesPage.goToApp('Task App'); - await processServiceTabBarPage.clickReportsButton(); - await analyticsPage.checkNoReportMessage(); - await analyticsPage.getReport('Process definition heat map'); - await analyticsPage.changeReportTitle(reportTitle); - await expect(await analyticsPage.getReportTitle()).toEqual(reportTitle); - }); -}); diff --git a/e2e/process-services/pages/analytics.page.ts b/e2e/process-services/pages/analytics.page.ts deleted file mode 100644 index c77d2af0c8..0000000000 --- a/e2e/process-services/pages/analytics.page.ts +++ /dev/null @@ -1,54 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { element, by, protractor, $ } from 'protractor'; -import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing'; - -export class AnalyticsPage { - - toolbarTitleInput = $('input[data-automation-id="reportName"]'); - toolbarTitleContainer = $('adf-toolbar-title'); - toolbarTitle = element(by.xpath('//mat-toolbar/adf-toolbar-title/div/h4')); - reportMessage = $('div[class="ng-star-inserted"] span'); - - async getReport(title: string): Promise { - const reportTitle = $(`mat-icon[data-automation-id="${title}_filter"]`); - await BrowserActions.click(reportTitle); - } - - async changeReportTitle(title): Promise { - await BrowserActions.click(this.toolbarTitleContainer); - await BrowserActions.click(this.toolbarTitleInput); - await this.clearReportTitle(); - await this.toolbarTitleInput.sendKeys(title); - await this.toolbarTitleInput.sendKeys(protractor.Key.ENTER); - } - - async clearReportTitle(): Promise { - await BrowserActions.clearSendKeys(this.toolbarTitleInput, ''); - await BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitleInput); - } - - async getReportTitle(): Promise { - return BrowserActions.getText(this.toolbarTitle); - } - - async checkNoReportMessage(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.reportMessage); - } - -} diff --git a/lib/testing/src/lib/protractor/content-services/actions/permission.actions.ts b/lib/testing/src/lib/protractor/content-services/actions/permission.actions.ts deleted file mode 100644 index 106030e769..0000000000 --- a/lib/testing/src/lib/protractor/content-services/actions/permission.actions.ts +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { NodeEntry, NodeBodyUpdate, NodesApi } from '@alfresco/js-api'; -import { ApiService } from '../../../shared/api/api.service'; - -export class PermissionActions { - api: ApiService; - nodesApi: NodesApi; - - constructor(apiService: ApiService) { - this.api = apiService; - this.nodesApi = new NodesApi(apiService.getInstance()); - } - - addRoleForUser(userName: string, role: string, nodeToUpdate: NodeEntry): Promise { - const payload: NodeBodyUpdate = { - permissions: { - locallySet: [ - { - accessStatus: 'ALLOWED', - name: role, - authorityId: userName - } - ] - } - }; - return this.nodesApi.updateNode(nodeToUpdate.entry.id, payload); - } - - disableInheritedPermissionsForNode(nodeId: string): Promise { - const nodeBody = { permissions: { isInheritanceEnabled: false } }; - return this.nodesApi.updateNode(nodeId, nodeBody, { include: ['permissions'] }); - } -} diff --git a/lib/testing/src/lib/protractor/content-services/actions/public-api.ts b/lib/testing/src/lib/protractor/content-services/actions/public-api.ts index 6b40791f83..7d38516d60 100644 --- a/lib/testing/src/lib/protractor/content-services/actions/public-api.ts +++ b/lib/testing/src/lib/protractor/content-services/actions/public-api.ts @@ -16,5 +16,4 @@ */ export * from './upload.actions'; -export * from './permission.actions'; export * from './model.actions'; diff --git a/lib/testing/src/lib/protractor/content-services/dialog/add-permissions-dialog.page.ts b/lib/testing/src/lib/protractor/content-services/dialog/add-permissions-dialog.page.ts deleted file mode 100644 index 36509d1d66..0000000000 --- a/lib/testing/src/lib/protractor/content-services/dialog/add-permissions-dialog.page.ts +++ /dev/null @@ -1,99 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { $, by, element, $$ } from 'protractor'; -import { BrowserActions } from '../../core/utils/browser-actions'; -import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; -import { BrowserVisibility } from '../../core/utils/browser-visibility'; -import { DropdownPage } from '../../core/pages/material/dropdown.page'; -import { TestElement } from '../../core/test-element'; - -const column = { - role: 'Role' -}; - -export class AddPermissionsDialogPage { - - dataTableComponentPage: DataTableComponentPage = new DataTableComponentPage(); - userRoleDataTableComponentPage: DataTableComponentPage = new DataTableComponentPage($('[data-automation-id="adf-user-role-selection-table"]')); - - addPermissionDialog = $('adf-add-permission-dialog'); - searchUserInput = $('#searchInput'); - searchResults = $('#adf-add-permission-authority-results #adf-search-results-content'); - addButton = $('[data-automation-id="add-permission-dialog-confirm-button"]'); - closeButton = $('#add-permission-dialog-close-button'); - - getRoleDropdownOptions() { - return $$('.mat-option-text'); - } - - async clickAddPermissionButton(): Promise { - await BrowserActions.clickExecuteScript('button[data-automation-id="adf-add-permission-button"]'); - } - - async checkAddPermissionDialogIsDisplayed() { - await BrowserVisibility.waitUntilElementIsVisible(this.addPermissionDialog); - } - - async checkSearchUserInputIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.searchUserInput); - } - - async searchUserOrGroup(name: string): Promise { - await BrowserActions.clearSendKeys(this.searchUserInput, name); - await this.dataTableComponentPage.waitTillContentLoaded(); - } - - async checkResultListIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.searchResults); - } - - async clickUserOrGroup(name: string): Promise { - const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); - await BrowserActions.click(userOrGroupName); - await BrowserActions.click(this.addButton); - } - - async getRoleCellValue(rowName: string): Promise { - const locator = this.dataTableComponentPage.getCellByRowContentAndColumn('Users and Groups', rowName, column.role); - return BrowserActions.getText(locator); - } - - async selectOption(name: string): Promise { - await new DropdownPage().selectOption(name); - } - - async checkUserOrGroupIsDisplayed(name: string): Promise { - const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); - await BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); - } - - async addButtonIsEnabled(): Promise { - return this.addButton.isEnabled(); - } - - async clickAddButton(): Promise { - await BrowserActions.click(this.addButton); - } - - async selectRole(name: string, role: string) { - const row = this.userRoleDataTableComponentPage.getRow('Users and Groups', name); - await BrowserActions.click(row.$('[id="adf-select-role-permission"] .mat-select-trigger')); - await TestElement.byCss('.mat-select-panel').waitVisible(); - await this.selectOption(role); - } -} diff --git a/lib/testing/src/lib/protractor/content-services/dialog/public-api.ts b/lib/testing/src/lib/protractor/content-services/dialog/public-api.ts index f8d68bd9cb..ca4d2840db 100644 --- a/lib/testing/src/lib/protractor/content-services/dialog/public-api.ts +++ b/lib/testing/src/lib/protractor/content-services/dialog/public-api.ts @@ -16,4 +16,3 @@ */ export * from './content-node-selector-dialog.page'; -export * from './add-permissions-dialog.page'; diff --git a/lib/testing/src/lib/protractor/core/actions/search.service.ts b/lib/testing/src/lib/protractor/core/actions/search.service.ts index f1acfb729e..e8f366bb5d 100644 --- a/lib/testing/src/lib/protractor/core/actions/search.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/search.service.ts @@ -19,7 +19,6 @@ import { ApiService } from '../../../shared/api/api.service'; import { ResultSetPaging, SearchApi } from '@alfresco/js-api'; import { Logger } from '../utils/logger'; import { ApiUtil } from '../../../shared/api/api.util'; -import { UserModel } from '../models/user.model'; export class SearchService { apiService: ApiService; @@ -50,45 +49,12 @@ export class SearchService { return ApiUtil.waitForApi(apiCall, predicate); } - async isUserSearchable(user: UserModel): Promise { - const query = this.createUserSearchQuery(user); - - const predicate = (result: ResultSetPaging) => result.list && result.list.entries.length > 0 && !!result.list.entries.find(({ entry }) => entry.properties['cm:email'] === user.email); - - return this.performSearch(query, predicate, 'Failed to search user'); - } - - private createUserSearchQuery(user: UserModel) { - return { - query: { - query: `email:*${user.email}* OR firstName:*${user.firstName}* OR lastName:*${user.lastName}*` - }, - include: [ - 'aspectNames', - 'properties' - ], - paging: { - maxItems: 1, - skipCount: 0 - }, - filterQueries: [ - { - query: `TYPE:'cm:authority'` - } - ] - }; - } - private createSearchQuery(name: string) { return { query: { query: `${name}*` }, - include: [ - 'path', - 'allowableOperations', - 'properties' - ], + include: ['path', 'allowableOperations', 'properties'], paging: { maxItems: 20, skipCount: 0 @@ -102,9 +68,7 @@ export class SearchService { } ], scope: { - locations: [ - 'nodes' - ] + locations: ['nodes'] } }; } diff --git a/lib/testing/src/lib/protractor/core/actions/users.actions.ts b/lib/testing/src/lib/protractor/core/actions/users.actions.ts index 3e851d1a36..d4e60cb58d 100644 --- a/lib/testing/src/lib/protractor/core/actions/users.actions.ts +++ b/lib/testing/src/lib/protractor/core/actions/users.actions.ts @@ -15,18 +15,8 @@ * limitations under the License. */ -import * as path from 'path'; -import * as fs from 'fs'; - import { browser } from 'protractor'; -import { - UserProfileApi, - AdminUsersApi, - AdminTenantsApi, - PeopleApi, - ImageUploadRepresentation, - UserRepresentation -} from '@alfresco/js-api'; +import { UserProfileApi, AdminUsersApi, AdminTenantsApi, PeopleApi, UserRepresentation } from '@alfresco/js-api'; import { IdentityService } from './identity/identity.service'; import { UserModel } from '../models/user.model'; import { ApiService } from '../../../shared/api/api.service'; @@ -34,7 +24,6 @@ import { Logger } from '../utils/logger'; import { Tenant } from '../models/tenant'; export class UsersActions { - api: ApiService; identityService: IdentityService; peopleApi: PeopleApi; @@ -61,7 +50,7 @@ export class UsersActions { const user = new UserModel({ ...(userModel ? userModel : {}) }); try { - if (this.api.apiService.isEcmConfiguration() || (this.api.apiService.isEcmBpmConfiguration())) { + if (this.api.apiService.isEcmConfiguration() || this.api.apiService.isEcmBpmConfiguration()) { Logger.log(`Create user ECM ${user.email}`); await this.peopleApi.createPerson({ id: user.username, @@ -80,7 +69,7 @@ export class UsersActions { } try { - if (this.api.apiService.isBpmConfiguration() || (this.api.apiService.isEcmBpmConfiguration())) { + if (this.api.apiService.isBpmConfiguration() || this.api.apiService.isEcmBpmConfiguration()) { Logger.log('Create user BPM'); if (user.tenantId) { const apsUser = await this.createApsUser(user.tenantId, user.email, user.firstName, user.lastName, user.password); @@ -117,11 +106,6 @@ export class UsersActions { return user; } - async createUserWithName(firstName: string, lastName: string): Promise { - const user = new UserModel({ firstName, lastName }); - return this.createUser(user); - } - async createTenantAndUser(email?: string, firstName?: string, lastName?: string, password?: string): Promise { const newTenant = await this.adminTenantsApi.createTenant(new Tenant()); @@ -137,7 +121,6 @@ export class UsersActions { } async createApsUser(tenantId?: number, email?: string, firstName?: string, lastName?: string, password?: string): Promise { - const user = new UserModel({ tenantId, email, @@ -149,13 +132,6 @@ export class UsersActions { return this.adminUsersApi.createNewUser(user.getAPSModel()); } - async changeProfilePictureAps(fileLocation: string): Promise { - const pathFile = path.join(browser.params.testConfig.main.rootPath + fileLocation); - const file = fs.createReadStream(pathFile); - - return this.userProfileApi.uploadProfilePicture(file); - } - async deleteTenant(tenantId: number) { await this.adminTenantsApi.deleteTenant(tenantId); } diff --git a/lib/testing/src/lib/protractor/core/pages/error.page.ts b/lib/testing/src/lib/protractor/core/pages/error.page.ts deleted file mode 100644 index b7d31c7bdb..0000000000 --- a/lib/testing/src/lib/protractor/core/pages/error.page.ts +++ /dev/null @@ -1,43 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BrowserVisibility } from '../utils/browser-visibility'; -import { $ } from 'protractor'; -import { BrowserActions } from '../utils/browser-actions'; - -export class ErrorPage { - - errorPageCode = $('adf-error-content .adf-error-content-code'); - errorPageTitle = $('adf-error-content .adf-error-content-title'); - errorPageDescription = $('adf-error-content .adf-error-content-description'); - - async checkErrorCode(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.errorPageCode); - } - - async getErrorCode(): Promise { - return BrowserActions.getText(this.errorPageCode); - } - - async getErrorTitle(): Promise { - return BrowserActions.getText(this.errorPageTitle); - } - - async getErrorDescription(): Promise { - return BrowserActions.getText(this.errorPageDescription); - } -} diff --git a/lib/testing/src/lib/protractor/core/pages/info-drawer.page.ts b/lib/testing/src/lib/protractor/core/pages/info-drawer.page.ts deleted file mode 100644 index 02427e00ae..0000000000 --- a/lib/testing/src/lib/protractor/core/pages/info-drawer.page.ts +++ /dev/null @@ -1,75 +0,0 @@ -/*! - * @license - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ElementFinder, $ } from 'protractor'; -import { BrowserVisibility } from './../utils/browser-visibility'; -import { TabsPage } from './material/tabs.page'; - -export class InfoDrawerPage { - - rootElement: ElementFinder; - infoDrawerHeader = ('adf-info-drawer-layout-header'); - tabsPage: TabsPage = new TabsPage(); - - constructor(classLocator: string = 'adf-info-drawer') { - this.rootElement = $(`adf-info-drawer[class*='${classLocator}']`); - } - - async isInfoDrawerDisplayed(): Promise { - try { - await BrowserVisibility.waitUntilElementIsVisible(this.rootElement); - return true; - } catch (error) { - return false; - } - } - - async isInfoDrawerNotDisplayed(): Promise { - try { - await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement); - return true; - } catch (error) { - return false; - } - } - - async isInfoDrawerHeaderDisplayed(): Promise { - try { - await BrowserVisibility.waitUntilElementIsVisible(this.rootElement.$(this.infoDrawerHeader)); - return true; - } catch (error) { - return false; - } - } - - async isInfoDrawerHeaderNotDisplayed(): Promise { - try { - await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement.$(this.infoDrawerHeader)); - return true; - } catch (error) { - return false; - } - } - - async getNoOfTabs(): Promise { - return this.tabsPage.getNoOfTabs(); - } - - async getTabsLabels(): Promise { - return this.tabsPage.getTabsLabels(); - } -} diff --git a/lib/testing/src/lib/protractor/core/pages/public-api.ts b/lib/testing/src/lib/protractor/core/pages/public-api.ts index 0d19ad1552..2cdbcc890b 100644 --- a/lib/testing/src/lib/protractor/core/pages/public-api.ts +++ b/lib/testing/src/lib/protractor/core/pages/public-api.ts @@ -25,7 +25,6 @@ export { LoginPage as LoginSSOPage } from './login.page'; export * from './data-table-component.page'; export * from './pagination.page'; -export * from './error.page'; export * from './form/public-api'; export * from './material/public-api'; export * from './card-view/public-api'; @@ -34,4 +33,3 @@ export * from './config-editor-page'; export * from './snackbar.page'; export * from './data-table/public-api'; export * from './context-menu.page'; -export * from './info-drawer.page'; diff --git a/lib/testing/src/lib/protractor/core/pages/viewer.page.ts b/lib/testing/src/lib/protractor/core/pages/viewer.page.ts index d0ee2407aa..27c01ca1d5 100644 --- a/lib/testing/src/lib/protractor/core/pages/viewer.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/viewer.page.ts @@ -17,7 +17,6 @@ import { BrowserActions } from '../utils/browser-actions'; import { TabsPage } from './material/tabs.page'; -import { TogglePage } from './material/toggle.page'; import { BrowserVisibility } from '../utils/browser-visibility'; import { element, by, browser, protractor, $, $$ } from 'protractor'; import { Logger } from '../utils/logger'; @@ -26,12 +25,9 @@ const MAX_LOADING_TIME = 120000; export class ViewerPage { tabsPage = new TabsPage(); - togglePage = new TogglePage(); - closeButton = $('button[data-automation-id="adf-toolbar-back"]'); fileName = $('#adf-viewer-display-name'); infoButton = $('button[data-automation-id="adf-toolbar-sidebar"]'); - leftSideBarButton = $('button[data-automation-id="adf-toolbar-left-sidebar"]'); previousPageButton = $('#viewer-previous-page-button'); nextPageButton = $('#viewer-next-page-button'); zoomInButton = $('#viewer-zoom-in-button'); @@ -49,51 +45,15 @@ export class ViewerPage { thumbnailsClose = $('button[data-automation-id="adf-thumbnails-close"]'); secondThumbnail = $('adf-pdf-thumb > img[title="Page 2"]'); lastThumbnailDisplayed = $$('adf-pdf-thumb').last(); - passwordDialog = $('adf-pdf-viewer-password-dialog'); - passwordSubmit = $('button[data-automation-id="adf-password-dialog-submit"]'); - passwordDialogClose = $('button[data-automation-id="adf-password-dialog-close"]'); - passwordSubmitDisabled = $('button[data-automation-id="adf-password-dialog-submit"][disabled]'); - passwordInput = $('input[data-automation-id="adf-password-dialog-input"]'); - passwordError = $('mat-error[data-automation-id="adf-password-dialog-error"]'); infoSideBar = $('#adf-right-sidebar'); - leftSideBar = $('#adf-left-sidebar'); viewer = $('adf-viewer'); imgViewer = $('adf-img-viewer'); activeTab = $('div[class*="mat-tab-label-active"]'); - toolbarSwitch = $('#adf-switch-toolbar'); toolbar = $('#adf-viewer-toolbar'); - lastButton = $$('#adf-viewer-toolbar mat-toolbar > button[data-automation-id*="adf-toolbar-"]').last(); - goBackSwitch = $('#adf-switch-goback'); canvasLayer = $$('.canvasWrapper > canvas').first(); - openWithSwitch = $('#adf-switch-openwith'); - openWith = $('#adf-viewer-openwith'); - - moreActionsMenuSwitch = $('#adf-switch-moreactionsmenu'); - moreActionsMenu = $('button[data-automation-id="adf-toolbar-more-actions"]'); - - customToolbarToggle = $('#adf-toggle-custom-toolbar'); - customToolbar = $('adf-viewer-toolbar[data-automation-id="adf-viewer-custom-toolbar"]'); - - showRightSidebarSwitch = $('#adf-switch-showrightsidebar'); - showLeftSidebarSwitch = $('#adf-switch-showleftsidebar'); - - moreActionsSwitch = $('#adf-switch-moreactions'); pdfPageLoaded = $('[data-page-number="1"][data-loaded="true"], adf-img-viewer, adf-txt-viewer'); - - downloadSwitch = $('#adf-switch-download'); downloadButton = $('#adf-alfresco-viewer-download'); - - printSwitch = $('#adf-switch-print'); - printButton = $('#adf-alfresco-viewer-print'); - - allowSidebarSwitch = $('#adf-switch-allowsidebar'); - allowLeftSidebarSwitch = $('#adf-switch-allowLeftSidebar'); - - uploadButton = $('#adf-viewer-upload'); - timeButton = $('#adf-viewer-time'); - bugButton = $('#adf-viewer-bug'); - unknownFormat = $(`adf-viewer-unknown-format .adf-viewer__unknown-format-view`); async viewFile(fileName: string): Promise { @@ -114,8 +74,7 @@ export class ViewerPage { Logger.log('wait spinner is present'); await BrowserVisibility.waitUntilElementIsVisible(element(by.tagName('mat-progress-spinner'))); await BrowserVisibility.waitUntilElementIsNotVisible(element(by.tagName('mat-progress-spinner')), MAX_LOADING_TIME); - } catch (error) { - } + } catch (error) {} } } @@ -145,41 +104,19 @@ export class ViewerPage { await browser.executeScript(jsCode); } - async enterPassword(password: string): Promise { - await BrowserActions.clearSendKeys(this.passwordInput, password); - } - async checkFileIsLoaded(fileName?: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.pdfPageLoaded, 60000, `${fileName} not loaded`); } - async clickClosePasswordDialog(): Promise { - await BrowserActions.click(this.passwordDialogClose); - } - async checkImgViewerIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.imgViewer); } - async checkPasswordErrorIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.passwordError); - } - - async checkPasswordInputIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.passwordInput); - } - - async checkPasswordSubmitDisabledIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.passwordSubmitDisabled); - } - - async checkPasswordDialogIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.passwordDialog); - } - async checkAllThumbnailsDisplayed(nbPages): Promise { const defaultThumbnailHeight = 143; - await expect(await BrowserActions.getAttribute(this.thumbnailsContent, 'style')).toEqual('height: ' + nbPages * defaultThumbnailHeight + 'px; transform: translate(-50%, 0px);'); + await expect(await BrowserActions.getAttribute(this.thumbnailsContent, 'style')).toEqual( + 'height: ' + nbPages * defaultThumbnailHeight + 'px; transform: translate(-50%, 0px);' + ); } async checkCurrentThumbnailIsSelected(): Promise { @@ -213,14 +150,6 @@ export class ViewerPage { await BrowserVisibility.waitUntilElementIsVisible(this.closeButton); } - async getLastButtonTitle(): Promise { - return BrowserActions.getAttribute(this.lastButton, 'title'); - } - - async getMoreActionsMenuTitle(): Promise { - return BrowserActions.getAttribute(this.moreActionsMenu, 'title'); - } - async checkDownloadButtonIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.downloadButton); } @@ -229,10 +158,6 @@ export class ViewerPage { await BrowserVisibility.waitUntilElementIsVisible(this.infoButton); } - async checkInfoButtonIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.infoButton); - } - async checkFileThumbnailIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.fileThumbnail); } @@ -318,14 +243,6 @@ export class ViewerPage { await BrowserVisibility.waitUntilElementIsVisible(this.infoSideBar); } - async checkLeftSideBarButtonIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.leftSideBarButton); - } - - async checkLeftSideBarButtonIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.leftSideBarButton); - } - async clickInfoButton(): Promise { await BrowserActions.click($('button[data-automation-id="adf-toolbar-sidebar"]')); } @@ -335,26 +252,12 @@ export class ViewerPage { } async checkTabIsActive(tabName: string): Promise { - const tab = element(by.cssContainingText('.adf-info-drawer-layout-content div.mat-tab-labels div.mat-tab-label-active .mat-tab-label-content', tabName)); + const tab = element( + by.cssContainingText('.adf-info-drawer-layout-content div.mat-tab-labels div.mat-tab-label-active .mat-tab-label-content', tabName) + ); await BrowserVisibility.waitUntilElementIsVisible(tab); } - async clickLeftSidebarButton(): Promise { - await BrowserActions.click(this.leftSideBarButton); - } - - async checkLeftSideBarIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.leftSideBar); - } - - async checkLeftSideBarIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.leftSideBar); - } - - async clickPasswordSubmit(): Promise { - await BrowserActions.click(this.passwordSubmit); - } - async clickSecondThumbnail(): Promise { await BrowserActions.click(this.secondThumbnail); } @@ -411,159 +314,10 @@ export class ViewerPage { await this.tabsPage.clickTabByTitle('Comments'); } - async disableToolbar(): Promise { - await this.togglePage.disableToggle(this.toolbarSwitch); - } - - async enableToolbar(): Promise { - await this.togglePage.enableToggle(this.toolbarSwitch); - } - async checkToolbarIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.toolbar); } - async checkToolbarIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.toolbar); - } - - async disableGoBack(): Promise { - await this.togglePage.disableToggle(this.goBackSwitch); - } - - async enableGoBack(): Promise { - await this.togglePage.enableToggle(this.goBackSwitch); - } - - async checkGoBackIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.closeButton); - } - - async checkGoBackIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.closeButton); - } - - async disableToolbarOptions(): Promise { - await this.togglePage.disableToggle(this.openWithSwitch); - } - - async enableToolbarOptions() { - await this.togglePage.enableToggle(this.openWithSwitch); - } - - async checkToolbarOptionsIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.openWith); - } - - async checkToolbarOptionsIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.openWith); - } - - async disableDownload(): Promise { - await this.togglePage.disableToggle(this.downloadSwitch); - } - - async enableDownload(): Promise { - await this.togglePage.enableToggle(this.openWithSwitch); - } - - async checkDownloadButtonIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.downloadButton); - } - - async disablePrint(): Promise { - await this.togglePage.disableToggle(this.printSwitch); - } - - async enablePrint(): Promise { - await this.togglePage.enableToggle(this.printSwitch); - } - - async checkPrintButtonIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.printButton); - } - - async checkPrintButtonIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.printButton); - } - - async disableAllowSidebar(): Promise { - await this.togglePage.disableToggle(this.allowSidebarSwitch); - } - - async disableAllowLeftSidebar(): Promise { - await browser.executeScript('arguments[0].scrollIntoView()', this.allowLeftSidebarSwitch); - await this.togglePage.disableToggle(this.allowLeftSidebarSwitch); - } - - async checkMoreActionsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible(this.bugButton); - await BrowserVisibility.waitUntilElementIsVisible(this.timeButton); - await BrowserVisibility.waitUntilElementIsVisible(this.uploadButton); - } - - async checkMoreActionsIsNotDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsNotVisible(this.bugButton); - await BrowserVisibility.waitUntilElementIsNotVisible(this.timeButton); - await BrowserVisibility.waitUntilElementIsNotVisible(this.uploadButton); - } - - async checkPreviewFileDefaultOptionsAreDisplayed(): Promise { - await this.checkToolbarIsDisplayed(); - await this.checkMoreActionsDisplayed(); - await this.checkPrintButtonIsDisplayed(); - await this.checkDownloadButtonIsDisplayed(); - await this.checkFullScreenButtonIsDisplayed(); - await this.checkLeftSideBarButtonIsDisplayed(); - await this.checkInfoButtonIsDisplayed(); - } - - async disableMoreActions(): Promise { - await this.togglePage.disableToggle(this.moreActionsSwitch); - } - - async enableMoreActions(): Promise { - await this.togglePage.enableToggle(this.moreActionsSwitch); - } - - async enableMoreActionsMenu(): Promise { - await this.togglePage.enableToggle(this.moreActionsMenuSwitch); - } - - async disableCustomToolbar(): Promise { - await browser.executeScript('arguments[0].scrollIntoView()', this.customToolbarToggle); - await this.togglePage.disableToggle(this.customToolbarToggle); - } - - async enableCustomToolbar(): Promise { - await browser.executeScript('arguments[0].scrollIntoView()', this.customToolbarToggle); - await this.togglePage.enableToggle(this.customToolbarToggle); - } - - async checkCustomToolbarIsDisplayed() { - await BrowserVisibility.waitUntilElementIsVisible(this.customToolbar); - } - - async clickToggleRightSidebar(): Promise { - await BrowserActions.click(this.showRightSidebarSwitch); - } - - async clickToggleLeftSidebar(): Promise { - await BrowserActions.click(this.showLeftSidebarSwitch); - } - - async disableOverlay(): Promise { - await this.togglePage.disableToggle($('#adf-viewer-overlay')); - } - - async checkOverlayViewerIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible($('div[class*="adf-viewer-overlay-container"]')); - } - - async checkInlineViewerIsDisplayed(): Promise { - await BrowserVisibility.waitUntilElementIsVisible($('div[class*="adf-viewer-inline-container"]')); - } - async checkUnknownFormatIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.unknownFormat); } diff --git a/lib/testing/src/lib/protractor/core/utils/form.util.ts b/lib/testing/src/lib/protractor/core/utils/form.util.ts index 137f72c85f..2cf29ff71d 100644 --- a/lib/testing/src/lib/protractor/core/utils/form.util.ts +++ b/lib/testing/src/lib/protractor/core/utils/form.util.ts @@ -15,12 +15,10 @@ * limitations under the License. */ -import { browser } from 'protractor'; import { ApiService } from '../../../shared/api/api.service'; import { FormModelsApi, FormRepresentation } from '@alfresco/js-api'; export class FormUtil { - api: ApiService; editorApi: FormModelsApi; @@ -31,18 +29,6 @@ export class FormUtil { } } - static async setForm(value: string): Promise { - await browser.executeScript( - 'window.adf.setFormInEditor(`' + value + '`);' - ); - } - - static async setCloudForm(value: string): Promise { - await browser.executeScript( - 'window.adf.setCloudFormInEditor(`' + value + '`);' - ); - } - async getFormByName(name: string): Promise { const forms: any = await this.editorApi.getForms(undefined); diff --git a/lib/testing/src/lib/protractor/core/utils/local-storage.util.ts b/lib/testing/src/lib/protractor/core/utils/local-storage.util.ts index ea42556638..5f92a0e497 100644 --- a/lib/testing/src/lib/protractor/core/utils/local-storage.util.ts +++ b/lib/testing/src/lib/protractor/core/utils/local-storage.util.ts @@ -18,53 +18,27 @@ import { browser } from 'protractor'; export class LocalStorageUtil { - static async getConfigField(field: string): Promise { - return browser.executeScript( - 'return window.adf ? window.adf.getConfigField(`' + field + '`) : null;' - ); + return browser.executeScript('return window.adf ? window.adf.getConfigField(`' + field + '`) : null;'); } static async setConfigField(field: string, value: string): Promise { - await browser.executeScript( - 'window.adf.setConfigField(`' + field + '`, `' + value + '`);' - ); + await browser.executeScript('window.adf.setConfigField(`' + field + '`, `' + value + '`);'); } static async setStorageItem(field: string, value: string): Promise { - await browser.executeScript( - 'window.adf.setStorageItem(`' + field + '`, `' + value + '`);' - ); - } - - static async removeStorageItem(field: string): Promise { - await browser.executeScript( - 'window.adf.removeStorageItem(`' + field + '`);' - ); - } - - static async getStorageItem(field: string): Promise { - return browser.executeScript( - 'return window.adf ? window.adf.getStorageItem(`' + field + '`) : null;' - ); + await browser.executeScript('window.adf.setStorageItem(`' + field + '`, `' + value + '`);'); } static async setUserPreference(field: string, value: any): Promise { - await browser.executeScript( - 'window.adf.setUserPreference(`' + field + '`, `' + value + '`);' - ); + await browser.executeScript('window.adf.setUserPreference(`' + field + '`, `' + value + '`);'); } static async clearStorage(): Promise { - await browser.executeScript( - 'window.adf.clearStorage();' - ); + await browser.executeScript('window.adf.clearStorage();'); } static async apiReset(): Promise { - await browser.executeScript( - `window.adf.apiReset();` - ); + await browser.executeScript(`window.adf.apiReset();`); } - }