101 lines
2.8 KiB
TypeScript
101 lines
2.8 KiB
TypeScript
|
import SidebarPage from "../support/pages/admin-ui/SidebarPage";
|
||
|
import LoginPage from "../support/pages/LoginPage";
|
||
|
import { keycloakBefore } from "../support/util/keycloak_hooks";
|
||
|
import adminClient from "../support/util/AdminClient";
|
||
|
import {
|
||
|
DefaultUserAttribute,
|
||
|
UserFilterType,
|
||
|
} from "../support/pages/admin-ui/manage/users/UsersListingPage";
|
||
|
import UsersPage from "../support/pages/admin-ui/manage/users/UsersPage";
|
||
|
|
||
|
describe("Query by user attributes", () => {
|
||
|
const loginPage = new LoginPage();
|
||
|
const sidebarPage = new SidebarPage();
|
||
|
const usersPage = new UsersPage();
|
||
|
const listingPage = usersPage.listing();
|
||
|
|
||
|
const emailSuffix = "@example.org";
|
||
|
|
||
|
const user1Username = "user-attrs-1";
|
||
|
const user1FirstName = "John";
|
||
|
const user1LastName = "Doe";
|
||
|
const user1Pwd = "pwd";
|
||
|
const user2Username = "user-attrs-2";
|
||
|
const user2FirstName = "Jane";
|
||
|
const user2LastName = user1LastName;
|
||
|
|
||
|
before(async () => {
|
||
|
await cleanupTestData();
|
||
|
const user1 = await adminClient.createUser({
|
||
|
username: user1Username,
|
||
|
credentials: [
|
||
|
{
|
||
|
type: "password",
|
||
|
value: user1Pwd,
|
||
|
},
|
||
|
],
|
||
|
email: user1Username + emailSuffix,
|
||
|
firstName: user1FirstName,
|
||
|
lastName: user1LastName,
|
||
|
enabled: true,
|
||
|
});
|
||
|
const user1Id = user1.id!;
|
||
|
await adminClient.addClientRoleToUser(user1Id, "master-realm", [
|
||
|
"view-users",
|
||
|
]);
|
||
|
|
||
|
await adminClient.createUser({
|
||
|
username: user2Username,
|
||
|
email: user2Username + emailSuffix,
|
||
|
firstName: user2FirstName,
|
||
|
lastName: user2LastName,
|
||
|
enabled: true,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
beforeEach(() => {
|
||
|
loginPage.logIn(user1Username, user1Pwd);
|
||
|
keycloakBefore();
|
||
|
sidebarPage.goToUsers();
|
||
|
});
|
||
|
|
||
|
after(async () => {
|
||
|
await cleanupTestData();
|
||
|
});
|
||
|
|
||
|
async function cleanupTestData() {
|
||
|
await adminClient.deleteUser(user1Username, true);
|
||
|
await adminClient.deleteUser(user2Username, true);
|
||
|
}
|
||
|
|
||
|
it("Query with one attribute condition", () => {
|
||
|
listingPage
|
||
|
.selectUserSearchFilter(UserFilterType.AttributeSearch)
|
||
|
.openUserAttributesSearchForm()
|
||
|
.addUserAttributeSearchCriteria(
|
||
|
DefaultUserAttribute.lastName,
|
||
|
user1LastName,
|
||
|
)
|
||
|
.triggerAttributesSearch()
|
||
|
.itemExist(user1Username, true)
|
||
|
.itemExist(user2Username, true);
|
||
|
});
|
||
|
|
||
|
it("Query with two attribute conditions", () => {
|
||
|
listingPage
|
||
|
.selectUserSearchFilter(UserFilterType.AttributeSearch)
|
||
|
.openUserAttributesSearchForm()
|
||
|
.addUserAttributeSearchCriteria(
|
||
|
DefaultUserAttribute.lastName,
|
||
|
user1LastName,
|
||
|
)
|
||
|
.addUserAttributeSearchCriteria(
|
||
|
DefaultUserAttribute.firstName,
|
||
|
user1FirstName,
|
||
|
)
|
||
|
.triggerAttributesSearch()
|
||
|
.itemExist(user1Username, true)
|
||
|
.itemExist(user2Username, false);
|
||
|
});
|
||
|
});
|