graphdb-workbench-tests 3.4.0-TR4 → 3.4.0-TR5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +17 -0
- package/.nycrc +10 -0
- package/cypress-flaky.config.js +20 -6
- package/cypress-legacy.config.js +47 -0
- package/cypress-security.config.js +36 -0
- package/cypress.config.js +45 -6
- package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
- package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +2 -2
- package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
- package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
- package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +10 -18
- package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +2 -12
- package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +1 -7
- package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +3 -7
- package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +3 -3
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +42 -0
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +43 -0
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +30 -0
- package/{integration/explore → e2e-legacy/explore/class-hierarchy}/class.hierarchy.spec.js +1 -1
- package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +42 -0
- package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +39 -0
- package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +21 -0
- package/{integration/explore/class.relationships.spec.js → e2e-legacy/explore/class-relationships/class-relationships.spec.js} +20 -50
- package/{integration/explore → e2e-legacy/explore/graphs-overview}/graphs.overview.spec.js +4 -4
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +44 -0
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +32 -0
- package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +38 -0
- package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +21 -0
- package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +5 -10
- package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +58 -0
- package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +142 -0
- package/{integration → e2e-legacy}/explore/visual-graph/visual-graph-node-labels.spec.js +14 -2
- package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +38 -0
- package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +21 -0
- package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +75 -96
- package/{integration → e2e-legacy}/graphql/create-graphql-endpoint.spec.js +0 -2
- package/{integration → e2e-legacy}/graphql/edit-graphql-enpoint.spec.js +1 -1
- package/{integration → e2e-legacy}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
- package/{integration → e2e-legacy}/graphql/graphql-endpoint-management-view.spec.js +4 -4
- package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +43 -0
- package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +39 -0
- package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +21 -0
- package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +40 -0
- package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +38 -0
- package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +22 -0
- package/{integration → e2e-legacy}/graphql/graphql-playground.spec.js +1 -1
- package/e2e-legacy/graphql/graphql-theme.spec.js +73 -0
- package/{integration → e2e-legacy}/graphql/import-graphql-endpoint-definitions.spec.js +0 -6
- package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +49 -0
- package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +89 -0
- package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +76 -0
- package/e2e-legacy/guides/connectors/connectors-guide.spec.js +163 -0
- package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +74 -0
- package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +55 -0
- package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +92 -0
- package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +63 -0
- package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +105 -0
- package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +302 -0
- package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
- package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +42 -0
- package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +69 -0
- package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +168 -0
- package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +158 -0
- package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +92 -0
- package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +88 -0
- package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +372 -0
- package/e2e-legacy/guides/welcome/welcome-guide.spec.js +36 -0
- package/e2e-legacy/help/guides/guides-autostart.spec.js +126 -0
- package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
- package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
- package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
- package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +71 -0
- package/{integration/guides/star-wars-interactive-guide.js → e2e-legacy/help/guides/star-wars-interactive-guide.spec.js} +3 -2
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
- package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
- package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
- package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +182 -0
- package/e2e-legacy/home/documentation-link.spec.js +41 -0
- package/{integration → e2e-legacy}/home/google-analytics.spec.js +4 -6
- package/e2e-legacy/home/home-page-with-selected-repository.spec.js +69 -0
- package/e2e-legacy/home/home-page-without-repositories.spec.js +87 -0
- package/e2e-legacy/home/home-page-without-selected-repository.spec.js +59 -0
- package/{integration → e2e-legacy}/home/language-change.spec.js +2 -2
- package/e2e-legacy/home/rdf-resource-search.spec.js +160 -0
- package/e2e-legacy/home/view-resource-autocomplete.spec.js +65 -0
- package/{integration → e2e-legacy}/import/import-server-files.spec.js +5 -3
- package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +19 -13
- package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +0 -2
- package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +0 -23
- package/{integration → e2e-legacy}/import/import-user-data.spec.js +11 -4
- package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +51 -0
- package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +45 -0
- package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +28 -0
- package/e2e-legacy/license/license-with-repository.spec.js +113 -0
- package/e2e-legacy/license/license-without-repository.spec.js +103 -0
- package/{integration → e2e-legacy}/license/license.spec.js +4 -4
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +36 -0
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +25 -0
- package/{integration/monitor/monitor.backup-and-restore.spec.js → e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js} +2 -2
- package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +12 -5
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +39 -0
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +21 -0
- package/{integration/monitor → e2e-legacy/monitor/system}/monitor.resources.spec.js +3 -2
- package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +32 -0
- package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +20 -0
- package/e2e-legacy/not-found/not-found.spec.js +23 -0
- package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +1 -1
- package/{integration → e2e-legacy}/repository/repositories.spec.js +37 -45
- package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +181 -0
- package/{integration → e2e-legacy}/resource/resource.spec.js +50 -20
- package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +84 -0
- package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +21 -0
- package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +4 -0
- package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
- package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
- package/{integration/setup → e2e-legacy/setup/autocomplete}/autocomplete.spec.js +6 -7
- package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
- package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
- package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +41 -0
- package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +21 -0
- package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +26 -10
- package/{integration → e2e-legacy}/setup/jdbc/jdbc-create.spec.js +4 -4
- package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +39 -0
- package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +27 -0
- package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
- package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
- package/{integration/setup → e2e-legacy/setup/namespaces}/namespaces.spec.js +6 -5
- package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
- package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
- package/{integration/setup → e2e-legacy/setup/plugins}/plugins.spec.js +3 -3
- package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +40 -0
- package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +30 -0
- package/{integration/setup → e2e-legacy/setup/rdf-rank}/rdf-rank.spec.js +3 -5
- package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +40 -0
- package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +28 -0
- package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +86 -0
- package/e2e-legacy/setup/settings/my-settings.spec.js +207 -0
- package/{integration/setup/sparql-template-create.js → e2e-legacy/setup/sparql-template/sparql-template-create.spec.js} +16 -8
- package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +39 -0
- package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +29 -0
- package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-templates.spec.js +4 -4
- package/{integration/setup → e2e-legacy/setup/users-and-access}/user-and-access.spec.js +184 -87
- package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +25 -0
- package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
- package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
- package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +10 -8
- package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +1 -6
- package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +1 -1
- package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -3
- package/{integration → e2e-legacy}/sparql-editor/saved-query/readonly-query.spec.js +15 -24
- package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +32 -1
- package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +33 -0
- package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +26 -0
- package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +2 -12
- package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +54 -0
- package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +5 -18
- package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +1 -6
- package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +106 -0
- package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
- package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +53 -2
- package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +25 -2
- package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +3 -14
- package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +74 -6
- package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +24 -2
- package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +37 -66
- package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +6 -4
- package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +1 -2
- package/e2e-legacy/ttyg/edit-agent.spec.js +178 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
- package/{integration-flaky → e2e-legacy}/ttyg/ttyg-permission.spec.js +23 -17
- package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +2 -2
- package/e2e-security/repository/url-with-repository-id-parameter.spec.js +57 -0
- package/e2e-security/setup/home/cookie-policy.spec.js +290 -0
- package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +193 -0
- package/e2e-security/setup/users-and-access/graphql-user.spec.js +126 -0
- package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +70 -0
- package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +99 -0
- package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
- package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
- package/eslint.config.js +39 -0
- package/fixtures/graph/graph-configurations.json +59 -0
- package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +12 -0
- package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +35 -0
- package/fixtures/guides/class-relations/class-relations-guide.json +33 -0
- package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
- package/fixtures/guides/connectors/connectors-guide.json +66 -0
- package/fixtures/guides/connectors/lucene-connector-guide.json +120 -0
- package/fixtures/guides/create-repository/create-repository-guide.json +25 -0
- package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +36 -0
- package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +25 -0
- package/fixtures/guides/download-resource.ttl +629 -0
- package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +54 -0
- package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +30 -0
- package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +21 -0
- package/fixtures/guides/main-menu/main-menu-guide.json +98 -0
- package/fixtures/guides/navigation/navigation-guide.json +60 -0
- package/fixtures/guides/rdf-rank/rdf-rank-guide.json +18 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +51 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +25 -0
- package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +74 -0
- package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +26 -0
- package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +22 -0
- package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
- package/fixtures/guides/visual-graph/visual-graph-guide.json +85 -0
- package/fixtures/guides/welcome/welcome-guide.json +18 -0
- package/fixtures/repositories/free-access.json +13 -0
- package/fixtures/similarity/get-ttyg-similarity-instances.json +10 -0
- package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
- package/fixtures/ttyg/agent/get-agent-defaults.json +9 -2
- package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +79 -0
- package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +8 -0
- package/fixtures/ttyg/agent/get-similarity-indexes.json +22 -0
- package/fixtures/ttyg/chats/ask-question-cancel.json +12 -0
- package/fixtures/ttyg/chats/ask-question.json +12 -2
- package/fixtures/ttyg/chats/cancel-question-response.json +1 -0
- package/fixtures/ttyg/chats/create/create-chat-response.json +10 -14
- package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +29 -0
- package/fixtures/ttyg/chats/explain-response-1.json +2 -48
- package/fixtures/ttyg/chats/explain-response-3.json +12 -0
- package/fixtures/ttyg/chats/get-chat.json +6 -1
- package/npm-shrinkwrap.json +11004 -3815
- package/package.json +58 -42
- package/plugins/index.js +10 -5
- package/steps/application-steps.js +8 -6
- package/steps/base-steps.js +29 -0
- package/steps/class-views-steps.js +35 -7
- package/steps/cluster/cluster-page-steps.js +12 -2
- package/steps/cookie-policy/cookie-consent-banner-steps.js +21 -0
- package/steps/cookie-policy/cookie-policy-modal.steps.js +56 -0
- package/steps/error-page-steps.js +9 -0
- package/steps/error-steps.js +15 -3
- package/steps/explore/class-relationships-steps.js +64 -0
- package/steps/explore/graphs-overview-steps.js +21 -1
- package/steps/explore/similarity-index-create-steps.js +5 -3
- package/steps/explore/similarity-indexes-steps.js +16 -2
- package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
- package/steps/graphql/playground-editor-steps.js +46 -0
- package/steps/guides/guide-dialog-steps.js +81 -2
- package/steps/guides/guide-steps.js +54 -2
- package/steps/guides/movies-guide-steps.js +2 -1
- package/steps/header-steps.js +22 -0
- package/steps/home-steps.js +184 -77
- package/steps/import/import-resource-message-dialog.js +1 -1
- package/steps/import/import-steps.js +12 -16
- package/steps/import/import-user-data-steps.js +5 -1
- package/steps/language-selector-steps.js +2 -2
- package/steps/license-steps.js +91 -9
- package/steps/login-steps.js +31 -6
- package/steps/main-menu-steps.js +244 -19
- package/steps/modal-dialog-steps.js +32 -1
- package/steps/monitoring/backup-and-restore-steps.js +9 -3
- package/steps/monitoring/queries-and-updates-steps.js +20 -0
- package/steps/monitoring/system-monitoring-steps.js +40 -0
- package/steps/not-found/not-found-steps.js +23 -0
- package/steps/operations-statuses-component-steps.js +5 -10
- package/steps/rdf-resource-search-steps.js +55 -0
- package/steps/repository-selector-steps.js +3 -3
- package/steps/repository-steps.js +88 -18
- package/steps/resource/resource-steps.js +6 -10
- package/steps/rest-api-documentation-steps.js +15 -0
- package/steps/setup/acl-management-steps.js +18 -2
- package/steps/setup/autocomplete-steps.js +23 -8
- package/steps/setup/connectors-steps.js +32 -0
- package/steps/setup/jdbc-steps.js +18 -4
- package/steps/setup/namespace-steps.js +10 -7
- package/steps/setup/plugins-steps.js +12 -5
- package/steps/setup/rdf-rank-steps.js +23 -9
- package/steps/setup/settings-steps.js +101 -2
- package/steps/setup/sparql-templates-steps.js +19 -1
- package/steps/setup/user-and-access-steps.js +50 -16
- package/steps/shared-modal-dialog-steps.js +45 -0
- package/steps/sparql-editor-steps.js +21 -2
- package/steps/sparql-steps.js +13 -1
- package/steps/system-information-steps.js +70 -0
- package/steps/toaster-steps.js +18 -6
- package/steps/ttyg/chat-panel-steps.js +40 -2
- package/steps/ttyg/ttyg-agent-settings-modal.steps.js +136 -31
- package/steps/ttyg/ttyg-view-steps.js +80 -10
- package/steps/visual-graph-split-button-steps.js +45 -0
- package/steps/visual-graph-steps.js +106 -10
- package/steps/widgets/active-repository-widget-steps.js +29 -0
- package/steps/widgets/license-widget-steps.js +9 -0
- package/steps/widgets/repository-errors-widget-steps.js +21 -0
- package/steps/widgets/saved-sparql-queries-widget-steps.js +9 -0
- package/steps/yasgui/yasgui-loader.js +3 -3
- package/steps/yasgui/yasgui-steps.js +1 -1
- package/steps/yasgui/yasqe-steps.js +35 -4
- package/steps/yasgui/yasr-steps.js +35 -5
- package/stubs/autocomplete/autocomplete-stubs.js +7 -0
- package/stubs/browser-stubs.js +21 -0
- package/stubs/environment-stubs.js +9 -1
- package/stubs/graph-config-stubs.js +17 -0
- package/stubs/guides/guides-stubs.js +103 -0
- package/stubs/license-stubs.js +51 -0
- package/stubs/repositories/repositories-stubs.js +180 -75
- package/stubs/saved-queries-stubs.js +5 -0
- package/stubs/security-stubs.js +12 -0
- package/stubs/similarity-index-stubs.js +4 -0
- package/stubs/sparql-stubs.js +10 -0
- package/stubs/ttyg/ttyg-stubs.js +64 -15
- package/stubs/yasgui/query-stubs.js +5 -1
- package/support/commands.js +22 -1
- package/support/connector-commands.js +13 -0
- package/support/e2e-security.js +9 -0
- package/support/{index.js → e2e.js} +9 -3
- package/support/repository-commands.js +29 -4
- package/support/settings-commands.js +33 -1
- package/support/url-commands.js +13 -0
- package/support/user-commands.js +9 -4
- package/utils/html-util.js +24 -4
- package/Dockerfile +0 -11
- package/fixtures/locale-en.json +0 -3342
- package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
- package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
- package/integration/explore/similarity-index/similarity.spec.js +0 -628
- package/integration/guides/movies-interactive-guide.spec.js +0 -73
- package/integration/home/cookie-policy.spec.js +0 -90
- package/integration/home/documentation-link.spec.js +0 -60
- package/integration/home/language-selector.spec.js +0 -19
- package/integration/home/rdf-resource-search.spec.js +0 -177
- package/integration/home/view-resource-autocomplete.spec.js +0 -52
- package/integration/home/workbench.home.spec.js +0 -30
- package/integration/monitor/monitor.queries.spec.js +0 -31
- package/integration/setup/my-settings.spec.js +0 -289
- package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -57
- package/integration/ttyg/edit-agent.spec.js +0 -99
- package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -54
- package/stubs/repositories-stub.js +0 -73
- package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
- package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
- package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/delete-graphql-endpoint.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/set-default-graphql-endpoint.spec.js +0 -0
- package/{integration/help → e2e-legacy/help/system-information}/system-information.spec.js +0 -0
- package/{integration → e2e-legacy}/home/create-repository.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-view.spec.js +0 -0
- package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +1 -1
- /package/{integration → e2e-legacy}/repository/repository-commands.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/jdbc/jdbc.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
import {UserAndAccessSteps} from
|
|
2
|
-
import {RepositoriesStubs} from
|
|
3
|
-
import {RepositorySelectorSteps} from
|
|
4
|
-
import {ModalDialogSteps} from
|
|
5
|
-
import {ToasterSteps} from
|
|
6
|
-
import HomeSteps from
|
|
7
|
-
import {LoginSteps} from
|
|
8
|
-
|
|
1
|
+
import {UserAndAccessSteps} from '../../../steps/setup/user-and-access-steps';
|
|
2
|
+
import {RepositoriesStubs} from '../../../stubs/repositories/repositories-stubs';
|
|
3
|
+
import {RepositorySelectorSteps} from '../../../steps/repository-selector-steps';
|
|
4
|
+
import {ModalDialogSteps} from '../../../steps/modal-dialog-steps';
|
|
5
|
+
import {ToasterSteps} from '../../../steps/toaster-steps';
|
|
6
|
+
import HomeSteps from '../../../steps/home-steps';
|
|
7
|
+
import {LoginSteps} from '../../../steps/login-steps';
|
|
8
|
+
import {MainMenuSteps} from '../../../steps/main-menu-steps';
|
|
9
|
+
import {SecurityStubs} from '../../../stubs/security-stubs.js';
|
|
9
10
|
|
|
10
11
|
describe('User and Access', () => {
|
|
11
12
|
|
|
12
|
-
const PASSWORD =
|
|
13
|
-
const ROLE_USER =
|
|
14
|
-
const ROLE_REPO_MANAGER =
|
|
15
|
-
const ROLE_CUSTOM_ADMIN =
|
|
16
|
-
const DEFAULT_ADMIN_PASSWORD =
|
|
13
|
+
const PASSWORD = 'password';
|
|
14
|
+
const ROLE_USER = '#roleUser';
|
|
15
|
+
const ROLE_REPO_MANAGER = '#roleRepoAdmin';
|
|
16
|
+
const ROLE_CUSTOM_ADMIN = '#roleAdmin';
|
|
17
|
+
const DEFAULT_ADMIN_PASSWORD = 'root';
|
|
17
18
|
|
|
19
|
+
// eslint-disable-next-line no-undef
|
|
18
20
|
context('', () => {
|
|
19
|
-
const user =
|
|
21
|
+
const user = 'user';
|
|
20
22
|
|
|
21
23
|
beforeEach(() => {
|
|
22
24
|
UserAndAccessSteps.visit();
|
|
23
|
-
cy.window();
|
|
24
25
|
// Users table should be visible
|
|
25
26
|
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
27
|
+
cy.switchOffSecurity(true);
|
|
26
28
|
});
|
|
27
29
|
|
|
28
30
|
afterEach(() => {
|
|
29
|
-
cy.loginAsAdmin().then(()=> {
|
|
31
|
+
cy.loginAsAdmin().then(() => {
|
|
30
32
|
cy.deleteUser(user, true);
|
|
31
33
|
cy.switchOffSecurity(true);
|
|
34
|
+
cy.switchOffFreeAccess(false);
|
|
32
35
|
});
|
|
33
36
|
});
|
|
34
37
|
|
|
@@ -84,22 +87,57 @@ describe('User and Access', () => {
|
|
|
84
87
|
// Then the 'create' button should be disabled
|
|
85
88
|
UserAndAccessSteps.getConfirmUserCreateButton().should('be.disabled');
|
|
86
89
|
// And the field should show an error
|
|
87
|
-
UserAndAccessSteps.
|
|
90
|
+
UserAndAccessSteps.getCustomRoleFieldError().should('contain.text', 'Must be at least 2 symbols long');
|
|
88
91
|
// When I add more text to the custom role tag
|
|
89
92
|
UserAndAccessSteps.addTextToCustomRoleField('A{enter}');
|
|
90
93
|
// Then the 'create' button should be enabled
|
|
91
94
|
UserAndAccessSteps.getConfirmUserCreateButton().should('be.enabled');
|
|
92
95
|
// And the field error should not exist
|
|
93
|
-
UserAndAccessSteps.
|
|
96
|
+
UserAndAccessSteps.getCustomRoleFieldError().should('not.be.visible');
|
|
94
97
|
|
|
95
98
|
// When I type an invalid tag
|
|
96
99
|
UserAndAccessSteps.addTextToCustomRoleField('B{enter}');
|
|
97
100
|
// And the field shows an error
|
|
98
|
-
UserAndAccessSteps.
|
|
101
|
+
UserAndAccessSteps.getCustomRoleFieldError().should('contain.text', 'Must be at least 2 symbols long');
|
|
99
102
|
// When I delete the invalid text
|
|
100
103
|
UserAndAccessSteps.addTextToCustomRoleField('{backspace}');
|
|
101
104
|
// Then the error should not be visible
|
|
102
|
-
UserAndAccessSteps.
|
|
105
|
+
UserAndAccessSteps.getCustomRoleFieldError().should('not.be.visible');
|
|
106
|
+
|
|
107
|
+
// When I create the user with a valid custom role
|
|
108
|
+
UserAndAccessSteps.clickWriteAccessAny();
|
|
109
|
+
SecurityStubs.spyOnUserCreate()
|
|
110
|
+
UserAndAccessSteps.confirmUserCreate();
|
|
111
|
+
// Then the user should be created with that custom role
|
|
112
|
+
cy.wait('@create-user').its('request.body').then((body) => {
|
|
113
|
+
expect(body).to.deep.eq({
|
|
114
|
+
"password": "password",
|
|
115
|
+
"grantedAuthorities": [
|
|
116
|
+
"ROLE_USER",
|
|
117
|
+
"CUSTOM_AA",
|
|
118
|
+
"WRITE_REPO_*",
|
|
119
|
+
"READ_REPO_*"
|
|
120
|
+
],
|
|
121
|
+
"appSettings": {
|
|
122
|
+
"DEFAULT_VIS_GRAPH_SCHEMA": true,
|
|
123
|
+
"DEFAULT_INFERENCE": true,
|
|
124
|
+
"DEFAULT_SAMEAS": true,
|
|
125
|
+
"IGNORE_SHARED_QUERIES": false,
|
|
126
|
+
"EXECUTE_COUNT": true
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
cy.url().should('include', '/users');
|
|
132
|
+
UserAndAccessSteps.findUserInTable(user).should('be.visible');
|
|
133
|
+
UserAndAccessSteps.getUserCustomRoles('@user')
|
|
134
|
+
.should('have.length', 1)
|
|
135
|
+
.eq(0).and('have.text', 'AA');
|
|
136
|
+
// And when I open the edit page for that user, the custom role should be visible in the field without the prefix
|
|
137
|
+
UserAndAccessSteps.openEditUserPage(user);
|
|
138
|
+
UserAndAccessSteps.getCustomRoleField().find('.tag-item span')
|
|
139
|
+
.should('have.length', 1)
|
|
140
|
+
.eq(0).and('have.text', 'AA');
|
|
103
141
|
});
|
|
104
142
|
|
|
105
143
|
it('Adding a role with a CUSTOM_ prefix shows a warning message', () => {
|
|
@@ -117,8 +155,63 @@ describe('User and Access', () => {
|
|
|
117
155
|
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
118
156
|
UserAndAccessSteps.getSplashLoader().should('not.be.visible');
|
|
119
157
|
});
|
|
120
|
-
})
|
|
121
158
|
|
|
159
|
+
it('should toggle free access after Admin has logged in', () => {
|
|
160
|
+
// Given I have available repositories to allow Free Access for
|
|
161
|
+
RepositoriesStubs.stubRepositories();
|
|
162
|
+
RepositoriesStubs.stubFreeAccess();
|
|
163
|
+
// When I enable security
|
|
164
|
+
UserAndAccessSteps.toggleSecurity();
|
|
165
|
+
// When I log in as an Admin
|
|
166
|
+
LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
|
|
167
|
+
// Then the page should load
|
|
168
|
+
UserAndAccessSteps.getSplashLoader().should('not.be.visible');
|
|
169
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
170
|
+
// The Free Access toggle should be OFF
|
|
171
|
+
UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
|
|
172
|
+
// When I toggle Free Access ON
|
|
173
|
+
UserAndAccessSteps.toggleFreeAccess();
|
|
174
|
+
// And I allow free access to a repository
|
|
175
|
+
ModalDialogSteps.getDialog().should('be.visible');
|
|
176
|
+
// Then I click OK in the modal
|
|
177
|
+
ModalDialogSteps.clickOKButton();
|
|
178
|
+
// Then the toggle button should be ON
|
|
179
|
+
UserAndAccessSteps.getFreeAccessSwitchInput().should('be.checked');
|
|
180
|
+
// And I should see a success message
|
|
181
|
+
ToasterSteps.verifySuccess('Free access has been enabled.');
|
|
182
|
+
ToasterSteps.getToast().should('not.exist');
|
|
183
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
184
|
+
// When I toggle Free Access OFF
|
|
185
|
+
UserAndAccessSteps.toggleFreeAccess();
|
|
186
|
+
// Then I should see a success message
|
|
187
|
+
ToasterSteps.getToast().should('exist');
|
|
188
|
+
ToasterSteps.getToasterMessage().should('contain', 'Free access has been disabled.');
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it('should redirect to previous page after logout and then login', () => {
|
|
192
|
+
UserAndAccessSteps.toggleSecurity();
|
|
193
|
+
LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
|
|
194
|
+
MainMenuSteps.clickOnSparqlMenu();
|
|
195
|
+
cy.url().should('include', '/sparql');
|
|
196
|
+
|
|
197
|
+
LoginSteps.logout();
|
|
198
|
+
cy.url().should('include', '/login');
|
|
199
|
+
LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
|
|
200
|
+
cy.url().should('include', '/sparql');
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
it('should redirect to correct return url when user is authenticated and on login page', () => {
|
|
204
|
+
UserAndAccessSteps.visit();
|
|
205
|
+
UserAndAccessSteps.toggleSecurity();
|
|
206
|
+
LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
|
|
207
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
208
|
+
|
|
209
|
+
cy.visit('/login?r=%252Fsparql');
|
|
210
|
+
cy.reload();
|
|
211
|
+
UserAndAccessSteps.getUrl().should('include', '/sparql');
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
// eslint-disable-next-line no-undef
|
|
122
215
|
context('GraphQL only', () => {
|
|
123
216
|
let repositoryId1;
|
|
124
217
|
let repositoryId2;
|
|
@@ -146,6 +239,7 @@ describe('User and Access', () => {
|
|
|
146
239
|
cy.deleteRepository(repositoryId2, true);
|
|
147
240
|
cy.deleteRepository(repositoryId3, true);
|
|
148
241
|
cy.deleteUser(graphqlUser, true);
|
|
242
|
+
cy.switchOffFreeAccess(true);
|
|
149
243
|
cy.switchOffSecurity(true);
|
|
150
244
|
});
|
|
151
245
|
|
|
@@ -156,7 +250,8 @@ describe('User and Access', () => {
|
|
|
156
250
|
createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId2});
|
|
157
251
|
});
|
|
158
252
|
|
|
159
|
-
|
|
253
|
+
// Fails for unknown reason only in CI
|
|
254
|
+
it.skip('Can create user with different auth combinations', () => {
|
|
160
255
|
cy.wait('@getRepositories');
|
|
161
256
|
// WHEN I create a user with read + GraphQL for repository #2
|
|
162
257
|
createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId2});
|
|
@@ -197,7 +292,8 @@ describe('User and Access', () => {
|
|
|
197
292
|
assertUserAuths(graphqlUser, {repo: repositoryId3, read: false, write: true, graphql: true});
|
|
198
293
|
});
|
|
199
294
|
|
|
200
|
-
|
|
295
|
+
// TODO remove skipped flag from all tests after merge of https://github.com/Ontotext-AD/graphdb-workbench/pull/2042
|
|
296
|
+
it.skip('Should have access to 5 pages when have graphql only rights', () => {
|
|
201
297
|
cy.wait('@getRepositories');
|
|
202
298
|
// WHEN I create a user with read + GraphQL for repository #2
|
|
203
299
|
createUser(graphqlUser, PASSWORD, ROLE_USER, {readWrite: true, graphql: true, repoName: repositoryId1});
|
|
@@ -215,7 +311,7 @@ describe('User and Access', () => {
|
|
|
215
311
|
});
|
|
216
312
|
});
|
|
217
313
|
|
|
218
|
-
it('Should not have access endpoints management when have read graphql only rights', () => {
|
|
314
|
+
it.skip('Should not have access endpoints management when have read graphql only rights', () => {
|
|
219
315
|
cy.wait('@getRepositories');
|
|
220
316
|
// WHEN I create a user with read + GraphQL for repository #2
|
|
221
317
|
createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId1});
|
|
@@ -233,7 +329,7 @@ describe('User and Access', () => {
|
|
|
233
329
|
});
|
|
234
330
|
});
|
|
235
331
|
|
|
236
|
-
it('Should have all access to endpoints management when have REPO_MANAGER role', () => {
|
|
332
|
+
it.skip('Should have all access to endpoints management when have REPO_MANAGER role', () => {
|
|
237
333
|
cy.wait('@getRepositories');
|
|
238
334
|
createUser(graphqlUser, PASSWORD, ROLE_REPO_MANAGER);
|
|
239
335
|
//enable security
|
|
@@ -249,12 +345,12 @@ describe('User and Access', () => {
|
|
|
249
345
|
});
|
|
250
346
|
});
|
|
251
347
|
|
|
252
|
-
it('Can have Free Access and GraphQL working together', () => {
|
|
348
|
+
it.skip('Can have Free Access and GraphQL working together', () => {
|
|
253
349
|
cy.wait('@getRepositories');
|
|
254
350
|
//enable security
|
|
255
351
|
UserAndAccessSteps.toggleSecurity();
|
|
256
352
|
//login with the admin
|
|
257
|
-
LoginSteps.loginWithUser(
|
|
353
|
+
LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
|
|
258
354
|
// The Free Access toggle should be OFF
|
|
259
355
|
UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
|
|
260
356
|
// When I toggle Free Access ON
|
|
@@ -278,14 +374,14 @@ describe('User and Access', () => {
|
|
|
278
374
|
// I change the repository to this with GraphQL only rights
|
|
279
375
|
RepositorySelectorSteps.selectRepository(repositoryId3);
|
|
280
376
|
// Then I should have GraphQL only rights
|
|
281
|
-
FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL.forEach(({path, expectedUrl,
|
|
377
|
+
FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL.forEach(({path, expectedUrl, checks, expectedTitle}) => {
|
|
282
378
|
navigateMenuPath(path, expectedUrl, expectedTitle);
|
|
283
379
|
if (checks) {
|
|
284
380
|
runChecks(checks);
|
|
285
381
|
}
|
|
286
382
|
});
|
|
287
383
|
// Turn free access off
|
|
288
|
-
cy.loginAsAdmin().then(()=> {
|
|
384
|
+
cy.loginAsAdmin().then(() => {
|
|
289
385
|
cy.switchOffFreeAccess(true);
|
|
290
386
|
});
|
|
291
387
|
});
|
|
@@ -295,7 +391,7 @@ describe('User and Access', () => {
|
|
|
295
391
|
if (repoName === '*') {
|
|
296
392
|
UserAndAccessSteps.clickGraphqlAccessAny();
|
|
297
393
|
} else {
|
|
298
|
-
|
|
394
|
+
UserAndAccessSteps.clickGraphqlAccessRepo(repoName);
|
|
299
395
|
}
|
|
300
396
|
}
|
|
301
397
|
|
|
@@ -323,7 +419,7 @@ describe('User and Access', () => {
|
|
|
323
419
|
UserAndAccessSteps.selectRoleRadioButton(role);
|
|
324
420
|
UserAndAccessSteps.getRoleRadioButton(role).should('be.checked');
|
|
325
421
|
|
|
326
|
-
if (role ===
|
|
422
|
+
if (role === '#roleUser') {
|
|
327
423
|
setRoles(opts);
|
|
328
424
|
UserAndAccessSteps.confirmUserCreate();
|
|
329
425
|
} else if (role === ROLE_CUSTOM_ADMIN && opts.noPassword) {
|
|
@@ -361,6 +457,7 @@ describe('User and Access', () => {
|
|
|
361
457
|
function testForUser(name, isAdmin) {
|
|
362
458
|
//enable security
|
|
363
459
|
UserAndAccessSteps.toggleSecurity();
|
|
460
|
+
LoginSteps.visitLoginPageWithReturnUrl('/users');
|
|
364
461
|
//login new user
|
|
365
462
|
LoginSteps.loginWithUser(name, PASSWORD);
|
|
366
463
|
//verify permissions
|
|
@@ -368,7 +465,7 @@ describe('User and Access', () => {
|
|
|
368
465
|
if (isAdmin) {
|
|
369
466
|
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
370
467
|
} else {
|
|
371
|
-
UserAndAccessSteps.
|
|
468
|
+
UserAndAccessSteps.getPermissionError().should('contain',
|
|
372
469
|
'You have no permission to access this functionality with your current credentials.');
|
|
373
470
|
}
|
|
374
471
|
}
|
|
@@ -376,7 +473,7 @@ describe('User and Access', () => {
|
|
|
376
473
|
function assertUserAuths(username, {repo, read = false, write = false, graphql = false} = {}) {
|
|
377
474
|
UserAndAccessSteps.findUserRowAlias(username, 'userRow');
|
|
378
475
|
|
|
379
|
-
if(!read && !write) {
|
|
476
|
+
if (!read && !write) {
|
|
380
477
|
return UserAndAccessSteps.getRepoLine('@userRow', repo).should('not.exist');
|
|
381
478
|
}
|
|
382
479
|
|
|
@@ -419,9 +516,9 @@ describe('User and Access', () => {
|
|
|
419
516
|
function navigateMenuPath(pathArray, expectedUrl, expectedTitle) {
|
|
420
517
|
pathArray.forEach((label, index) => {
|
|
421
518
|
if (index === 0) {
|
|
422
|
-
|
|
519
|
+
MainMenuSteps.clickOnMenu(label);
|
|
423
520
|
} else {
|
|
424
|
-
|
|
521
|
+
MainMenuSteps.clickOnSubMenu(label);
|
|
425
522
|
const title = expectedTitle ? expectedTitle : label;
|
|
426
523
|
cy.get('h1').should('contain', title);
|
|
427
524
|
}
|
|
@@ -434,6 +531,7 @@ describe('User and Access', () => {
|
|
|
434
531
|
|
|
435
532
|
function runChecks(checks = {}) {
|
|
436
533
|
Object.entries(checks).forEach(([selector, assertions]) => {
|
|
534
|
+
// eslint-disable-next-line cypress/no-assigning-return-values
|
|
437
535
|
let chain = cy.get(selector);
|
|
438
536
|
|
|
439
537
|
// assertions is an array, e.g. ["exist", ["contain.text", "Hello"], "be.visible"]
|
|
@@ -461,59 +559,59 @@ describe('User and Access', () => {
|
|
|
461
559
|
|
|
462
560
|
const noAuthChecks = {
|
|
463
561
|
'div[role="main]': [
|
|
464
|
-
'not.exist'
|
|
562
|
+
'not.exist',
|
|
465
563
|
],
|
|
466
564
|
'.no-authority-panel .alert-warning': [
|
|
467
565
|
'be.visible',
|
|
468
566
|
['contains.text', 'Some functionalities are not available because'],
|
|
469
|
-
['contains.text', 'you do not have the required repository permissions.']
|
|
470
|
-
]
|
|
471
|
-
}
|
|
567
|
+
['contains.text', 'you do not have the required repository permissions.'],
|
|
568
|
+
],
|
|
569
|
+
};
|
|
472
570
|
|
|
473
571
|
const hasAuthChecks = {
|
|
474
572
|
'div[role="main"]': [
|
|
475
573
|
'exist',
|
|
476
|
-
'be.visible'
|
|
574
|
+
'be.visible',
|
|
477
575
|
],
|
|
478
576
|
'.no-authority-panel .alert-warning': [
|
|
479
|
-
'not.exist'
|
|
480
|
-
]
|
|
481
|
-
}
|
|
577
|
+
'not.exist',
|
|
578
|
+
],
|
|
579
|
+
};
|
|
482
580
|
|
|
483
581
|
const MENU_ITEMS_WITHOUT_GRAPHQL = [
|
|
484
582
|
// 1) Import
|
|
485
583
|
{
|
|
486
584
|
path: ['Import'],
|
|
487
585
|
expectedUrl: '/import',
|
|
488
|
-
checks: noAuthChecks
|
|
586
|
+
checks: noAuthChecks,
|
|
489
587
|
},
|
|
490
588
|
|
|
491
589
|
// 2) Explore
|
|
492
590
|
{
|
|
493
591
|
path: ['Explore', 'Graphs overview'],
|
|
494
592
|
expectedUrl: '/graphs',
|
|
495
|
-
checks: noAuthChecks
|
|
593
|
+
checks: noAuthChecks,
|
|
496
594
|
},
|
|
497
595
|
{
|
|
498
596
|
path: ['Explore', 'Class hierarchy'],
|
|
499
597
|
expectedUrl: '/hierarchy',
|
|
500
|
-
checks: noAuthChecks
|
|
598
|
+
checks: noAuthChecks,
|
|
501
599
|
},
|
|
502
600
|
{
|
|
503
601
|
path: ['Explore', 'Class relationships'],
|
|
504
602
|
expectedUrl: '/relationships',
|
|
505
|
-
checks: noAuthChecks
|
|
603
|
+
checks: noAuthChecks,
|
|
506
604
|
},
|
|
507
605
|
{
|
|
508
606
|
path: ['Explore', 'Visual graph'],
|
|
509
607
|
expectedUrl: '/graphs-visualizations',
|
|
510
|
-
checks: noAuthChecks
|
|
608
|
+
checks: noAuthChecks,
|
|
511
609
|
},
|
|
512
610
|
{
|
|
513
611
|
path: ['Explore', 'Similarity'],
|
|
514
612
|
expectedTitle: 'Similarity indexes',
|
|
515
613
|
expectedUrl: '/similarity',
|
|
516
|
-
checks: noAuthChecks
|
|
614
|
+
checks: noAuthChecks,
|
|
517
615
|
},
|
|
518
616
|
|
|
519
617
|
// 3) SPARQL
|
|
@@ -521,7 +619,7 @@ describe('User and Access', () => {
|
|
|
521
619
|
path: ['SPARQL'],
|
|
522
620
|
expectedTitle: 'SPARQL Query & Update',
|
|
523
621
|
expectedUrl: '/sparql',
|
|
524
|
-
checks: noAuthChecks
|
|
622
|
+
checks: noAuthChecks,
|
|
525
623
|
},
|
|
526
624
|
|
|
527
625
|
// 4) GraphQL
|
|
@@ -531,7 +629,7 @@ describe('User and Access', () => {
|
|
|
531
629
|
path: ['Monitor', 'Queries and Updates'],
|
|
532
630
|
expectedUrl: '/monitor/queries',
|
|
533
631
|
expectedTitle: 'Query and Update monitoring',
|
|
534
|
-
checks: noAuthChecks
|
|
632
|
+
checks: noAuthChecks,
|
|
535
633
|
},
|
|
536
634
|
|
|
537
635
|
// 6) Setup
|
|
@@ -539,58 +637,58 @@ describe('User and Access', () => {
|
|
|
539
637
|
path: ['Setup', 'My Settings'],
|
|
540
638
|
expectedUrl: '/settings',
|
|
541
639
|
expectedTitle: 'Settings',
|
|
542
|
-
checks: hasAuthChecks
|
|
640
|
+
checks: hasAuthChecks,
|
|
543
641
|
},
|
|
544
642
|
{
|
|
545
643
|
path: ['Setup', 'Connectors'],
|
|
546
644
|
expectedUrl: '/connectors',
|
|
547
645
|
expectedTitle: 'Connector management',
|
|
548
|
-
checks: noAuthChecks
|
|
646
|
+
checks: noAuthChecks,
|
|
549
647
|
},
|
|
550
648
|
{
|
|
551
649
|
path: ['Setup', 'Cluster'],
|
|
552
650
|
expectedUrl: '/cluster',
|
|
553
651
|
expectedTitle: 'Cluster management',
|
|
554
|
-
checks: hasAuthChecks
|
|
652
|
+
checks: hasAuthChecks,
|
|
555
653
|
},
|
|
556
654
|
{
|
|
557
655
|
path: ['Setup', 'Plugins'],
|
|
558
656
|
expectedUrl: '/plugins',
|
|
559
|
-
checks: noAuthChecks
|
|
657
|
+
checks: noAuthChecks,
|
|
560
658
|
},
|
|
561
659
|
{
|
|
562
660
|
path: ['Setup', 'Namespaces'],
|
|
563
661
|
expectedUrl: '/namespaces',
|
|
564
|
-
checks: noAuthChecks
|
|
662
|
+
checks: noAuthChecks,
|
|
565
663
|
},
|
|
566
664
|
{
|
|
567
665
|
path: ['Setup', 'Autocomplete'],
|
|
568
666
|
expectedUrl: '/autocomplete',
|
|
569
667
|
expectedTitle: 'Autocomplete index',
|
|
570
|
-
checks: noAuthChecks
|
|
668
|
+
checks: noAuthChecks,
|
|
571
669
|
},
|
|
572
670
|
{
|
|
573
671
|
path: ['Setup', 'RDF Rank'],
|
|
574
672
|
expectedUrl: '/rdfrank',
|
|
575
|
-
checks: noAuthChecks
|
|
673
|
+
checks: noAuthChecks,
|
|
576
674
|
},
|
|
577
675
|
{
|
|
578
676
|
path: ['Setup', 'JDBC'],
|
|
579
677
|
expectedUrl: '/jdbc',
|
|
580
678
|
expectedTitle: 'JDBC configuration',
|
|
581
|
-
checks: noAuthChecks
|
|
679
|
+
checks: noAuthChecks,
|
|
582
680
|
},
|
|
583
681
|
{
|
|
584
682
|
path: ['Setup', 'SPARQL Templates'],
|
|
585
683
|
expectedUrl: '/sparql-templates',
|
|
586
|
-
checks: noAuthChecks
|
|
684
|
+
checks: noAuthChecks,
|
|
587
685
|
},
|
|
588
686
|
|
|
589
687
|
// 7) Lab
|
|
590
688
|
{
|
|
591
689
|
path: ['Lab', 'Talk to Your Graph'],
|
|
592
690
|
expectedUrl: '/ttyg',
|
|
593
|
-
checks: noAuthChecks
|
|
691
|
+
checks: noAuthChecks,
|
|
594
692
|
},
|
|
595
693
|
|
|
596
694
|
// 8) Help
|
|
@@ -598,38 +696,38 @@ describe('User and Access', () => {
|
|
|
598
696
|
path: ['Help', 'REST API'],
|
|
599
697
|
expectedUrl: '/webapi',
|
|
600
698
|
expectedTitle: 'REST API documentation',
|
|
601
|
-
checks: hasAuthChecks
|
|
602
|
-
}
|
|
699
|
+
checks: hasAuthChecks,
|
|
700
|
+
},
|
|
603
701
|
];
|
|
604
702
|
|
|
605
703
|
const GRAPHQL_READ_MENU_ITEMS = [
|
|
606
704
|
{
|
|
607
705
|
path: ['GraphQL', 'GraphQL Playground'],
|
|
608
706
|
expectedUrl: '/graphql/playground',
|
|
609
|
-
checks: hasAuthChecks
|
|
610
|
-
}
|
|
707
|
+
checks: hasAuthChecks,
|
|
708
|
+
},
|
|
611
709
|
];
|
|
612
710
|
const GRAPHQL_REPO_MANAGER_MENU_ITEMS = [
|
|
613
711
|
{
|
|
614
712
|
path: ['GraphQL', 'Endpoint Management'],
|
|
615
713
|
expectedUrl: '/graphql/endpoints',
|
|
616
|
-
checks: hasAuthChecks
|
|
714
|
+
checks: hasAuthChecks,
|
|
617
715
|
},
|
|
618
716
|
{
|
|
619
717
|
path: ['GraphQL', 'GraphQL Playground'],
|
|
620
718
|
expectedUrl: '/graphql/playground',
|
|
621
|
-
checks: hasAuthChecks
|
|
719
|
+
checks: hasAuthChecks,
|
|
622
720
|
},
|
|
623
721
|
{
|
|
624
722
|
path: ['Monitor', 'Backup and Restore'],
|
|
625
723
|
expectedUrl: '/monitor/backup-and-restore',
|
|
626
|
-
checks: hasAuthChecks
|
|
724
|
+
checks: hasAuthChecks,
|
|
627
725
|
},
|
|
628
726
|
{
|
|
629
727
|
path: ['Help', 'Interactive guides'],
|
|
630
728
|
expectedUrl: '/guides',
|
|
631
|
-
checks: hasAuthChecks
|
|
632
|
-
}
|
|
729
|
+
checks: hasAuthChecks,
|
|
730
|
+
},
|
|
633
731
|
];
|
|
634
732
|
|
|
635
733
|
const FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL = [
|
|
@@ -637,35 +735,35 @@ describe('User and Access', () => {
|
|
|
637
735
|
{
|
|
638
736
|
path: ['Import'],
|
|
639
737
|
expectedUrl: '/import',
|
|
640
|
-
checks: noAuthChecks
|
|
738
|
+
checks: noAuthChecks,
|
|
641
739
|
},
|
|
642
740
|
|
|
643
741
|
// 2) Explore
|
|
644
742
|
{
|
|
645
743
|
path: ['Explore', 'Graphs overview'],
|
|
646
744
|
expectedUrl: '/graphs',
|
|
647
|
-
checks: noAuthChecks
|
|
745
|
+
checks: noAuthChecks,
|
|
648
746
|
},
|
|
649
747
|
{
|
|
650
748
|
path: ['Explore', 'Class hierarchy'],
|
|
651
749
|
expectedUrl: '/hierarchy',
|
|
652
|
-
checks: noAuthChecks
|
|
750
|
+
checks: noAuthChecks,
|
|
653
751
|
},
|
|
654
752
|
{
|
|
655
753
|
path: ['Explore', 'Class relationships'],
|
|
656
754
|
expectedUrl: '/relationships',
|
|
657
|
-
checks: noAuthChecks
|
|
755
|
+
checks: noAuthChecks,
|
|
658
756
|
},
|
|
659
757
|
{
|
|
660
758
|
path: ['Explore', 'Visual graph'],
|
|
661
759
|
expectedUrl: '/graphs-visualizations',
|
|
662
|
-
checks: noAuthChecks
|
|
760
|
+
checks: noAuthChecks,
|
|
663
761
|
},
|
|
664
762
|
{
|
|
665
763
|
path: ['Explore', 'Similarity'],
|
|
666
764
|
expectedTitle: 'Similarity indexes',
|
|
667
765
|
expectedUrl: '/similarity',
|
|
668
|
-
checks: noAuthChecks
|
|
766
|
+
checks: noAuthChecks,
|
|
669
767
|
},
|
|
670
768
|
|
|
671
769
|
// 3) SPARQL
|
|
@@ -673,48 +771,47 @@ describe('User and Access', () => {
|
|
|
673
771
|
path: ['SPARQL'],
|
|
674
772
|
expectedTitle: 'SPARQL Query & Update',
|
|
675
773
|
expectedUrl: '/sparql',
|
|
676
|
-
checks: noAuthChecks
|
|
774
|
+
checks: noAuthChecks,
|
|
677
775
|
},
|
|
678
776
|
|
|
679
|
-
|
|
680
777
|
// 6) Setup
|
|
681
778
|
{
|
|
682
779
|
path: ['Setup', 'Connectors'],
|
|
683
780
|
expectedUrl: '/connectors',
|
|
684
781
|
expectedTitle: 'Connector management',
|
|
685
|
-
checks: noAuthChecks
|
|
782
|
+
checks: noAuthChecks,
|
|
686
783
|
},
|
|
687
784
|
{
|
|
688
785
|
path: ['Setup', 'Plugins'],
|
|
689
786
|
expectedUrl: '/plugins',
|
|
690
|
-
checks: noAuthChecks
|
|
787
|
+
checks: noAuthChecks,
|
|
691
788
|
},
|
|
692
789
|
{
|
|
693
790
|
path: ['Setup', 'Namespaces'],
|
|
694
791
|
expectedUrl: '/namespaces',
|
|
695
|
-
checks: noAuthChecks
|
|
792
|
+
checks: noAuthChecks,
|
|
696
793
|
},
|
|
697
794
|
{
|
|
698
795
|
path: ['Setup', 'Autocomplete'],
|
|
699
796
|
expectedUrl: '/autocomplete',
|
|
700
797
|
expectedTitle: 'Autocomplete index',
|
|
701
|
-
checks: noAuthChecks
|
|
798
|
+
checks: noAuthChecks,
|
|
702
799
|
},
|
|
703
800
|
{
|
|
704
801
|
path: ['Setup', 'RDF Rank'],
|
|
705
802
|
expectedUrl: '/rdfrank',
|
|
706
|
-
checks: noAuthChecks
|
|
803
|
+
checks: noAuthChecks,
|
|
707
804
|
},
|
|
708
805
|
{
|
|
709
806
|
path: ['Setup', 'JDBC'],
|
|
710
807
|
expectedUrl: '/jdbc',
|
|
711
808
|
expectedTitle: 'JDBC configuration',
|
|
712
|
-
checks: noAuthChecks
|
|
809
|
+
checks: noAuthChecks,
|
|
713
810
|
},
|
|
714
811
|
{
|
|
715
812
|
path: ['Setup', 'SPARQL Templates'],
|
|
716
813
|
expectedUrl: '/sparql-templates',
|
|
717
|
-
checks: noAuthChecks
|
|
814
|
+
checks: noAuthChecks,
|
|
718
815
|
},
|
|
719
816
|
|
|
720
817
|
// 7) Help
|
|
@@ -722,7 +819,7 @@ describe('User and Access', () => {
|
|
|
722
819
|
path: ['Help', 'REST API'],
|
|
723
820
|
expectedUrl: '/webapi',
|
|
724
821
|
expectedTitle: 'REST API documentation',
|
|
725
|
-
checks: hasAuthChecks
|
|
726
|
-
}
|
|
822
|
+
checks: hasAuthChecks,
|
|
823
|
+
},
|
|
727
824
|
];
|
|
728
825
|
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
|
|
4
|
+
function validateInitialState() {
|
|
5
|
+
UserAndAccessSteps.getCreateNewUserButton().should('be.visible');
|
|
6
|
+
UserAndAccessSteps.getToggleSecuritySwitch().should('be.visible');
|
|
7
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('Users and Access initial state', () => {
|
|
11
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
12
|
+
// Given, I visit the Users and Access page via URL
|
|
13
|
+
UserAndAccessSteps.visit();
|
|
14
|
+
// Then,
|
|
15
|
+
validateInitialState();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
19
|
+
// Given, I visit the Users and Access page via the navigation menu
|
|
20
|
+
UserAndAccessSteps.visit();
|
|
21
|
+
MainMenuSteps.clickOnUsersAndAccess();
|
|
22
|
+
// Then,
|
|
23
|
+
validateInitialState();
|
|
24
|
+
});
|
|
25
|
+
})
|