graphdb-workbench-tests 3.1.0-WBM-8 → 3.1.0-plugins1

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 (124) hide show
  1. package/.nycrc +10 -0
  2. package/cypress-legacy.config.js +9 -1
  3. package/cypress-security.config.js +40 -0
  4. package/cypress.config.js +3 -1
  5. package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
  6. package/e2e-legacy/cluster/edit-cluster-nodes-modal.spec.js +44 -0
  7. package/e2e-legacy/explore/class-hierarchy/class.hierarchy.spec.js +1 -2
  8. package/e2e-legacy/explore/graphs-overview/graphs.overview.spec.js +2 -3
  9. package/e2e-legacy/explore/visual-graph/graphs-config.spec.js +5 -18
  10. package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +1 -2
  11. package/e2e-legacy/graphql/activate-deactivate-graphql-endpoint.spec.js +1 -1
  12. package/e2e-legacy/graphql/create-graphql-endpoint.spec.js +1 -3
  13. package/e2e-legacy/graphql/delete-graphql-endpoint.spec.js +1 -1
  14. package/e2e-legacy/graphql/edit-graphql-enpoint.spec.js +1 -1
  15. package/e2e-legacy/graphql/export-graphql-endpoint-definition.spec.js +1 -1
  16. package/e2e-legacy/graphql/filter-graphql-endpoints-on-management-view.spec.js +2 -2
  17. package/e2e-legacy/graphql/graphql-endpoint-management-view.spec.js +5 -5
  18. package/e2e-legacy/graphql/graphql-playground.spec.js +1 -1
  19. package/e2e-legacy/graphql/import-graphql-endpoint-definitions.spec.js +1 -7
  20. package/e2e-legacy/graphql/set-default-graphql-endpoint.spec.js +1 -1
  21. package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
  22. package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
  23. package/e2e-legacy/{guides → help/guides}/movies-interactive-guide.spec.js +2 -2
  24. package/e2e-legacy/{guides → help/guides}/star-wars-interactive-guide.js +2 -2
  25. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
  26. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
  27. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
  28. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
  29. package/e2e-legacy/home/cookie-policy.spec.js +78 -59
  30. package/e2e-legacy/home/create-repository.spec.js +2 -6
  31. package/e2e-legacy/home/documentation-link.spec.js +31 -33
  32. package/e2e-legacy/home/google-analytics.spec.js +4 -6
  33. package/e2e-legacy/home/rdf-resource-search.spec.js +106 -138
  34. package/e2e-legacy/home/view-resource-autocomplete.spec.js +30 -21
  35. package/e2e-legacy/import/import-server-files-batch-operations.spec.js +1 -2
  36. package/e2e-legacy/import/import-server-files.spec.js +1 -2
  37. package/e2e-legacy/import/import-user-data-url.spec.js +1 -25
  38. package/e2e-legacy/import/import-user-data.spec.js +4 -2
  39. package/e2e-legacy/import/import-view.spec.js +1 -2
  40. package/e2e-legacy/monitor/global-operation-statuses-component.spec.js +13 -9
  41. package/e2e-legacy/repository/attach-remote-location.spec.js +2 -5
  42. package/e2e-legacy/repository/ontop-repository.spec.js +3 -12
  43. package/e2e-legacy/repository/repositories.spec.js +35 -46
  44. package/e2e-legacy/setup/aclmanagement/create-rule.spec.js +1 -2
  45. package/e2e-legacy/setup/aclmanagement/edit-rule.spec.js +1 -2
  46. package/e2e-legacy/setup/aclmanagement/reorder-rules.spec.js +1 -2
  47. package/e2e-legacy/setup/aclmanagement/scopes.spec.js +1 -2
  48. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
  49. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
  50. package/e2e-legacy/setup/{autocomplete.spec.js → autocomplete/autocomplete.spec.js} +5 -6
  51. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
  52. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
  53. package/e2e-legacy/setup/connectors-lucene.spec.js +1 -2
  54. package/e2e-legacy/setup/jdbc/jdbc-create.spec.js +2 -2
  55. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
  56. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
  57. package/e2e-legacy/setup/{namespaces.spec.js → namespaces/namespaces.spec.js} +4 -4
  58. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
  59. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
  60. package/e2e-legacy/setup/{plugins.spec.js → plugins/plugins.spec.js} +3 -3
  61. package/e2e-legacy/setup/sparql-template/sparql-template-create.js +10 -3
  62. package/e2e-legacy/setup/users-and-access/user-and-access.spec.js +38 -9
  63. package/e2e-legacy/sparql-editor/saved-query/edit-query.spec.js +3 -6
  64. package/e2e-legacy/sparql-editor/saved-query/readonly-query.spec.js +7 -13
  65. package/e2e-legacy/sparql-editor/saved-query/share-query.spec.js +2 -4
  66. package/e2e-legacy/sparql-editor/sparql-editor.spec.js +1 -4
  67. package/e2e-legacy/ttyg/agent-list.spec.js +38 -6
  68. package/e2e-legacy/ttyg/chat-list.spec.js +1 -2
  69. package/e2e-legacy/ttyg/clone-agent.spec.js +1 -0
  70. package/e2e-legacy/ttyg/create-agent.spec.js +10 -16
  71. package/e2e-legacy/ttyg/edit-agent.spec.js +69 -9
  72. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
  73. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
  74. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
  75. package/e2e-legacy/ttyg/ttyg-permission.spec.js +28 -20
  76. package/e2e-legacy/ttyg/ttyg-view.spec.js +1 -1
  77. package/e2e-security/setup/home/cookie-policy.spec.js +64 -0
  78. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +184 -0
  79. package/e2e-security/setup/users-and-access/graphql-user.spec.js +123 -0
  80. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +69 -0
  81. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +87 -0
  82. package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
  83. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
  84. package/fixtures/repositories/free-access.json +13 -0
  85. package/fixtures/repositories/get-remote-and-local-repositories.json +34 -0
  86. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
  87. package/fixtures/ttyg/agent/get-agent-defaults.json +2 -0
  88. package/npm-shrinkwrap.json +7633 -1817
  89. package/package.json +13 -7
  90. package/plugins/index.js +3 -2
  91. package/steps/base-steps.js +4 -0
  92. package/steps/cluster/cluster-page-steps.js +12 -2
  93. package/steps/error-steps.js +4 -7
  94. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  95. package/steps/guides/guide-steps.js +20 -1
  96. package/steps/home-steps.js +59 -37
  97. package/steps/import/import-steps.js +8 -3
  98. package/steps/login-steps.js +14 -3
  99. package/steps/main-menu-steps.js +76 -6
  100. package/steps/operations-statuses-component-steps.js +5 -10
  101. package/steps/rdf-resource-search-steps.js +55 -0
  102. package/steps/repository-steps.js +17 -17
  103. package/steps/rest-api-documentation-steps.js +15 -0
  104. package/steps/setup/autocomplete-steps.js +17 -3
  105. package/steps/setup/namespace-steps.js +8 -2
  106. package/steps/setup/plugins-steps.js +11 -1
  107. package/steps/setup/settings-steps.js +18 -0
  108. package/steps/setup/user-and-access-steps.js +28 -2
  109. package/steps/system-information-steps.js +70 -0
  110. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +74 -11
  111. package/steps/ttyg/ttyg-view-steps.js +39 -6
  112. package/steps/widgets/active-repository-widget-steps.js +4 -0
  113. package/steps/yasgui/yasr-steps.js +4 -0
  114. package/stubs/browser-stubs.js +21 -0
  115. package/stubs/environment-stubs.js +9 -1
  116. package/stubs/repositories/repositories-stubs.js +4 -0
  117. package/stubs/security-stubs.js +4 -0
  118. package/stubs/ttyg/ttyg-stubs.js +18 -2
  119. package/support/e2e.js +2 -1
  120. package/support/repository-commands.js +14 -1
  121. package/e2e-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -57
  122. package/e2e-flaky/ttyg/ttyg-permission.spec.js +0 -67
  123. package/fixtures/locale-en.json +0 -3361
  124. /package/e2e-legacy/help/{system-information.spec.js → system-information/system-information.spec.js} +0 -0
@@ -0,0 +1,87 @@
1
+ import {RepositoriesStubs} from "../../../stubs/repositories/repositories-stubs";
2
+ import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
3
+ import {LoginSteps} from "../../../steps/login-steps";
4
+ import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
5
+ import ImportSteps from "../../../steps/import/import-steps";
6
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
7
+ import {RepositorySelectorSteps} from "../../../steps/repository-selector-steps";
8
+ import {ErrorSteps} from "../../../steps/error-steps";
9
+
10
+ describe('User and Access', () => {
11
+
12
+ let repositoryId1;
13
+ let repositoryId2;
14
+ const graphqlUser = 'graphqlUser';
15
+
16
+ beforeEach(() => {
17
+ cy.viewport(1280, 1000);
18
+ RepositoriesStubs.spyGetRepositories();
19
+ repositoryId1 = 'user-access-repo1-' + Date.now();
20
+ repositoryId2 = 'user-access-repo2-' + Date.now();
21
+ cy.createRepository({id: repositoryId1});
22
+ cy.createRepository({id: repositoryId2});
23
+ cy.presetRepository(repositoryId1);
24
+ UserAndAccessSteps.visit();
25
+ // Users table should be visible
26
+ UserAndAccessSteps.getUsersTable().should('be.visible');
27
+ });
28
+
29
+ afterEach(() => {
30
+ cy.loginAsAdmin().then(() => {
31
+ cy.deleteRepository(repositoryId1, true);
32
+ cy.deleteRepository(repositoryId2, true);
33
+ cy.deleteUser(graphqlUser, true);
34
+ cy.switchOffFreeAccess(true);
35
+ cy.switchOffSecurity(true);
36
+ });
37
+
38
+ });
39
+
40
+ it('should restrict page when free access in on', () => {
41
+ // Given: There at least two repositories.
42
+ // When: I enable the security
43
+ UserAndAccessSteps.toggleSecurity();
44
+ LoginSteps.loginWithUser('admin', 'root');
45
+ // And: turn on Free Access
46
+ UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
47
+ UserAndAccessSteps.toggleFreeAccess();
48
+ // And: set graphql rights for the second repository when free access is ON
49
+ UserAndAccessSteps.clickFreeWriteAccessRepo(repositoryId2);
50
+ UserAndAccessSteps.clickFreeGraphqlAccessRepo(repositoryId2);
51
+ ModalDialogSteps.clickOKButton();
52
+
53
+ // When: I logout
54
+ LoginSteps.logout();
55
+ // And: repository with graphql rights is selected
56
+ RepositorySelectorSteps.selectRepository(repositoryId2);
57
+ // And: I click on the Import menu.
58
+ MainMenuSteps.clickOnMenuImport();
59
+
60
+ // Then: I should see the error message, because import view is available only for write access, repositoryId2 has only graphql rights.
61
+ ErrorSteps.verifyError('Some functionalities are not available because you do not have the required repository permissions.')
62
+ });
63
+
64
+ it('should restrict the repositories depending on whether free access is enabled and whether the user is logged in', () => {
65
+ // Given: There at least two repositories.
66
+ // When: I enable the security
67
+ UserAndAccessSteps.toggleSecurity();
68
+ LoginSteps.loginWithUser('admin', 'root');
69
+ // And: turn on Free Access
70
+ UserAndAccessSteps.toggleFreeAccess();
71
+ // And: set rights for the second repository when free access is ON
72
+ UserAndAccessSteps.clickFreeWriteAccessRepo(repositoryId2);
73
+ ModalDialogSteps.clickOKButton();
74
+
75
+ // When: I logout
76
+ LoginSteps.logout();
77
+ // Then: I should see only repositoryId2, as it is the only one configured for free access
78
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId1).should('not.exist');
79
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId2).should('exist');
80
+
81
+ // When: I log in again with a user who has access to all repositories
82
+ LoginSteps.loginWithUser('admin', 'root');
83
+ // Then: I should see both repositories in the repository selector, because the user has access to all repositories
84
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId1).should('exist');
85
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId2).should('exist');
86
+ });
87
+ });
@@ -0,0 +1,38 @@
1
+ import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+
4
+ describe('Users and Access initial state', () => {
5
+ beforeEach(() => {
6
+ cy.intercept('GET', '**/rest/security/users').as('getUsers');
7
+ });
8
+
9
+ it('Should display the correct initial state when navigating via URL', () => {
10
+ // Given, I visit the Users and Access page via URL
11
+ UserAndAccessSteps.visit();
12
+ // Then,
13
+ validateInitialState();
14
+ });
15
+
16
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
17
+ // Given, I visit the Users and Access page via the navigation menu
18
+ UserAndAccessSteps.visit();
19
+ MainMenuSteps.clickOnUsersAndAccess();
20
+ // Then,
21
+ validateInitialState();
22
+ });
23
+ })
24
+
25
+ function validateInitialState() {
26
+ cy.wait('@getUsers').then(({ response }) => {
27
+ const users = response.body;
28
+ expect(users).to.have.length(1);
29
+ expect(users[0].grantedAuthorities).to.have.length(1);
30
+ });
31
+
32
+ UserAndAccessSteps.getTableRow().should('have.length', 1);
33
+ UserAndAccessSteps.findUserInTable('admin')
34
+ .within(() => {
35
+ cy.get('.username').should('contain', 'admin');
36
+ });
37
+ UserAndAccessSteps.getToggleSecurityCheckbox().should('not.be.checked');
38
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "enabled": false,
3
+ "authorities": [
4
+ "READ_REPO_configurations@http://localhost:7202"
5
+ ],
6
+ "appSettings": {
7
+ "DEFAULT_INFERENCE": true,
8
+ "DEFAULT_VIS_GRAPH_SCHEMA": true,
9
+ "DEFAULT_SAMEAS": true,
10
+ "IGNORE_SHARED_QUERIES": false,
11
+ "EXECUTE_COUNT": true
12
+ }
13
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "": [
3
+ {
4
+ "id": "test",
5
+ "title": "",
6
+ "uri": "http://localhost:8080/graphdb/repositories/test",
7
+ "externalUrl": "http://boyantonchev:9000/repositories/test",
8
+ "local": true,
9
+ "type": "graphdb",
10
+ "sesameType": "graphdb:SailRepository",
11
+ "location": "",
12
+ "readable": true,
13
+ "writable": true,
14
+ "unsupported": false,
15
+ "state": "RUNNING"
16
+ }
17
+ ],
18
+ "http://localhost:7201": [
19
+ {
20
+ "id": "movies",
21
+ "title": "",
22
+ "uri": "http://localhost:7202/repositories/movies",
23
+ "externalUrl": "http://localhost:7202/repositories/movies",
24
+ "local": false,
25
+ "type": "graphdb",
26
+ "sesameType": "graphdb:SailRepository",
27
+ "location": "http://localhost:7202",
28
+ "readable": true,
29
+ "writable": true,
30
+ "unsupported": false,
31
+ "state": "RUNNING"
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "id",
3
+ "name": "Quadro",
4
+ "model": "gpt-4o",
5
+ "api": "openai-assistants",
6
+ "contextSize": 128000,
7
+ "temperature": 0.7,
8
+ "topP": 1.0,
9
+ "seed": 0,
10
+ "repositoryId": "test-repository",
11
+ "instructions": {
12
+ "systemInstruction": "",
13
+ "userInstruction": "If you need to write a SPARQL query, use only the classes and properties provided in the schema and don't invent or guess any. Always try to return human-readable names or labels and not only the IRIs. If SPARQL fails to provide the necessary information you can try another tool too."
14
+ },
15
+ "assistantExtractionMethods": [
16
+ {
17
+ "method": "sparql_search",
18
+ "ontologyGraph": "http://example.com",
19
+ "sparqlQuery": "CONSTRUCT {?s ?p ?o} WHERE {GRAPH <http://example.org/ontology> {?s ?p ?o .}}",
20
+ "addMissingNamespaces": false
21
+ },
22
+ {
23
+ "method": "fts_search",
24
+ "maxNumberOfTriplesPerCall": 0
25
+ },
26
+ {
27
+ "method": "similarity_search",
28
+ "similarityIndex": "similarity-index",
29
+ "similarityIndexThreshold": 0.6,
30
+ "maxNumberOfTriplesPerCall": 0
31
+ },
32
+ {
33
+ "method": "retrieval_search",
34
+ "retrievalConnectorInstance": "retrieval-connector",
35
+ "queryTemplate": "{\"query\": \"string\"}",
36
+ "maxNumberOfTriplesPerCall": 0
37
+ }
38
+ ],
39
+ "additionalExtractionMethods": [
40
+ {
41
+ "method": "iri_discovery_search"
42
+ }
43
+ ]
44
+ }
@@ -2,6 +2,8 @@
2
2
  "id": "id",
3
3
  "name": "Quadro",
4
4
  "model": "gpt-4o",
5
+ "api": "openai-completions",
6
+ "contextSize": 128000,
5
7
  "temperature": 0.7,
6
8
  "topP": 1.0,
7
9
  "seed": 0,