graphdb-workbench-tests 2.3.1 → 2.4.0-RC1

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.
Files changed (32) hide show
  1. package/fixtures/locale-en.json +133 -11
  2. package/fixtures/monitoring/backup-and-restore.json +19 -0
  3. package/fixtures/monitoring/global-operation-statuses.json +30 -0
  4. package/fixtures/setup/aclmanagement/get-rules.json +44 -0
  5. package/integration/explore/similarity.spec.js +2 -2
  6. package/integration/import/import.user.data.spec.js +4 -4
  7. package/integration/monitor/global-operation-statuses-component.spec.js +106 -0
  8. package/integration/monitor/monitor.backup-and-restore.spec.js +25 -0
  9. package/integration/setup/aclmanagement/create-rule.spec.js +107 -0
  10. package/integration/setup/aclmanagement/delete-rule.spec.js +45 -0
  11. package/integration/setup/aclmanagement/edit-rule.spec.js +83 -0
  12. package/integration/setup/aclmanagement/render-rules.spec.js +48 -0
  13. package/integration/setup/aclmanagement/reorder-rules.spec.js +32 -0
  14. package/integration/setup/aclmanagement/revert-rules.spec.js +56 -0
  15. package/integration/setup/aclmanagement/update-rules.spec.js +75 -0
  16. package/integration/setup/my-settings.spec.js +1 -1
  17. package/integration/setup/sparql-templates.spec.js +1 -1
  18. package/integration/sparql/main.menu.spec.js +36 -0
  19. package/integration/sparql/sparql.menu.spec.js +1 -1
  20. package/integration-flaky/setup/sparql-templates.spec.js +1 -1
  21. package/package.json +1 -1
  22. package/steps/application-steps.js +22 -0
  23. package/steps/import-steps.js +6 -3
  24. package/steps/modal-dialog-steps.js +113 -0
  25. package/steps/monitoring/backup-and-restore-steps.js +14 -0
  26. package/steps/operations-statuses-component-steps.js +21 -0
  27. package/steps/setup/acl-management-steps.js +274 -0
  28. package/steps/sparql-steps.js +1 -1
  29. package/stubs/backup-and-restore-stubs.js +7 -0
  30. package/stubs/global-operations-statuses-stub.js +7 -0
  31. package/stubs/stubs.js +5 -0
  32. package/support/repository-commands.js +8 -3
@@ -26,7 +26,15 @@
26
26
  "node_state_restricted": "Restricted",
27
27
  "link_state_in_sync": "In sync",
28
28
  "link_state_syncing": "Syncing",
29
- "link_state_out_of_sync": "Out of sync"
29
+ "link_state_out_of_sync": "Out of sync",
30
+ "recovery_state": {
31
+ "searching_for_node": "Searching for node",
32
+ "applying_snapshot": "Applying a snapshot",
33
+ "building_snapshot": "Building a snapshot for {{node}}",
34
+ "waiting_for_snapshot": "Waiting for snapshot from node {{node}}",
35
+ "sending_snapshot": "Sending a snapshot to node {{node}}",
36
+ "receiving_snapshot": "Receiving a snapshot from node {{node}}"
37
+ }
30
38
  },
31
39
  "cluster_configuration": {
32
40
  "label": "Cluster configuration",
@@ -51,7 +59,9 @@
51
59
  "message_size_kb": "Message size KB",
52
60
  "message_size_kb_tooltip": "Message size concerns the size of the data blocks transferred during data replication streaming through the RPC protocol.",
53
61
  "verification_timeout": "Verification timeout",
54
- "verification_timeout_tooltip": "Verification timeout concerns the amount of time a follower node would wait until attempting to verify last committed entry when the first verification is unsuccessful."
62
+ "verification_timeout_tooltip": "Verification timeout concerns the amount of time a follower node would wait until attempting to verify last committed entry when the first verification is unsuccessful.",
63
+ "transaction_log_maximum_size_gb": "Transaction log maximum size GB",
64
+ "transaction_log_maximum_size_gb_tooltip": "Maximum size of the transaction log in GBs that will trigger an automatic truncation of the transaction log if it becomes bigger. The minimum transaction log size is 1 GB. Negative numbers will disable the automatic transaction log truncation."
55
65
  },
