diff --git a/.github/workflows/jobs.yaml b/.github/workflows/jobs.yaml
index 7aac8a0f5e..82cf55945f 100644
--- a/.github/workflows/jobs.yaml
+++ b/.github/workflows/jobs.yaml
@@ -537,101 +537,6 @@ jobs:
timeout-minutes: 5
run: npx testcafe "firefox:headless" web-app/tests/permissions-6/ --skip-js-errors
- all-permissions-7:
- name: Permissions Tests Part 7
- needs:
- - compile-binary
- runs-on: [ubuntu-latest]
- strategy:
- matrix:
- go-version: [1.22.x]
- os: [ubuntu-latest]
- steps:
- - name: Check out code
- uses: actions/checkout@v3
- - name: Read .nvmrc
- id: node_version
- run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
- - name: Enable Corepack
- run: corepack enable
- - uses: actions/setup-node@v4
- with:
- node-version: ${{ env.NVMRC }}
- - name: Install MinIO JS
- working-directory: ./
- continue-on-error: false
- run: |
- yarn add minio
- - uses: actions/cache@v4
- name: Console Binary Cache
- with:
- path: |
- ./console
- key: ${{ runner.os }}-binary-${{ github.run_id }}
-
- - name: clean-previous-containers-if-any
- run: |
- docker stop minio || true;
- docker container prune -f || true;
-
- - name: Start Console, front-end app and initialize users/policies
- run: |
- (./console server) & (make initialize-permissions)
- - name: Install TestCafe
- run: npm install testcafe@3.5.0
-
- - name: Run TestCafe Tests
- timeout-minutes: 5
- run: npx testcafe "firefox:headless" web-app/tests/permissions-7/ --skip-js-errors
-
- all-permissions-8:
- name: Permissions Tests Part 8
- needs:
- - compile-binary
- runs-on: [ubuntu-latest]
- strategy:
- matrix:
- go-version: [1.22.x]
- os: [ubuntu-latest]
- steps:
- - name: Check out code
- uses: actions/checkout@v3
- - name: Read .nvmrc
- id: node_version
- run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
- - name: Enable Corepack
- run: corepack enable
- - uses: actions/setup-node@v4
- with:
- node-version: ${{ env.NVMRC }}
- - name: Install MinIO JS
- working-directory: ./
- continue-on-error: false
- run: |
- yarn add minio
- - uses: actions/cache@v4
- name: Console Binary Cache
- with:
- path: |
- ./console
- key: ${{ runner.os }}-binary-${{ github.run_id }}
-
- - name: clean-previous-containers-if-any
- run: |
- docker stop minio || true;
- docker container prune -f || true;
-
- - name: Start Console, front-end app and initialize users/policies
- run: |
- (./console server) & (make initialize-permissions)
-
- - name: Install TestCafe
- run: npm install testcafe@3.5.0
-
- - name: Run TestCafe Tests
- timeout-minutes: 5
- run: npx testcafe "firefox:headless" web-app/tests/permissions-8/ --skip-js-errors
-
all-permissions-A:
name: Permissions Tests Part A
needs:
diff --git a/Makefile b/Makefile
index a13e65ab6c..946e786f90 100644
--- a/Makefile
+++ b/Makefile
@@ -216,11 +216,6 @@ test-permissions-6:
@(env bash $(PWD)/web-app/tests/scripts/permissions.sh "web-app/tests/permissions-6/")
@(docker stop minio)
-test-permissions-7:
- @(docker run -v /data1 -v /data2 -v /data3 -v /data4 -d --name minio --rm -p 9000:9000 quay.io/minio/minio:latest server /data{1...4})
- @(env bash $(PWD)/web-app/tests/scripts/permissions.sh "web-app/tests/permissions-7/")
- @(docker stop minio)
-
test-apply-permissions:
@(env bash $(PWD)/web-app/tests/scripts/initialize-env.sh)
diff --git a/integration/tiers_test.go b/integration/tiers_test.go
deleted file mode 100644
index f7d51e070e..0000000000
--- a/integration/tiers_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// This file is part of MinIO Console Server
-// Copyright (c) 2022 MinIO, Inc.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-package integration
-
-import (
- "fmt"
- "log"
- "net/http"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestTiersList(t *testing.T) {
- assert := assert.New(t)
-
- // image for now:
- // minio: 9000
- // console: 9090
-
- client := &http.Client{
- Timeout: 2 * time.Second,
- }
-
- request, err := http.NewRequest("GET", "http://localhost:9090/api/v1/admin/tiers", nil)
- if err != nil {
- log.Println(err)
- return
- }
- request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
- request.Header.Add("Content-Type", "application/json")
-
- response, err := client.Do(request)
-
- assert.NotNil(response, "Tiers List response is nil")
- assert.Nil(err, "Tiers List errored out")
- assert.Equal(response.StatusCode, 200)
-}
diff --git a/web-app/tests/permissions-1/trace.ts b/web-app/tests/permissions-1/trace.ts
deleted file mode 100644
index fe9a933934..0000000000
--- a/web-app/tests/permissions-1/trace.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-// This file is part of MinIO Console Server
-// Copyright (c) 2022 MinIO, Inc.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-import * as roles from "../utils/roles";
-import * as elements from "../utils/elements";
-import { monitoringElement, traceElement } from "../utils/elements-menu";
-import { Selector } from "testcafe";
-
-export const traceStartButton = Selector('[data-test-id="trace-start-button"]');
-export const traceStopButton = Selector('[data-test-id="trace-stop-button"]');
-
-fixture("For user with Trace permissions")
- .page("http://localhost:9090")
- .beforeEach(async (t) => {
- await t.useRole(roles.trace);
- });
-
-test("Monitoring sidebar item exists", async (t) => {
- await t.expect(monitoringElement.exists).ok();
-});
-
-test("Trace link exists in Monitoring menu", async (t) => {
- await t
- .expect(monitoringElement.exists)
- .ok()
- .click(monitoringElement)
- .expect(traceElement.exists)
- .ok();
-});
-
-test("Trace page can be opened", async (t) => {
- await t.navigateTo("http://localhost:9090/tools/trace");
-});
-
-test("Start button can be clicked", async (t) => {
- await t
- .navigateTo("http://localhost:9090/tools/trace")
- .click(traceStartButton);
-});
-
-test("Stop button appears after Start button has been clicked", async (t) => {
- const stopButtonExists = traceStopButton.exists;
- await t
- .navigateTo("http://localhost:9090/tools/trace")
- .click(traceStartButton)
- .expect(stopButtonExists)
- .ok();
-});
-
-test("Stop button can be clicked after Start button has been clicked", async (t) => {
- await t
- .navigateTo("http://localhost:9090/tools/trace")
- .click(traceStartButton)
- .click(traceStopButton);
-});
diff --git a/web-app/tests/permissions-2/inspect.ts b/web-app/tests/permissions-2/inspect.ts
deleted file mode 100644
index 24f3ac236e..0000000000
--- a/web-app/tests/permissions-2/inspect.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-// This file is part of MinIO Console Server
-// Copyright (c) 2022 MinIO, Inc.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program. If not, see .
-
-import { Role, Selector } from "testcafe";
-import { readFileSync } from "fs";
-import { IAM_PAGES } from "../../src/common/SecureComponent/permissions";
-import { inspectElement, monitoringElement } from "../utils/elements-menu";
-
-const data = readFileSync(__dirname + "/../constants/timestamp.txt", "utf-8");
-const $TIMESTAMP = data.trim();
-
-let testDomainUrl = "http://localhost:9090";
-
-let insAllowedAccKey = `inspect-allowed-${$TIMESTAMP}`;
-let insAllowedSeckey = "insallowed1234";
-let insNotAllowedAccKey = `inspect-not-allowed-${$TIMESTAMP}`;
-let insNotAllowedSeckey = "insnotallowed1234";
-
-/* Begin Local Testing config block */
-
-// For local Testing Create users and assign policies then update here.
-// Command to invoke the test locally: testcafe chrome tests/permissions/inspect.ts
-/*
-testDomainUrl = "http://localhost:5005";
-insAllowedAccKey = `all-actions`;
-insAllowedSeckey = "minio123";
-insNotAllowedAccKey = `deny-admin`;
-insNotAllowedSeckey = "minio123";
-*/
-
-/* End Local Testing config block */
-
-const loginUrl = `${testDomainUrl}/login`;
-const inspectScreenUrl = `${testDomainUrl}${IAM_PAGES.SUPPORT_INSPECT}`;
-
-const loginSubmitBtn = Selector("button").withAttribute("id", "do-login");
-
-export const inspectEl = Selector(".MuiPaper-root")
- .find("ul")
- .child("#inspect");
-
-export const inspect_volume_input = Selector("#inspect_volume");
-export const inspect_path_input = Selector("#inspect_path");
-
-export const inspect_volume_input_err =
- Selector("#inspect_volume").sibling("div.errorText");
-export const inspect_path_input_err =
- Selector("#inspect_path").sibling("div.errorText");
-
-export const inspect_encrypt_input = Selector("#inspect_encrypt");
-export const inspect_form_clear_btn = Selector(
- '[data-test-id="inspect-clear-button"]',
-);
-export const inspect_form_submit_btn = Selector(
- '[data-test-id="inspect-submit-button"]',
-);
-/** Begin Allowed Policy Test **/
-
-export const inspectAllowedRole = Role(
- loginUrl,
- async (t) => {
- await t
- .typeText("#accessKey", insAllowedAccKey)
- .typeText("#secretKey", insAllowedSeckey)
- .click(loginSubmitBtn);
- },
- { preserveUrl: true },
-);
-
-fixture("For user with Inspect permissions")
- .page(testDomainUrl)
- .beforeEach(async (t) => {
- await t.useRole(inspectAllowedRole);
- });
-
-test("Inspect page can be opened", async (t) => {
- await t.navigateTo(inspectScreenUrl);
-});
-
-test("Inspect link exists in Menu list", async (t) => {
- await t.useRole(inspectAllowedRole).expect(inspectElement.exists).ok();
-});
-
-test("Form Input states verification", async (t) => {
- const volumeValue = "test";
- const pathValue = "test.txt/xl.meta";
-
- await t.navigateTo(inspectScreenUrl);
-
- //Initial state verification
- await t.expect(inspect_volume_input.value).eql("");
- await t.expect(inspect_path_input.value).eql("");
- await t.expect(inspect_form_submit_btn.hasAttribute("disabled")).ok();
- await t.expect(inspect_encrypt_input.hasAttribute("checked")).ok();
- await t
- .expect(inspect_volume_input_err.innerText)
- .eql("This field is required");
- await t
- .expect(inspect_path_input_err.innerText)
- .eql("This field is required");
-});
-/** End Allowed Policy Test **/
-
-/** Begin Not Allowed Policy Test **/
-
-export const inspectNotAllowedRole = Role(
- loginUrl,
- async (t) => {
- await t
- .typeText("#accessKey", insNotAllowedAccKey)
- .typeText("#secretKey", insNotAllowedSeckey)
- .click(loginSubmitBtn);
- },
- { preserveUrl: true },
-);
-
-fixture("For user with Denied Inspect permissions")
- .page(testDomainUrl)
- .beforeEach(async (t) => {
- await t.useRole(inspectNotAllowedRole);
- });
-
-test("Inspect page can NOT be opened", async (t) => {
- try {
- await t.navigateTo(inspectScreenUrl);
- } catch (e) {
- await t.expect(e).ok();
- }
-});
-
-test("Inspect link should NOT exists in Menu list", async (t) => {
- await t
- .expect(monitoringElement.exists)
- .ok()
- .click(monitoringElement)
- .expect(inspectEl.exists)
- .notOk(
- "Inspect Link should not exist in the menu list as per inspect not allowed policy",
- );
-});
-/** End Not Allowed Policy Test **/
diff --git a/web-app/tests/permissions-6/deleteWithPrefixes.ts b/web-app/tests/permissions-4/deleteWithPrefixes.ts
similarity index 100%
rename from web-app/tests/permissions-6/deleteWithPrefixes.ts
rename to web-app/tests/permissions-4/deleteWithPrefixes.ts
diff --git a/web-app/tests/permissions-6/errorsVisibleOB.ts b/web-app/tests/permissions-4/errorsVisibleOB.ts
similarity index 100%
rename from web-app/tests/permissions-6/errorsVisibleOB.ts
rename to web-app/tests/permissions-4/errorsVisibleOB.ts
diff --git a/web-app/tests/permissions-6/filePreview.ts b/web-app/tests/permissions-4/filePreview.ts
similarity index 100%
rename from web-app/tests/permissions-6/filePreview.ts
rename to web-app/tests/permissions-4/filePreview.ts
diff --git a/web-app/tests/permissions-6/resourceTesting.ts b/web-app/tests/permissions-4/resourceTesting.ts
similarity index 100%
rename from web-app/tests/permissions-6/resourceTesting.ts
rename to web-app/tests/permissions-4/resourceTesting.ts
diff --git a/web-app/tests/permissions-6/sameBucketPath.ts b/web-app/tests/permissions-4/sameBucketPath.ts
similarity index 100%
rename from web-app/tests/permissions-6/sameBucketPath.ts
rename to web-app/tests/permissions-4/sameBucketPath.ts
diff --git a/web-app/tests/permissions-7/users.ts b/web-app/tests/permissions-5/users.ts
similarity index 100%
rename from web-app/tests/permissions-7/users.ts
rename to web-app/tests/permissions-5/users.ts
diff --git a/web-app/tests/permissions-8/rewind.ts b/web-app/tests/permissions-6/rewind.ts
similarity index 98%
rename from web-app/tests/permissions-8/rewind.ts
rename to web-app/tests/permissions-6/rewind.ts
index 2fe308004e..78947bc4bf 100644
--- a/web-app/tests/permissions-8/rewind.ts
+++ b/web-app/tests/permissions-6/rewind.ts
@@ -24,7 +24,7 @@ import {
testBucketBrowseButtonFor,
} from "../utils/functions";
import { Selector } from "testcafe";
-import { deniedError, file } from "../permissions-6/resourceTesting";
+import { deniedError, file } from "../permissions-4/resourceTesting";
fixture("Rewind Testing").page("http://localhost:9090");
diff --git a/web-app/tests/utils/elements-menu.ts b/web-app/tests/utils/elements-menu.ts
index b9a80b5504..dee364fb67 100644
--- a/web-app/tests/utils/elements-menu.ts
+++ b/web-app/tests/utils/elements-menu.ts
@@ -33,28 +33,6 @@ export const getSubmenuBlock = (item) => {
//----------------------------------------------------
export const logoutItem = getMenuElement("sign-out");
-//----------------------------------------------------
-// Specific sidebar elements
-//----------------------------------------------------
-export const monitoringElement = getMenuElement("tools");
-export const monitoringChildren = getSubmenuBlock("tools");
-
-export const dashboardElement = monitoringChildren
- .find("button")
- .withAttribute("id", "monitorMetrics");
-export const logsElement = monitoringChildren
- .find("button")
- .withAttribute("id", "monitorLogs");
-export const traceElement = monitoringChildren
- .find("button")
- .withAttribute("id", "monitorTrace");
-export const drivesElement = monitoringChildren
- .find("button")
- .withAttribute("id", "monitorDrives");
-export const watchElement = monitoringChildren
- .find("button")
- .withAttribute("id", "monitorWatch");
-
export const bucketsElement = getMenuElement("buckets");
export const serviceAcctsElement = getMenuElement("nav-accesskeys");
@@ -78,3 +56,25 @@ export const notificationEndpointsElement = getMenuElement("lambda");
export const inspectElement = getMenuElement("inspectObjects");
export const licenseElement = getMenuElement("license");
+
+//----------------------------------------------------
+// Specific sidebar elements
+//----------------------------------------------------
+export const monitoringElement = getMenuElement("tools");
+export const monitoringChildren = getSubmenuBlock("tools");
+
+export const dashboardElement = monitoringChildren
+ .find("button")
+ .withAttribute("id", "monitorMetrics");
+export const logsElement = monitoringChildren
+ .find("button")
+ .withAttribute("id", "monitorLogs");
+export const traceElement = monitoringChildren
+ .find("button")
+ .withAttribute("id", "monitorTrace");
+export const drivesElement = monitoringChildren
+ .find("button")
+ .withAttribute("id", "monitorDrives");
+export const watchElement = monitoringChildren
+ .find("button")
+ .withAttribute("id", "monitorWatch");