This is the code that runs https://bandolier.learnjsthehardway.com/ for you to review. It uses the https://git.learnjsthehardway.com/learn-javascript-the-hard-way/bandolier-template to create the documentation for the project.
https://bandolier.learnjsthehardway.com/
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.
80 lines
2.5 KiB
80 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});
|
|
}
|
|
});
|
|
|