56
66
  "cluster_page": {
57
67
  "create_page_title": "Create cluster",
@@ -70,6 +80,7 @@
70
80
  "toggle_legend_btn": "Toggle legend",
71
81
  "errors": {
72
82
  "only_positive_integers": "Enter only positive integers",
83
+ "small_transaction_log_max_size": "Transaction log maximum size must be at least 1 GB or a negative number",
73
84
  "at_least_two_nodes": "Must have at least two nodes",
74
85
  "no_rpc_address": "Error retrieving RPC address: {{error}}",
75
86
  "nodes_status_label": "Nodes status",
@@ -116,6 +127,49 @@
116
127
  "content": "Select nodes to be removed from existing cluster"
117
128
  }
118
129
  },
130
+ "acl_management": {
131
+ "rulestable": {
132
+ "column": {
133
+ "index": "#",
134
+ "subject": "Subject",
135
+ "predicate": "Predicate",
136
+ "object": "Object",
137
+ "context": "Context",
138
+ "role": "Role",
139
+ "policy": "Policy"
140
+ },
141
+ "field_placeholders": {
142
+ "subject": "Subject",
143
+ "predicate": "Predicate",
144
+ "object": "Object",
145
+ "context": "Context",
146
+ "role": "Role"
147
+ },
148
+ "actions": {
149
+ "move_up": "Move the rule up",
150
+ "move_down": "Move the rule down",
151
+ "delete_rule": "Delete rule",
152
+ "add_rule": "Add new rule",
153
+ "edit_rule": "Edit rule",
154
+ "save_rule": "Save rule",
155
+ "cancel_rule_editing": "Cancel rule editing",
156
+ "save_acl": "Save ACL",
157
+ "cancel_acl_saving": "Cancel"
158
+ },
159
+ "messages": {
160
+ "no_data": "There are no rules defined in current repository",
161
+ "invalid_form": "Fill in valid data in all fields before saving rule",
162
+ "delete_rule_confirmation": "Are you sure you want to delete the selected rule #{{index}}?",
163
+ "revert_acl_list": "This operation will revert all the changes done in the ACL. Are you sure you want to proceed?",
164
+ "rules_updated": "ACL was updated successfully",
165
+ "rules_reverted": "ACL was reverted successfully"
166
+ }
167
+ },
168
+ "errors": {
169
+ "loading_rules": "Error during ACL rules",
170
+ "updating_rules": "Error during ACL rules update"
171
+ }
172
+ },
119
173
  "config.name.label": "Config name",
120
174
  "graph.config.required": "My graph config (required)",
121
175
  "description.text": "Description",
@@ -177,6 +231,7 @@
177
231
  "closes.config.no.save": "Closes the configuration without saving the changes.",
178
232
  "refresh.to.retry": "Refresh the page to retry.",
179
233
  "temp.pause": "Temporarily pauses query monitoring so you can copy text",
234
+ "temp.pause.backup_and_restore": "Temporarily pauses backup and restore monitoring so you can copy text",
180
235
  "paused.btn": "Paused",
181
236
  "pause.btn": "Pause",
182
237
  "node.label": "node",
@@ -416,10 +471,16 @@
416
471
  "security.ignore.shared.queries": "Ignore shared saved queries in SPARQL editor",
417
472
  "security.workbench.settings.title": "Workbench settings",
418
473
  "security.workbench.settings.theme.label": "Theme",
474
+ "security.workbench.settings.theme.mode.label": "Mode",
419
475
  "security.workbench.settings.theme.tooltip": "Various workbench settings that are not saved with the user's account but in the browser's storage",
420
- "security.workbench.settings.theme.light": "Light",
421
- "security.workbench.settings.theme.dark": "Dark",
476
+ "security.workbench.settings.theme.mode.light": "Light",
477
+ "security.workbench.settings.theme.mode.dark": "Dark",
478
+ "security.workbench.settings.theme.default-theme": "Default theme",
479
+ "security.workbench.settings.theme.onto-original-theme": "Ontotext original theme",
480
+ "security.workbench.settings.theme.validation.missing-fields": "Color theme validation error. Check browser log for more details!",
422
481
  "security.user.role": "User role",
482
+ "security.user.custom_role": "Custom roles",
483
+ "security.user.add.custom_role.msg": "Add custom role...",
423
484
  "security.user.label": "User",
