175 lines
5.6 KiB
JavaScript
175 lines
5.6 KiB
JavaScript
import { Selector } from "testcafe";
|
|
import testcafeconfig from "../../testcafeconfig.json";
|
|
import Page from "../page-model/page";
|
|
import Account from "../page-model/account";
|
|
import Settings from "../page-model/settings";
|
|
import Menu from "../page-model/menu";
|
|
import Photo from "../page-model/photo";
|
|
import ContextMenu from "../page-model/context-menu";
|
|
|
|
fixture`Test authentication`.page`${testcafeconfig.url}`;
|
|
|
|
const page = new Page();
|
|
const account = new Account();
|
|
const contextmenu = new ContextMenu();
|
|
const menu = new Menu();
|
|
const settings = new Settings();
|
|
const photo = new Photo();
|
|
|
|
test.meta("testID", "authentication-001").meta({ type: "short", mode: "auth" })(
|
|
"Common: Login and Logout",
|
|
async (t) => {
|
|
await t.navigateTo("/library/browse");
|
|
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
|
|
await t.typeText(page.usernameInput, "admin", { replace: true });
|
|
|
|
await t.expect(page.loginAction.hasAttribute("disabled", "disabled")).ok();
|
|
|
|
await t.typeText(page.passwordInput, "photoprism", { replace: true });
|
|
|
|
await t.expect(page.passwordInput.hasAttribute("type", "password")).ok();
|
|
|
|
await t.click(page.togglePasswordMode);
|
|
|
|
await t.expect(page.passwordInput.hasAttribute("type", "text")).ok();
|
|
|
|
await t.click(page.togglePasswordMode);
|
|
|
|
await t.expect(page.passwordInput.hasAttribute("type", "password")).ok();
|
|
|
|
await t.click(page.loginAction);
|
|
|
|
await t.expect(Selector(".input-search input", { timeout: 7000 }).visible).ok();
|
|
|
|
await page.logout();
|
|
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
|
|
await t.navigateTo("/library/settings");
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
}
|
|
);
|
|
|
|
test.meta("testID", "authentication-002").meta({ type: "short", mode: "auth" })(
|
|
"Common: Login with wrong credentials",
|
|
async (t) => {
|
|
await page.login("wrong", "photoprism");
|
|
await t.navigateTo("/library/favorites");
|
|
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
|
|
await page.login("admin", "abcdefg");
|
|
await t.navigateTo("/library/archive");
|
|
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
}
|
|
);
|
|
|
|
test.meta("testID", "authentication-003").meta({ type: "short", mode: "auth" })(
|
|
"Common: Change password",
|
|
async (t) => {
|
|
await t.navigateTo("/library/browse");
|
|
await page.login("admin", "photoprism");
|
|
await t.expect(Selector(".input-search input", { timeout: 15000 }).visible).ok();
|
|
await menu.openPage("settings");
|
|
|
|
await t
|
|
.click(settings.accountTab)
|
|
.click(account.changePasswordAction)
|
|
.typeText(account.currentPassword, "wrong", { replace: true })
|
|
.typeText(account.newPassword, "photoprism", { replace: true });
|
|
|
|
await t.expect(account.confirm.hasAttribute("disabled", "disabled")).ok();
|
|
|
|
await t.typeText(account.retypePassword, "photoprism", { replace: true });
|
|
|
|
await t.expect(account.confirm.hasAttribute("disabled", "disabled")).notOk();
|
|
|
|
await t
|
|
.click(account.confirm)
|
|
.typeText(account.currentPassword, "photoprism", { replace: true })
|
|
.typeText(account.newPassword, "123", { replace: true })
|
|
.typeText(account.retypePassword, "123", { replace: true });
|
|
|
|
await t.expect(account.confirm.hasAttribute("disabled", "disabled")).ok();
|
|
|
|
await t
|
|
.typeText(account.currentPassword, "photoprism", { replace: true })
|
|
.typeText(account.newPassword, "photoprism123", { replace: true });
|
|
|
|
await t.expect(account.confirm.hasAttribute("disabled", "disabled")).ok();
|
|
|
|
await t.typeText(account.retypePassword, "photoprism123", { replace: true });
|
|
|
|
await t.expect(account.confirm.hasAttribute("disabled", "disabled")).notOk();
|
|
|
|
await t.click(account.confirm);
|
|
await page.logout();
|
|
if (t.browser.platform === "mobile") {
|
|
await t.wait(7000);
|
|
}
|
|
await page.login("admin", "photoprism");
|
|
await t.navigateTo("/library/archive");
|
|
|
|
await t
|
|
.expect(page.usernameInput.visible)
|
|
.ok()
|
|
.expect(Selector(".input-search input").visible)
|
|
.notOk();
|
|
|
|
await page.login("admin", "photoprism123");
|
|
await t.expect(Selector(".input-search input").visible).ok();
|
|
await menu.openPage("settings");
|
|
|
|
await t
|
|
.click(settings.accountTab)
|
|
.click(account.changePasswordAction)
|
|
.typeText(account.currentPassword, "photoprism123", { replace: true })
|
|
.typeText(account.newPassword, "photoprism", { replace: true })
|
|
.typeText(account.retypePassword, "photoprism", { replace: true })
|
|
.click(account.confirm);
|
|
await page.logout();
|
|
await page.login("admin", "photoprism");
|
|
|
|
await t.expect(Selector(".input-search input").visible).ok();
|
|
await page.logout();
|
|
}
|
|
);
|
|
|
|
test.meta("testID", "authentication-004").meta({ type: "short", mode: "auth" })(
|
|
"Common: Delete Clipboard on logout",
|
|
async (t) => {
|
|
await page.login("admin", "photoprism");
|
|
await t.navigateTo("/library/browse");
|
|
await photo.toggleSelectNthPhoto(0, "all");
|
|
await photo.toggleSelectNthPhoto(1, "all");
|
|
await contextmenu.checkContextMenuCount("2");
|
|
await page.logout();
|
|
await page.login("admin", "photoprism");
|
|
await t.navigateTo("/library/browse");
|
|
await t.expect(Selector("button.action-menu").visible).notOk();
|
|
await t.expect(Selector("span.count-clipboard").visible).notOk();
|
|
}
|
|
);
|