|
|
@@ -1,292 +0,0 @@ |
|
|
|
import test from "ava"; |
|
|
|
import execa from "execa"; |
|
|
|
|
|
|
|
test("default options", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "\\g-A1-.OHEwrXjT#"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no login", async t => { |
|
|
|
return execa.shell('echo password | ./cli.js "lesspass.com"').then(result => { |
|
|
|
t.is(result.stdout, "master password: 7Cw-APO5Co?G>W>u"); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
test("options can be before parameters", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"-C", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "Copied to clipboard"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("long options can be before parameters", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"--clipboard", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "Copied to clipboard"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("length", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--length=14" |
|
|
|
]); |
|
|
|
t.is(stdout, "=0\\A-.OHEKvwrX"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("length shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-L=14" |
|
|
|
]); |
|
|
|
t.is(stdout, "=0\\A-.OHEKvwrX"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("counter", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--counter=2" |
|
|
|
]); |
|
|
|
t.is(stdout, "Vf:F1'!I`8Y2`GBE"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("counter shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-c=2" |
|
|
|
]); |
|
|
|
t.is(stdout, "Vf:F1'!I`8Y2`GBE"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no lowercase", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--no-lowercase" |
|
|
|
]); |
|
|
|
t.is(stdout, 'JBG\\`3{+0["(E\\JJ'); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no lowercase shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-uds" |
|
|
|
]); |
|
|
|
t.is(stdout, 'JBG\\`3{+0["(E\\JJ'); |
|
|
|
}); |
|
|
|
|
|
|
|
test("only lowercase", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-l" |
|
|
|
]); |
|
|
|
t.is(stdout, "fmnujoqgcxmpffyh"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no uppercase", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--no-uppercase" |
|
|
|
]); |
|
|
|
t.is(stdout, 'jbg\\`3{+0["(e\\jj'); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no uppercase shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-lds" |
|
|
|
]); |
|
|
|
t.is(stdout, 'jbg\\`3{+0["(e\\jj'); |
|
|
|
}); |
|
|
|
|
|
|
|
test("only uppercase", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-u" |
|
|
|
]); |
|
|
|
t.is(stdout, "FMNUJOQGCXMPFFYH"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no digits", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--no-digits" |
|
|
|
]); |
|
|
|
t.is(stdout, ";zkB#m]mNF$;J_Ej"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no digits shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-lus" |
|
|
|
]); |
|
|
|
t.is(stdout, ";zkB#m]mNF$;J_Ej"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("only digits", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-d" |
|
|
|
]); |
|
|
|
t.is(stdout, "7587019305478072"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no symbols", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--no-symbols" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("no symbols shortcut", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-lud" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("only symbols", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-s" |
|
|
|
]); |
|
|
|
t.is(stdout, "<\"]|'`%};'`>-'[,"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("test space in password", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"my Master Password" |
|
|
|
]); |
|
|
|
t.is(stdout, "D1PBB34\\#fh!LY={"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 1", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"--no-symbols" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 1 options before", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"--no-symbols", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 2", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-lud" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 2 options before", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"-lud", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "OlfK63bmUhqrGODR"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 3", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-d", |
|
|
|
"-L8" |
|
|
|
]); |
|
|
|
t.is(stdout, "75837019"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 3 options before", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"-d", |
|
|
|
"-L8", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password" |
|
|
|
]); |
|
|
|
t.is(stdout, "75837019"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("doc 3 options before and after", async t => { |
|
|
|
const { stdout } = await execa("./cli.js", [ |
|
|
|
"-d", |
|
|
|
"lesspass.com", |
|
|
|
"contact@lesspass.com", |
|
|
|
"password", |
|
|
|
"-L8" |
|
|
|
]); |
|
|
|
t.is(stdout, "75837019"); |
|
|
|
}); |
|
|
|
|
|
|
|
test("nrt numbers should be considered as string not integers", async t => { |
|
|
|
const p = execa("./cli.js", ["example.org", "123", "password"]); |
|
|
|
const p2 = execa("./cli.js", ["example.org", "0123", "password"]); |
|
|
|
const p3 = execa("./cli.js", ["example.org", '"0123"', "password"]); |
|
|
|
const p4 = execa("./cli.js", ["example.org", "00123", "password"]); |
|
|
|
return Promise.all([p, p2, p3, p4]).then(v => { |
|
|
|
t.is(v[0].stdout, "sMb8}N&`J4wkF9q~"); |
|
|
|
t.is(v[1].stdout, "5,4SqhB2[=/h\\DZh"); |
|
|
|
t.is(v[2].stdout, "u0Fz)EOJ4i\\{{;a~"); |
|
|
|
t.is(v[3].stdout, '=}|O7hN0ZHdjQ{">'); |
|
|
|
}); |
|
|
|
}); |