424
485
  "security.repo.manager.label": "Repository manager",
425
486
  "security.admin.label": "Administrator",
@@ -540,6 +601,20 @@
540
601
  "view.namespaces.helpInfo": "The Namespaces view provides an overview of all namespaces defined in a GraphDB repository. Namespaces are essentially shorthand notations for IRIs. Here you can add, remove and modify them.",
541
602
  "view.query.and.update.monitoring.title": "Query and Update monitoring",
542
603
  "view.query.and.update.monitoring.helpInfo": "The Queries and Updates monitoring view shows all running queries and updates in a GraphDB repository. A query or update can be terminated by pressing the Abort button.",
604
+ "view.monitoring.backup_and_restore.title": "Backup and Restore",
605
+ "view.monitoring.backup_and_restore.helpInfo": "The Backup and Restore monitoring view shows running backup or restore operation.",
606
+ "view.monitoring.backup_and_restore.id.header": "Id",
607
+ "view.monitoring.backup_and_restore.username.header": "Username",
608
+ "view.monitoring.backup_and_restore.recovery_operation_type.header": "Recovery operation type",
609
+ "view.monitoring.backup_and_restore.affected_repositories.header": "Affected repositories",
610
+ "view.monitoring.backup_and_restore.lifetime.header": "Lifetime",
611
+ "view.monitoring.backup_and_restore.snapshot_options.header": "Snapshot options",
612
+ "view.monitoring.backup_and_restore.node_performing_cluster_backup.header": "Node performing backup",
613
+ "view.monitoring.backup_and_restore.CREATE_BACKUP_IN_PROGRESS": "Creating backup",
614
+ "view.monitoring.backup_and_restore.RESTORE_BACKUP_IN_PROGRESS": "Restoring backup",
615
+ "view.monitoring.backup_and_restore.CREATE_CLOUD_BACKUP_IN_PROGRESS": "Creating cloud backup",
616
+ "view.monitoring.backup_and_restore.RESTORE_CLOUD_BACKUP_IN_PROGRESS": "Restoring cloud backup",
617
+ "view.monitoring.backup_and_restore.no_running_backup_and_restore": "No running backup or restore.",
543
618
  "view.rdf.rank.title": "RDF Rank",
544
619
  "view.rdf.rank.helpInfo": "RDF Rank is an algorithm that identifies the most important or popular entities in the repository by examining their interconnectedness. The popularity of the entities can be used to order the query results. Use this view to configure the RDF rank, recompute it or check the current state.",
545
620
  "view.repositories.helpInfo": "The Repositories view is used to create, modify and delete repositories and connections to remote GraphDB instances (also known as remote locations).",
@@ -549,6 +624,8 @@
549
624
  "view.resource.monitoring.title": "System monitoring",
550
625
  "view.resource.monitoring.helpInfo": "The System monitoring view shows the usage of various system resources, such as memory, CPU, file descriptors, and storage space. It also shows some performance metrics that allow you to diagnose various issues, as well as an overview of the cluster health",
551
626
  "view.users.access.helpInfo": "The Users and Access view is used to manage the users and their access to the GraphDB repositories. You can also enable or disable the security of the entire GraphDB. When security is disabled, everyone has full access to the repositories and the admin functionality.",
627
+ "view.aclmanagement.title": "ACL Management",
628
+ "view.aclmanagement.helpInfo": "The ACL management view is used to manage the Access Control List, a mechanism for fine-grained access level control on the quad level of the repository. Each ACL rule consists of the quad (subject, predicate, object, context, including wildcards) whose level needs to be controlled, the applicable role membership and the policy (allow or deny) of the rule.",
552
629
  "view.create.user.title": "Create new user",
553
630
  "view.edit.user.title": "Edit user: {{userId}}",
554
631
  "view.login.title": "Login",
@@ -594,6 +671,7 @@
594
671
  "menu.sparql.label": "SPARQL",
595
672
  "menu.monitor.label": "Monitor",
596
673
  "menu.queries.and.updates.label": "Queries and Updates",
674
+ "menu.backup_and_restore.label": "Backup and Restore",
597
675
  "menu.enableFtsIndex.label": "Enable full-text search (FTS) index",
598
676
  "menu.ftsIndexes.label": "FTS indexes to build (comma delimited)",
