Emberveil sourcetests/mobile-login.mjs
import assert from 'node:assert/strict';import {readFile} from 'node:fs/promises';
const code=await readFile(new URL('../mobile/public/login.js',import.meta.url));const {validateLogin,loginMessage}=await import('data:text/javascript;base64,'+code.toString('base64'));
assert.deepEqual(validateLogin('derrick','ExamplePassword'),{name:'derrick'});
assert.deepEqual(validateLogin(' Derrick\u200b ','ExamplePassword'),{name:'Derrick'});
assert.deepEqual(validateLogin('Derrick','ExamplePassword'),{name:'Derrick'});
for(const name of ['', 'user@example.com','derrick!','abcdefghijklmnop'])assert.ok(validateLogin(name,'ExamplePassword').error);
for(const pass of ['', ' ','x'.repeat(21)])assert.ok(validateLogin('derrick',pass).error);
assert.ok(loginMessage('Your account has been disabled. Or you entered an invalid character for user/pass').includes('email'));
assert.ok(loginMessage('Invalid username or password.').includes('already exists'));
assert.equal(loginMessage('Your account is already logged in.'),'Your account is already logged in.');
console.log('PASS 13 mobile username, password and rejection-message checks');