This is the template project that's checked out and configured when you run the bando-up command from ljsthw-bandolier. This is where the code really lives.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bandolier-template/tests/ui/login.js

81 lines
2.5 KiB

import test from 'ava';
import { User, Payment } from "../../lib/models.js";
import { base_host } from "../../lib/config.js";
import {sleep, random_user, expect, wait, tid, playstart, playstop} from '../../lib/testing.js';
test.before(async t => t.context = await playstart(`${base_host}/client/#/login/`));
test.after(async t => {
await playstop(t.context.browser, t.context.p);
});
test('standalone login page works', async (t) => {
const {p} = t.context;
const user = random_user();
let payment = undefined;
user.password_repeat = user.password;
try {
// using ... to copy the user since register modifies it
let test1 = await User.register({...user});
t.not(test1, undefined);
t.not(test1.id, undefined);
// we also have to craft a fake payment for them
payment = await Payment.insert({
user_id: test1.id,
system: 'paypal',
status: 'complete',
internal_id: "fake-internal-id",
sys_primary_id: "fake-primary-id",
sys_secondary_id: "fake-secondary-id",
sys_created_on: Date.now()
});
t.not(payment, undefined);
t.not(payment.id, undefined);
console.log("TEST", test1, "USER PASSWORD", user);
user.id = test1.id; // save it for later deletes
// login page loads
await expect(t, p, tid('login-form'));
// click login button and get errors
await p.click(tid('login-button'));
await expect(t, p, tid('email-error-0'));
await expect(t, p, tid('password-error-0'));
// fill out email, button has 1 error for password
await p.fill('#email', test1.email);
await p.click(tid('login-button'));
await expect(t, p, tid('password-error-0'));
// TODO: confirm the email errors are gone
// give wrong password, one error at the top for invalid login
await p.fill("#password", "asdfasdfsadf");
await p.click(tid('login-button'));
await expect(t, p, tid('login-error'));
// fill out correct form, and redirect to watch
await p.fill("#password", user.password);
await p.click(tid('login-button'));
await sleep(1000);
await wait(p, tid('home-page'));
// confirm home page and logout-link are visible
await expect(t, p, tid('home-page'));
await expect(t, p, tid('logout-link'));
// logout and see login to chat
await p.click(tid('logout-link'));
} catch (error) {
console.log(error);
t.fail(error.message);
} finally {
if(user) await User.delete({id: user.id});
if(payment) await Payment.delete({id: payment.id});
}
});