599
677
  "menu.ftsStringLiteralsIndex.label": "FTS index for xsd:string literals",
@@ -601,7 +679,10 @@
601
679
  "menu.ftsDefaultAnalyzer.label": "Analyzer for the default index",
602
680
  "menu.resources.label": "System",
603
681
  "menu.setup.label": "Setup",
682
+ "menu.lab.label": "Lab",
683
+ "menu.ttyg.label": "Talk to Your Graph",
604
684
  "menu.repositories.label": "Repositories",
685
+ "menu.aclmanagement.label": "ACL Management",
605
686
  "menu.users.and.access.label": "Users and Access",
606
687
  "menu.my.settings.label": "My Settings",
607
688
  "menu.cluster.label": "Cluster",
@@ -828,6 +909,7 @@
828
909
  "import.reset.status": "Reset status",
829
910
  "import.remove.selected": "Remove the selected items from the list",
830
911
  "import.remove.btn": "Remove",
912
+ "import.remove.confirm.msg": "Are you sure you want to remove selected files: '{{name}}'?",
831
913
  "import.last.import.settings": "Last import settings",
832
914
  "import.mode.not.supported.constraint": "This mode is not supported when importing multiple items.",
833
915
  "import.enable.replace.option": "Enable this to replace the data in one or more graphs with the imported data.",
@@ -901,6 +983,7 @@
901
983
  "export.clear.graph.msg": "Failed to clear the {{longName}}",
902
984
  "export.warning.clear.graph.msg": "Are you sure you want to clear the selected graphs?",
903
985
  "export.cleared.graph.msg": "Cleared the selected graphs",
986
+ "namespace.saved": "Namespace saved",
904
987
  "namespace.confirm.replace": "Confirm replace",
905
988
  "namespace.already.exists.msg": "This namespace prefix already exists. Do you want to replace it?",
906
989
  "namespace.warning.delete.msg": "Are you sure you want to delete the namespace '{{prefix}}'?",
@@ -1009,9 +1092,9 @@
1009
1092
  "location.change.confirm": "Confirm location change",
1010
1093
  "location.change.confirm.warning": "Are you sure you want to change the location?",
1011
1094
  "location.label": "Location:",
1012
- "delete.repo.warning.msg": "<p>Are you sure you want to delete the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span>All data in the repository will be lost.</p>",
1095
+ "delete.repo.warning.msg": "<p>Are you sure you want to delete the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>All data in the repository will be lost.</p>",
1013
1096
  "confirm.restart.repo": "Confirm restart",
1014
- "confirm.restart.repo.warning.msg": "<p>Are you sure you want to restart the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span>The repository will be shut down immediately and all running queries and updates will be cancelled.</p>",
1097
+ "confirm.restart.repo.warning.msg": "<p>Are you sure you want to restart the repository <strong>{{repositoryId}}</strong>?</p><p><span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>The repository will be shut down immediately and all running queries and updates will be cancelled.</p>",
1015
1098
  "location.cannot.be.empty.error": "Location cannot be empty",
1016
1099
  "required.field": "This field is required",
1017
1100
  "created.repo.success.msg": "The repository {{repoId}} has been created.",
@@ -1022,9 +1105,9 @@
1022
1105
  "edit.repo.error.not.exists": "Repo with name <b>{{repositoryId}}</b> doesn't exists",
1023
1106
  "edit.repo.success.msg": "The repository {{saveId}} has been edited.",
1024
1107
  "edit.repo.save.changes.msg": "Save changes to repository <strong>{{repoId}}</strong>?<br><br>",
1025
- "edit.repo.rename.changes.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span>The repository will be stopped and renamed.",
1026
- "edit.repo.restart.requested.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span>The repository will be restarted.",
1027
- "edit.repo.restart.needed.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span>Repository restart required for changes to take effect.",
1108
+ "edit.repo.rename.changes.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>The repository will be stopped and renamed.",
1109
+ "edit.repo.restart.requested.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>The repository will be restarted.",
1110
+ "edit.repo.restart.needed.msg": "<span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span>Repository restart required for changes to take effect.",
1028
1111
  "edit.repo.id.warning.msg": "<p>Changing the repository ID is a dangerous operation since it renames the repository folder and enforces repository shutdown.</p>",
