Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Added
- Configurable query icons (#9).
- "Username not given" when logged in, but user's name not known (#51, #65).
- Templated query functionality (#52).

### Changed
- Changed loading message to "The page is loading. Just a moment please." (#26).
- Enabled no bad blocks and indentation for eslint/jsdoc (#14).

### Fixed
- Configured title is now also visible before first query (#46).
- "Unknown User" when not logged in (#51).
- Aggregating SPARQL queries work now (#70).

### Removed
- Bulk action checkboxes are removed (#44).

# [1.1.0] - 2024-01-22

Expand Down
9 changes: 9 additions & 0 deletions cypress/e2e/aggregating-query.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
describe("Aggregating query", () => {
it("AVG() function", () => {
cy.visit("/");

cy.contains("Average value").click();
cy.contains("Finished in:");
cy.get('.column-average').find('span').contains("75");
});
});
8 changes: 8 additions & 0 deletions cypress/e2e/bad-cors.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
describe("Bad CORS", () => {
it('Querying resource with "bad" cors header, though a proxy should work', () => {
cy.visit("/");

cy.contains("My idols").click();
cy.get(".MuiSnackbarContent-message").should("not.exist");
});
});
9 changes: 9 additions & 0 deletions cypress/e2e/column-header.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
describe("Column header", () => {
it("Variables link to ontology", () => {
cy.visit("/");

cy.contains("My favourite musicians").click();
cy.contains("Finished in:");
cy.get('a[href="http://schema.org/name"]');
})
});
12 changes: 12 additions & 0 deletions cypress/e2e/dashboard.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
describe("Dashboard", () => {
it("Successfully loads", () => {
cy.visit("/");
});

it("Custom icon per query is displayed", () => {
cy.visit("/");

cy.get('[data-testid="PhotoIcon"]').should("exist");
cy.get('[data-testid="BrushIcon"]').should("exist");
})
});
9 changes: 9 additions & 0 deletions cypress/e2e/lenient.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
describe("Lenient mode", () => {
it("When one source throws an error, the results of other sources are still shown", () => {
cy.visit("/");

cy.contains("My favourite musicians").click();
cy.contains("Finished in:");
cy.contains("Ludwig van Beethoven");
});
});
85 changes: 85 additions & 0 deletions cypress/e2e/log-in.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
describe("Log in", () => {
it("Log in with WebID with no OIDC issuer", () => {
cy.visit("/");

cy.get('[aria-label="Profile"]').click();
cy.contains('[role="menuitem"]', "Login").click();

cy.get('input[value="webId"]').click();

cy.get('input[name="idp"]')
.clear();
cy.get('input[name="idp"]')
.type("http://localhost:8080/example2/profile/card#me");
cy.contains("Login").click();

cy.contains("No IDP found");
});

it("Log in with invalid WebID document", () => {
cy.visit("/");

cy.get('[aria-label="Profile"]').click();
cy.contains('[role="menuitem"]', "Login").click();

cy.get('input[value="webId"]').click();

cy.get('input[name="idp"]')
.clear();
cy.get('input[name="idp"]')
.type("http://localhost:8080/invalidWebId/profile/card#me");
cy.contains("Login").click();

cy.contains("Couldn't query the Identity Provider from the WebID");
});

it("Log in with an invalid IDP issuer", () => {
cy.visit("/");

cy.get('[aria-label="Profile"]').click();
cy.contains('[role="menuitem"]', "Login").click();

cy.get('input[name="idp"]')
.clear();
cy.get('input[name="idp"]')
.type("https://facebook.com");
cy.contains("Login").click();

cy.contains("Login failed");
});

it("Log in and execute query on private data", () => {
cy.visit("/");

cy.get('[aria-label="Profile"]').click();
cy.contains('[role="menuitem"]', "Login").click();

cy.get('input[name="idp"]').clear();
cy.get('input[name="idp"]').type("http://localhost:8080");
cy.contains("Login").click();

cy.get("input#email").type("hello@example.com");
cy.get("input#password").type("abc123");
cy.contains("button", "Log in").click();
cy.contains("button", "Authorize").click();

cy.url().should("eq", "http://localhost:5173/");

cy.contains("A list of my favorite books").click();
cy.contains("It Ends With Us");
});

it("Do not log in and query on private data unauthenticated", () => {
cy.visit("/");

cy.contains("A list of my favorite books").click();
cy.get("div").should("have.class", "MuiSnackbarContent-message");
});

it("Do not log in and query public data", () => {
cy.visit("/");

cy.contains("My wish list").click();
cy.contains("Too Late");
});
});
65 changes: 65 additions & 0 deletions cypress/e2e/sources-info.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
describe("Sources info", () => {
it("Fetch status on query failed", () => {
cy.visit("/");

cy.contains("My favourite musicians").click();
cy.contains("Finished in:");
cy.get('[aria-label="Sources info"]').click();

cy.get('[aria-label="Query failed"]').should("exist");
});

it("Fetch status on query success", () => {
cy.visit("/");

cy.contains("My wish list").click();
cy.contains("Finished in:");
cy.get('[aria-label="Sources info"]').click();

cy.get('[aria-label="Query was succesful"]').should("exist");
});

it("Authentication needed for query on public data", () => {
cy.visit("/");

cy.contains("My wish list").click();
cy.contains("Finished in:");
cy.get('[aria-label="Sources info"]').click();

cy.get('[aria-label="No authentication required"]').should("exist");
});

it("Authentication needed for query on private data", () => {
cy.visit("/");

cy.get('[aria-label="Profile"]').click();
cy.contains('[role="menuitem"]', "Login").click();

cy.get('input[name="idp"]').clear();
cy.get('input[name="idp"]').type("http://localhost:8080");
cy.contains("Login").click();

cy.get("input#email").type("hello@example.com");
cy.get("input#password").type("abc123");
cy.contains("button", "Log in").click();
cy.contains("button", "Authorize").click();

cy.url().should("eq", "http://localhost:5173/");

cy.contains("A list of my favorite books").click();
cy.contains("Finished in:");
cy.get('[aria-label="Sources info"]').click();

cy.get('[aria-label="Authentication required"]').should("exist");
});

it("Authentication needed for query on failing query", () => {
cy.visit("/");

cy.contains("My favourite musicians").click();
cy.contains("Finished in:");
cy.get('[aria-label="Sources info"]').click();

cy.get('[aria-label="Uncertain if authentication is required"]').should("exist");
});
});
Loading