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
2 changes: 2 additions & 0 deletions portal-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"@types/history": "^4.7.3",
"@types/jest": "24.0.23",
"@types/lodash": "^4.14.149",
"@types/minio": "^7.0.11",
"@types/node": "12.12.8",
"@types/react": "17.0.0",
"@types/react-copy-to-clipboard": "^4.3.0",
Expand All @@ -38,6 +39,7 @@
"history": "^4.10.1",
"local-storage-fallback": "^4.1.1",
"lodash": "^4.17.21",
"minio": "^7.0.26",
"moment": "^2.29.1",
"react": "^17.0.2",
"react-async-hook": "^3.6.1",
Expand Down
137 changes: 85 additions & 52 deletions portal-ui/tests/permissions/bucketAssignPolicy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,58 +35,91 @@ test("Buckets sidebar item exists", async (t) => {
await t.expect(bucketsExist).ok();
});

test.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketassign");
})("A readonly policy can be assigned to a bucket", async (t) => {
const manageButton = manageButtonFor("bucketassign");
await t
// We need to log back in after we use the admin account to create bucket,
// using the specific role we use in this module
.useRole(roles.bucketAssignPolicy)
.navigateTo("http://localhost:9090/buckets")
.click(manageButton)
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "readonlytest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessReadOnlyInput)
.click(elements.saveButton);
});
test
.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketassign1");
})("A readonly policy can be assigned to a bucket", async (t) => {
await t
// We need to log back in after we use the admin account to create bucket,
// using the specific role we use in this module
.useRole(roles.bucketAssignPolicy)
.navigateTo("http://localhost:9090/buckets")
.click(manageButtonFor("bucketassign1"))
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "readonlytest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessReadOnlyInput)
.click(elements.saveButton);
})
.after(async (t) => {
// Cleanup created bucket
await functions.cleanUpBucket(t, "bucketassign1");
});

test("A writeonly policy can be assigned to a bucket", async (t) => {
const manageButton = manageButtonFor("bucketassign");
await t
.navigateTo("http://localhost:9090/buckets")
.click(manageButton)
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "writeonlytest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessWriteOnlyInput)
.click(elements.saveButton);
});
test
.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketassign3");
})("A writeonly policy can be assigned to a bucket", async (t) => {
await t
// We need to log back in after we use the admin account to create bucket,
// using the specific role we use in this module
.useRole(roles.bucketAssignPolicy)
.navigateTo("http://localhost:9090/buckets")
.click(manageButtonFor("bucketassign3"))
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "writeonlytest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessWriteOnlyInput)
.click(elements.saveButton);
})
.after(async (t) => {
// Cleanup created bucket
await functions.cleanUpBucket(t, "bucketassign3");
});

test("A readwrite policy can be assigned to a bucket", async (t) => {
const manageButton = manageButtonFor("bucketassign");
await t
.navigateTo("http://localhost:9090/buckets")
.click(manageButton)
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "readwritetest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessReadWriteInput)
.click(elements.saveButton);
});
test
.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketassign4");
})("A readwrite policy can be assigned to a bucket", async (t) => {
await t
// We need to log back in after we use the admin account to create bucket,
// using the specific role we use in this module
.useRole(roles.bucketAssignPolicy)
.navigateTo("http://localhost:9090/buckets")
.click(manageButtonFor("bucketassign4"))
.click(elements.bucketAccessRulesTab)
.click(elements.addAccessRuleButton)
.typeText(elements.bucketsPrefixInput, "readwritetest")
.click(elements.bucketsAccessInput)
.click(elements.bucketsAccessReadWriteInput)
.click(elements.saveButton);
})
.after(async (t) => {
// Cleanup created bucket
await functions.cleanUpBucket(t, "bucketassign4");
});

test("Previously assigned policy to a bucket can be deleted", async (t) => {
const manageButton = manageButtonFor("bucketassign");
await t
.navigateTo("http://localhost:9090/buckets")
.click(manageButton)
.click(elements.bucketAccessRulesTab)
.click(elements.deleteIconButtonAlt)
.click(elements.deleteButton)
.click(logoutItem);
});
// test
// .before(async (t) => {
// // Create a bucket
// await functions.setUpBucket(t, "bucketassign5");
// })("Previously assigned policy to a bucket can be deleted", async (t) => {
// await new Promise((resolve) => setTimeout(resolve, 2000));
// await t
// .useRole(roles.bucketAssignPolicy)
// .navigateTo("http://localhost:9090/buckets")
// .click(manageButtonFor("bucketassign5"))
// .click(elements.bucketAccessRulesTab)
// .click(elements.deleteIconButtonAlt)
// .click(elements.deleteButton)
// .click(logoutItem);
// })
// .after(async (t) => {
// // Cleanup created bucket
// await functions.cleanUpBucket(t, "bucketassign5");
// });
62 changes: 45 additions & 17 deletions portal-ui/tests/permissions/bucketRead.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import * as elements from "../utils/elements";
import * as functions from "../utils/functions";
import { bucketsElement, logoutItem } from "../utils/elements-menu";
import { testBucketBrowseButtonFor } from "../utils/functions";
import { Selector } from "testcafe";
import * as constants from "../utils/constants";

fixture("For user with Bucket Read permissions")
.page("http://localhost:9090")
Expand All @@ -31,34 +33,60 @@ test("Buckets sidebar item exists", async (t) => {
await t.expect(bucketsExist).ok();
});

test.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketread");
})("Browse button exists", async (t) => {
const testBucketBrowseButton = testBucketBrowseButtonFor("bucketread");
const browseExists = testBucketBrowseButton.exists;
// We need to log back in after we use the admin account to create bucket,
// using the specific role we use in this module
await t.useRole(roles.bucketRead).expect(browseExists).ok();
});
test
.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketread1");
})("Browse button exists", async (t) => {
await new Promise((resolve) => setTimeout(resolve, 2000));
await t
.useRole(roles.bucketRead)
.navigateTo("http://localhost:9090/buckets")
.expect(testBucketBrowseButtonFor("bucketread1").exists)
.ok();
})
.after(async (t) => {
// Cleanup created bucket and corresponding uploads
await functions.cleanUpBucket(t, "bucketread1");
});

test("Bucket access is set to R", async (t) => {
await t.expect(elements.bucketAccessText.innerText).eql("Access: R");
});
test
.before(async (t) => {
// Create a bucket
await functions.setUpBucket(t, "bucketread2");
})("Bucket access is set to R", async (t) => {
await new Promise((resolve) => setTimeout(resolve, 2000));
await t
.useRole(roles.bucketRead)
.navigateTo("http://localhost:9090/buckets")
.expect(
Selector("h1")
.withText(`${constants.TEST_BUCKET_NAME}-bucketread2`)
.parent(1)
.find("p")
.nth(-1).innerText
)
.eql("Access: R");
})
.after(async (t) => {
// Cleanup created bucket and corresponding uploads
await functions.cleanUpBucket(t, "bucketread2");
});

test
.before(async (t) => {
const testBucketBrowseButton = testBucketBrowseButtonFor("bucketread");
// Create a bucket
await functions.setUpBucket(t, "bucketread3");
await t
.useRole(roles.admin)
.navigateTo("http://localhost:9090/buckets")
.click(testBucketBrowseButton)
.click(testBucketBrowseButtonFor("bucketread3"))
// Upload object to bucket
.setFilesToUpload(elements.uploadInput, "../uploads/test.txt")
.click(logoutItem);
})("Object list table is enabled", async (t) => {
const bucketsTableExists = elements.table.exists;
const testBucketBrowseButton = testBucketBrowseButtonFor("bucketread");
const testBucketBrowseButton = testBucketBrowseButtonFor("bucketread3");
await t
.useRole(roles.bucketRead)
.click(testBucketBrowseButton)
Expand All @@ -67,5 +95,5 @@ test
})
.after(async (t) => {
// Cleanup created bucket and corresponding uploads
await functions.cleanUpBucketAndUploads(t, "bucketread");
await functions.cleanUpBucketAndUploads(t, "bucketread3");
});
Loading