1029
1112
  "edit.repo.id.cluster.warning.msg": "<p>If your repository is in a cluster, it is your responsibility to update the cluster after renaming.</p>",
1030
1113
  "confirm.enable.edit": "Confirm enable edit",
@@ -1260,7 +1343,7 @@
1260
1343
  "sparql.template.delete.template.failure": "Could not delete {{templateID}} template",
1261
1344
  "sparql.template.get.template.error": "Could not get {{templateID}} template",
1262
1345
  "sparql.template.iri.constraint": "SPARQL template IRI is required",
1263
- "sparql.template.existing.template.error": "<div>SPARQL Template <strong>{{templateID}}</strong> already exists.</div><br><div><span class=\"icon-2x icon-warning\" style=\"color: var(--onto-orange-dark)\"></span> Do you want to override the template query?</div>",
1346
+ "sparql.template.existing.template.error": "<div>SPARQL Template <strong>{{templateID}}</strong> already exists.</div><br><div><span class=\"icon-2x icon-warning\" style=\"color: var(--primary-color-dark)\"></span> Do you want to override the template query?</div>",
1264
1347
  "update.sparql.template.success.msg": "Updated SPARQL template",
1265
1348
  "save.sparql.template.failure.msg": "Could not save {{templateID}} template",
1266
1349
  "sparql.template.query.constraint": "The template query must be an UPDATE query",
@@ -1809,5 +1892,44 @@
1809
1892
  "guide.step_plugin.welcome-what.content": "{{translatedGuideDescription}}<p>Let's get started for real now!</p>",
1810
1893
  "guide.confirm.cancel.message": "Are you sure you want to stop the guide?",
1811
1894
  "guide.unexpected.error.message": "The guide was cancelled due to an unexpected error. Please run the guide again and if the problem persists contact the support.",
1812
- "guide.start.unexpected.error.message": "The guide cannot be started due to an unexpected error. Please try running the guide again and if the problem persists contact the support."
1895
+ "guide.start.unexpected.error.message": "The guide cannot be started due to an unexpected error. Please try running the guide again and if the problem persists contact the support.",
1896
+ "ttyg.helpInfo": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model. The bot works in connection with the ChatGPT Retrieval connector.",
1897
+ "ttyg.hint": "Talk to your graph – simply ask a question!",
1898
+ "ttyg.help.what.title": "What is this?",
1899
+ "ttyg.help.what.content": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model.",
1900
+ "ttyg.help.how.title": "How does it work?",
1901
+ "ttyg.help.how.content": "The bot uses the ChatGPT Retrieval connector to fetch information it does not know about. As such, you must first create a suitable connector. See also the settings for fine-tuning the integration with the Retrieval connector.",
1902
+ "ttyg.ask.button": "Ask",
1903
+ "ttyg.clear.hint": "Clear the chat history",
1904
+ "ttyg.clear.history.confirmation": "This will clear the history conversation.",
1905
+ "ttyg.settings.title": "Talk to Your Graph Settings",
1906
+ "ttyg.settings.info": "The settings are stored in the browser only and are per repository.",
1907
+ "ttyg.settings.connector.id": "Retrieval connector ID",
1908
+ "ttyg.settings.connector.id.tooltip": "The ID of the Retrieval connector to use. If empty, the first defined connector will be used.",
1909
+ "ttyg.settings.query.template": "Query template",
1910
+ "ttyg.settings.query.template.tooltip": "The query template used by the chat bot to request more information from the connector. It must contain at least the \"query\" key but may also contain a \"filter\" key if your connector has suitable metadata.",
1911
+ "ttyg.settings.ground.truths": "Ground truths",
1912
+ "ttyg.settings.ground.truths.tooltip": "An optional list of ground truths that help the chat bot to establish context.",
1913
+ "ttyg.settings.topk": "Number of top results",
1914
+ "ttyg.settings.topk.tooltip": "Number of results returned to the chat bot when it requests more information. More results will provide more information but they may also introduce noise.",
1915
+ "ttyg.settings.echo.vector.query": "Echo vector query",
1916
+ "ttyg.settings.echo.vector.query.tooltip": "If enabled the bot will use the generated queries as feedback to the GPT API.",
1917
+ "global.operations_statuses.queries.title": "Running query",
1918
+ "global.operations_statuses.queries.title.plural": "Running queries",
1919
+ "global.operations_statuses.updates.title": "Running update",
1920
+ "global.operations_statuses.updates.title.plural": "Running updates",
1921
+ "global.operations_statuses.imports.title": "Running import",
1922
+ "global.operations_statuses.imports.title.plural": "Running imports",
1923
+ "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title": "Creating backup",
1924
+ "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title.plural": "Creating backups",
1925
+ "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title": "Restoring backup",
1926
+ "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title.plural": "Restoring backups",
1927
+ "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title": "Creating cloud backup",
1928
+ "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Creating cloud backups",
1929
+ "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title": "Restoring cloud backup",
1930
+ "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Restoring cloud backups",
1931
+ "global.operations_statuses.IN_SYNC.title": "In sync",
1932
+ "global.operations_statuses.RECOVERING.title": "Recovering",
1933
+ "global.operations_statuses.OUT_OF_SYNC.title": "Out of sync",
1934
+ "global.operations_statuses.UNAVAILABLE_NODES.title": "Unavailable nodes"
1813
1935
  }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "1",
3
+ "username": "admin",
4
+ "operation": "CREATE_CLOUD_BACKUP",
5
+ "affectedRepositories": [
6
+ "1"
7
+ ],
8
+ "msSinceCreated": 23416,
9
+ "snapshotOptions": {
10
+ "withRepositoryData": true,
11
+ "withSystemData": false,
12
+ "withClusterData": false,
13
+ "cleanDataDir": true,
14
+ "removeCluster": false,
15
+ "repositories": null,
16
+ "replicationTimeoutMs": null
17
+ },
18
+ "nodePerformingClusterBackup": null
19
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "status": "WARNING",
3
+ "allRunningOperations": [
4
+ {
5
+ "value": "25",
6
+ "status": "INFORMATION",
7
+ "type": "queries"
8
+ },
9
+ {
10
+ "value": "1",
11
+ "status": "INFORMATION",
12
+ "type": "updates"
13
+ },
14
+ {
15
+ "value": "1",
16
+ "status": "CRITICAL",
17
+ "type": "imports"
18
+ },
19
+ {
20
+ "value": "CREATE_BACKUP_IN_PROGRESS",
21
+ "status": "WARNING",
22
+ "type": "backupAndRestore"
23
+ },
24
+ {
25
+ "value": "UNAVAILABLE_NODES",
26
+ "status": "WARNING",
27
+ "type": "clusterHealth"
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "subject": "<urn:Mary>",
5
+ "predicate": "*",
6
+ "object": "*",
7
+ "context": "*",
8
+ "role": "!CUSTOM_ROLE2",
9
+ "policy": "allow"
10
+ },
11
+ {
12
+ "subject": "*",
13
+ "predicate": "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
14
+ "object": "*",
15
+ "context": "*",
16
+ "role": "CUSTOM_ROLE1",
17
+ "policy": "deny"
18
+ },
19
+ {
20
+ "subject": "<<<http://example.com/test> <http://www.w3.org/2000/01/rdf-schema#label> \"test aber auf Deutsch\"@de>>",
21
+ "predicate": "*",
22
+ "object": "\"test aber auf Deutsch\"@en",
23
+ "context": "<http://example.com/graph1>",
24
+ "role": "CUSTOM_ROLE3",
25
+ "policy": "deny"
26
+ },
27
+ {
28
+ "subject": "*",
29
+ "predicate": "*",
30
+ "object": "\"15\"^^<http://www.w3.org/2001/XMLSchema#int>",
31
+ "context": "*",
32
+ "role": "CUSTOM_ROLE3",
33
+ "policy": "allow"
34
+ },
35
+ {
36
+ "subject": "<urn:Cat>",
37
+ "predicate": "*",
38
+ "object": "<<<http://example.com/test> <http://www.w3.org/2000/01/rdf-schema#label> \"test aber auf Deutsch\"@de>>",
39
+ "context": "*",
40
+ "role": "CUSTOM_ROLE4",
41
+ "policy": "deny"
42
+ }
43
+ ]
44
+ }
@@ -193,7 +193,7 @@ describe('Similarity screen validation', () => {
193
193
 
194
194
  cy.visit('/sparql', {
195
195
  onBeforeLoad: (win) => {
196
- win.localStorage.setItem('com.ontotext.graphdb.repository', repositoryId);
196
+ win.localStorage.setItem('ls.repository-id', repositoryId);
197
197
  }
198
198
  });
199
199
  cy.window();
@@ -244,7 +244,7 @@ describe('Similarity screen validation', () => {
244
244
  initRepository();
245
245
  cy.visit('/similarity', {
246
246
  onBeforeLoad: (win) => {
247
- win.localStorage.setItem('com.ontotext.graphdb.repository', repositoryId);
247
+ win.localStorage.setItem('ls.repository-id', repositoryId);
248
248
  }
249
249
  });
250
250
  cy.window()
@@ -203,7 +203,7 @@ describe('Import screen validation - user data', () => {
203
203
  .clickImportTextSnippetButton();
204
204
  importFromData(true, "urn:graph1")
205
205
  verifyGraphData("urn:graph1", "urn:replaced-s1-custom", "urn:replaced-p1-custom", "urn:replaced-o1-custom", "urn:graph1", true, "urn:s1-custom");
206
- })
206
+ });
207
207
 
208
208
  it('Import RDF snippet in the default graph (The default graph) and replace data in the default graph', () => {
209
209
  ImportSteps
@@ -220,9 +220,9 @@ describe('Import screen validation - user data', () => {
220
220
  .fillRDFTextSnippet(REPLACEMENT_DATA)
221
221
  .selectRDFFormat("TriG")
222
222
  .clickImportTextSnippetButton();
223
- importInTheDefaultGraph(true)
223
+ importInTheDefaultGraph(true);
224
224
  verifyGraphData("The default graph", "urn:replaced-s1", "urn:replaced-p1", "urn:replaced-o1", "http://www.ontotext.com/explicit", true, "urn:s1");
225
- })
225
+ });
226
226
 
227
227
  it('Import RDF snippet in a named graph (Named graph) and replace data in the named graph', () => {
228
228
  ImportSteps
@@ -239,7 +239,7 @@ describe('Import screen validation - user data', () => {
239
239
  .fillRDFTextSnippet(REPLACEMENT_DATA)
240
240
  .selectRDFFormat("TriG")
241
241
  .clickImportTextSnippetButton();
242
- importInNamedGraph(true, "http://graph1")
242
+ importInNamedGraph(true, "http://graph1");
243
243
  verifyGraphData("http://graph1", "urn:replaced-s1", "urn:replaced-p1", "urn:replaced-o1", "http://graph1", true, "urn:s1");
244
244
  });
245
245
 
@@ -0,0 +1,106 @@
1
+ import HomeSteps from "../../steps/home-steps";
2
+ import {OperationsStatusesComponentSteps} from "../../steps/operations-statuses-component-steps";
3
+ import ImportSteps from "../../steps/import-steps";
4
+ import {GlobalOperationsStatusesStub} from "../../stubs/global-operations-statuses-stub";
5
+
6
+ describe('Operations Status Component', () => {
7
+
8
+ const repositoryId = 'backup-and-restore-' + Date.now();
9
+ beforeEach(() => {
10
+ cy.createRepository({id: repositoryId});
11
+ cy.presetRepository(repositoryId);
12
+ });
13
+
14
+ afterEach(() => {
15
+ cy.deleteRepository(repositoryId);
16
+ });
17
+
18
+ it('should not display the operation status component if there are not run operations.', () => {
19
+ // When I visit some page and there are no running operations.
20
+ HomeSteps.visitAndWaitLoader();
21
+ // Then I expect "Global Operations Component" to not be visible.
22
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('not.exist');
23
+
24
+ // When I visit some page and there are not running operations.
25
+ ImportSteps.visitUserImport(repositoryId);
26
+ // Then I expect "Global Operations Component" to not be visible.
27
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('not.exist');
28
+ });
29
+
30
+ it('should redirect to query and update view wen click on queries operation element', () => {
31
+ // When I visit some page and there are running operations.
32
+ GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
33
+ HomeSteps.visitAndWaitLoader();
34
+ // Then I expect "Global Operations Component" to be displayed.
35
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
36
+
37
+ OperationsStatusesComponentSteps.openOperationStatusesDialog();
38
+ // When I click on "Running query" operation element.
39
+ // Then I expect to be redirected to "Query and Update monitoring" view.
40
+ OperationsStatusesComponentSteps.checkOperationElementUrl('monitor/queries', 0);
41
+ // Then I expect "Global Operations Component" to still be displayed.
42
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
43
+ });
44
+
45
+ it('should redirect to query and update view wen click on updates operation element', () => {
46
+ // When I visit some page and there are running operations.
47
+ GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
48
+ HomeSteps.visitAndWaitLoader();
49
+ // Then I expect "Global Operations Component" to be displayed.
50
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
51
+
52
+ OperationsStatusesComponentSteps.openOperationStatusesDialog();
53
+ // When I click on "Running updates" operation element.
54
+ // Then I expect to be redirected to "Query and Update monitoring" view.
55
+ OperationsStatusesComponentSteps.checkOperationElementUrl('monitor/queries', 1);
56
+ // Then I expect "Global Operations Component" to still be displayed.
57
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
58
+ });
59
+
60
+ it('should redirect to query and update view wen click on imports operation element', () => {
61
+ // When I visit some page and there are running operations.
62
+ GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
63
+ HomeSteps.visitAndWaitLoader();
64
+ // Then I expect "Global Operations Component" to be displayed.
65
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
66
+
67
+ OperationsStatusesComponentSteps.openOperationStatusesDialog();
68
+ // When I click on "Running imports" operation element.
69
+ // Then I expect to be redirected to "Query and Update monitoring" view.
70
+ OperationsStatusesComponentSteps.checkOperationElementUrl('import', 2);
71
+ // Then I expect "Global Operations Component" to still be displayed.
72
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
73
+ });
74
+
75
+ it('should redirect to query and update view wen click on backup and restore operation element', () => {
76
+ // When I visit some page and there are running operations.
77
+ GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
78
+ HomeSteps.visitAndWaitLoader();
79
+ // Then I expect "Global Operations Component" to be displayed.
80
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
81
+
82
+ OperationsStatusesComponentSteps.openOperationStatusesDialog();
83
+ // When I click on "Creating backup" operation element.
84
+ // Then I expect to be redirected to "Backup and Restore" view.
85
+ OperationsStatusesComponentSteps.checkOperationElementUrl('monitor/backup-and-restore', 3);
86
+ // Then I expect "Global Operations Component" to still be displayed.
87
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
88
+
89
+ });
90
+
91
+ it('should redirect to query and update view wen click on cluster operation element', () => {
92
+ // When I visit some page and there are running operations.
93
+ GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
94
+ HomeSteps.visitAndWaitLoader();
95
+ // Then I expect "Global Operations Component" to be displayed.
96
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
97
+
98
+ OperationsStatusesComponentSteps.openOperationStatusesDialog();
99
+ // When I click on "Unavailable nodes" operation element.
100
+ // Then I expect to be redirected to "Cluster Monitoring" view.
101
+ OperationsStatusesComponentSteps.checkOperationElementUrl('cluster', 4);
102
+ // Then I expect "Global Operations Component" to still be displayed.
103
+ OperationsStatusesComponentSteps.getOperationsStatusesComponent().should('exist');
104
+
105
+ });
106
+ });
@@ -0,0 +1,25 @@
1
+ import {BackupAndRestoreSteps} from "../../steps/monitoring/backup-and-restore-steps";
2
+ import {BackupAndRestoreStubs} from "../../stubs/backup-and-restore-stubs";
3
+
4
+ describe("Monitoring 'Backup And Restore'", () => {
5
+
6
+ const repositoryId = 'backup-and-restore-' + Date.now();
7
+ beforeEach(() => {
8
+ cy.createRepository({id: repositoryId});
9
+ cy.presetRepository(repositoryId);
10
+ });
11
+
12
+ afterEach(() => {
13
+ cy.deleteRepository(repositoryId);
14
+ });
15
+
16
+ it('should show running backup or restore operations', () => {
17
+ // When visit the "Backup and restore page",
18
+ BackupAndRestoreSteps.visit();
19
+ // and there are run backup and restore operations.
20
+ BackupAndRestoreStubs.stubBackupAndRestoreResponse();
21
+
22
+ // Then I expect to see information for all run operations.
23
+ BackupAndRestoreSteps.getBackupAndRestoreResults().should('have.length', 1);
24
+ });
25
+ });