mirror of
https://github.com/hanzoai/forum.git
synced 2026-09-30 21:51:19 +00:00
Adding/removing users from automatic groups should not be possible. Bug introduced in this PR https://github.com/discourse/discourse/pull/30174 Before <img width="1435" alt="Screenshot 2025-01-30 at 3 35 12 pm" src="https://github.com/user-attachments/assets/a982bfb7-3597-4efb-82b8-c11a47493075" /> After <img width="1391" alt="Screenshot 2025-01-30 at 3 34 47 pm" src="https://github.com/user-attachments/assets/894a9319-94b9-4fad-bf99-e357b910a209" />
220 lines
6.6 KiB
JavaScript
220 lines
6.6 KiB
JavaScript
import { click, visit } from "@ember/test-helpers";
|
|
import { test } from "qunit";
|
|
import { cloneJSON } from "discourse/lib/object";
|
|
import Site from "discourse/models/site";
|
|
import groupFixtures from "discourse/tests/fixtures/group-fixtures";
|
|
import {
|
|
acceptance,
|
|
updateCurrentUser,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
|
|
|
acceptance("Managing Group Membership", function (needs) {
|
|
needs.user();
|
|
needs.pretender((server, helper) => {
|
|
server.get("/associated_groups", () =>
|
|
helper.response({
|
|
associated_groups: [
|
|
{
|
|
id: 123,
|
|
name: "test-group",
|
|
provider_name: "google_oauth2",
|
|
label: "google_oauth2:test-group",
|
|
},
|
|
],
|
|
})
|
|
);
|
|
});
|
|
|
|
test("As an admin", async function (assert) {
|
|
updateCurrentUser({ can_create_group: true });
|
|
|
|
await visit("/g/alternative-group/manage/membership");
|
|
|
|
assert
|
|
.dom('label[for="automatic_membership"]')
|
|
.exists("displays automatic membership label");
|
|
|
|
assert
|
|
.dom(".groups-form-primary-group")
|
|
.exists("displays set as primary group checkbox");
|
|
|
|
assert
|
|
.dom(".groups-form-grant-trust-level")
|
|
.exists("displays grant trust level selector");
|
|
|
|
assert
|
|
.dom(".group-form-public-admission")
|
|
.exists("displays group public admission input");
|
|
|
|
assert
|
|
.dom(".group-form-public-exit")
|
|
.exists("displays group public exit input");
|
|
|
|
assert
|
|
.dom(".group-form-allow-membership-requests")
|
|
.exists("displays group allow_membership_request input");
|
|
|
|
assert
|
|
.dom(".group-form-allow-membership-requests")
|
|
.isDisabled("disables group allow_membership_request input");
|
|
|
|
assert.dom(".group-flair-inputs").exists("displays avatar flair inputs");
|
|
|
|
await click(".group-form-public-admission");
|
|
await click(".group-form-allow-membership-requests");
|
|
|
|
assert
|
|
.dom(".group-form-public-admission")
|
|
.isDisabled("disables group public admission input");
|
|
|
|
assert
|
|
.dom(".group-form-public-exit")
|
|
.isNotDisabled("it should not disable group public exit input");
|
|
|
|
assert
|
|
.dom(".group-form-membership-request-template")
|
|
.exists("displays the membership request template field");
|
|
|
|
const emailDomains = selectKit(
|
|
".group-form-automatic-membership-automatic"
|
|
);
|
|
await emailDomains.expand();
|
|
await emailDomains.fillInFilter("foo.com");
|
|
await emailDomains.selectRowByValue("foo.com");
|
|
|
|
assert.strictEqual(emailDomains.header().value(), "foo.com");
|
|
});
|
|
|
|
test("As an admin on a site that can associate groups", async function (assert) {
|
|
let site = Site.current();
|
|
site.set("can_associate_groups", true);
|
|
updateCurrentUser({ can_create_group: true });
|
|
|
|
await visit("/g/alternative-group/manage/membership");
|
|
|
|
const associatedGroups = selectKit(
|
|
".group-form-automatic-membership-associated-groups"
|
|
);
|
|
await associatedGroups.expand();
|
|
await associatedGroups.selectRowByName("google_oauth2:test-group");
|
|
await associatedGroups.keyboard("enter");
|
|
|
|
assert.strictEqual(
|
|
associatedGroups.header().name(),
|
|
"google_oauth2:test-group"
|
|
);
|
|
});
|
|
|
|
test("As an admin on a site that can't associate groups", async function (assert) {
|
|
let site = Site.current();
|
|
site.set("can_associate_groups", false);
|
|
updateCurrentUser({ can_create_group: true });
|
|
|
|
await visit("/g/alternative-group/manage/membership");
|
|
|
|
assert
|
|
.dom('label[for="automatic_membership_associated_groups"]')
|
|
.doesNotExist(
|
|
"it should not display associated groups automatic membership label"
|
|
);
|
|
});
|
|
|
|
test("As a group owner", async function (assert) {
|
|
updateCurrentUser({ moderator: false, admin: false });
|
|
|
|
await visit("/g/discourse/manage/membership");
|
|
|
|
assert
|
|
.dom('label[for="automatic_membership"]')
|
|
.doesNotExist("it should not display automatic membership label");
|
|
|
|
assert
|
|
.dom('label[for="automatic_membership_associated_groups"]')
|
|
.doesNotExist(
|
|
"it should not display associated groups automatic membership label"
|
|
);
|
|
|
|
assert
|
|
.dom(".groups-form-automatic-membership-retroactive")
|
|
.doesNotExist(
|
|
"it should not display automatic membership retroactive checkbox"
|
|
);
|
|
|
|
assert
|
|
.dom(".groups-form-primary-group")
|
|
.doesNotExist("it should not display set as primary group checkbox");
|
|
|
|
assert
|
|
.dom(".groups-form-grant-trust-level")
|
|
.doesNotExist("it should not display grant trust level selector");
|
|
|
|
assert
|
|
.dom(".group-form-public-admission")
|
|
.exists("displays group public admission input");
|
|
|
|
assert
|
|
.dom(".group-form-public-exit")
|
|
.exists("displays group public exit input");
|
|
|
|
assert
|
|
.dom(".group-form-allow-membership-requests")
|
|
.exists("displays group allow_membership_request input");
|
|
|
|
assert
|
|
.dom(".group-form-allow-membership-requests")
|
|
.isDisabled("disables group allow_membership_request input");
|
|
});
|
|
});
|
|
|
|
acceptance(
|
|
"Automatic Group Tooltip - can_admin_group is true",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.pretender((server, helper) => {
|
|
server.get("/groups/moderators.json", () => {
|
|
const cloned = cloneJSON(groupFixtures["/groups/moderators.json"]);
|
|
cloned.group.can_admin_group = true;
|
|
cloned.group.is_group_owner = false;
|
|
return helper.response(200, cloned);
|
|
});
|
|
});
|
|
|
|
test("the current user can see the tooltip because they can manage the group", async function (assert) {
|
|
await visit("/g/moderators");
|
|
|
|
assert
|
|
.dom(".group-automatic-tooltip")
|
|
.exists("displays automatic tooltip");
|
|
});
|
|
|
|
test("the current user cannot invite users to automatic group", async function (assert) {
|
|
await visit("/g/moderators");
|
|
assert.dom(".group-members-add").doesNotExist();
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"Automatic Group Tooltip - can_admin_group is false",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.pretender((server, helper) => {
|
|
server.get("/groups/moderators.json", () => {
|
|
const cloned = cloneJSON(groupFixtures["/groups/moderators.json"]);
|
|
cloned.group.can_admin_group = false;
|
|
cloned.group.is_group_owner = false;
|
|
return helper.response(200, cloned);
|
|
});
|
|
});
|
|
|
|
test("the current user cannot see the tooltip because they cannot manage the group", async function (assert) {
|
|
await visit("/g/moderators");
|
|
|
|
assert
|
|
.dom(".group-automatic-tooltip")
|
|
.doesNotExist("does not display automatic tooltip");
|
|
});
|
|
}
|
|
);
|