Skip to content
Snippets Groups Projects
Unverified Commit 9fda6671 authored by Nemanja Glumac's avatar Nemanja Glumac Committed by GitHub
Browse files

Repro #21581: Normal users can't create first snippet in Enterprise version (#21617)

parent 5d6a58d0
No related merge requests found
......@@ -9,106 +9,41 @@ import {
describeEE("scenarios > question > snippets", () => {
beforeEach(() => {
restore();
cy.signInAsAdmin();
});
it("can create a snippet", () => {
openNativeEditor();
cy.icon("snippet").click();
cy.contains("Create a snippet").click();
modal().within(() => {
cy.findByLabelText("Enter some SQL here so you can reuse it later").type(
"SELECT 'a snippet darkly'",
);
cy.findByLabelText("Give your snippet a name").type("night snippet");
cy.contains("Save").click();
});
cy.icon("play")
.first()
.click();
cy.get(".ScalarValue").contains("a snippet darkly");
});
// Please uncomment "normal" user when #21581 gets fixed
["admin" /*"normal"*/].forEach(user => {
it(`${user} user can create a snippet (metabase#21581)`, () => {
cy.intercept("POST", "/api/native-query-snippet").as("snippetCreated");
it("can not create a snippet as a user by default", () => {
// Note that this is expected behavior, but a little weird because
// users have to be granted explicit access.
// See metabase-enterprise#543 for more details
cy.signInAsNormalUser();
cy.request({
method: "POST",
url: "/api/native-query-snippet",
body: {
content: "SELECT 'a snippet in light'",
name: "light snippet",
collection_id: null,
},
failOnStatusCode: false,
}).then(resp => {
expect(resp.status).to.equal(403);
});
});
cy.signIn(user);
// [quarantine] because the popover click action is very flaky.
it.skip("can create a snippet once the admin has granted access", () => {
// See metabase-enterprise#543 for more details
// This is kind of a UX issue where the admin has to:
// - First create a snippet
// - Then grant All Users access to snippets
openNativeEditor();
cy.icon("snippet").click();
cy.contains("Create a snippet").click();
// create snippet via API
cy.request("POST", "/api/native-query-snippet", {
content: "SELECT 'a snippet darkly'",
name: "543 - admin snippet",
collection_id: null,
});
modal().within(() => {
cy.findByLabelText(
"Enter some SQL here so you can reuse it later",
).type("SELECT 1", { delay: 0 });
cy.findByLabelText("Give your snippet a name").type("one", {
delay: 0,
});
cy.button("Save").click();
});
// Grant access
openNativeEditor();
cy.icon("snippet").click();
cy.wait("@snippetCreated");
cy.findByText("{{snippet: one}}");
cy.findByTestId("sidebar-right")
.find(".Icon-ellipsis")
.click({ force: true });
popover().within(() => cy.findByText("Change permissions").click());
modal().within(() => {
cy.findByText("Permissions for Top folder");
cy.contains("All Users");
cy.get(".ReactVirtualized__Grid .Icon-close")
cy.icon("play")
.first()
.click();
cy.get(".ScalarValue").contains(1);
});
// The click action is very flaky, sometimes it doesn't click the right thing
popover()
.contains("Grant Edit access")
.click();
modal()
.contains("Save")
.click();
// Now the user should be able to create a snippet
cy.signInAsNormalUser();
cy.request({
method: "POST",
url: "/api/native-query-snippet",
body: {
content: "SELECT 'a snippet in light'",
name: "543 - user snippet",
collection_id: null,
},
failOnStatusCode: false,
}).then(resp => {
expect(resp.status).to.equal(200);
});
cy.reload();
cy.icon("snippet").click();
cy.contains("543 - admin snippet");
cy.contains("543 - user snippet");
});
it("should let you create a snippet folder and move a snippet into it", () => {
cy.signInAsAdmin();
// create snippet via API
cy.request("POST", "/api/native-query-snippet", {
content: "snippet 1",
......@@ -160,6 +95,8 @@ describeEE("scenarios > question > snippets", () => {
beforeEach(() => {
cy.intercept("GET", "/api/collection/root").as("collections");
cy.signInAsAdmin();
cy.request("POST", "/api/collection", {
name: "Snippet Folder",
description: null,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment