Skip to content

Commit aac72a4

Browse files
committed
Completed password-validator exercise
1 parent fb18946 commit aac72a4

File tree

2 files changed

+58
-12
lines changed

2 files changed

+58
-12
lines changed
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
1+
const previousPasswords = [];
2+
13
function passwordValidator(password) {
2-
return password.length < 5 ? false : true
3-
}
4+
if (previousPasswords.includes(password)) return false;
5+
if (password.length < 5) return false;
6+
if (!/[A-Z]/.test(password)) return false;
7+
if (!/[a-z]/.test(password)) return false;
8+
if (!/[0-9]/.test(password)) return false;
9+
if (!/[!#$%.*&]/.test(password)) return false;
410

11+
previousPasswords.push(password);
12+
13+
return true;
14+
}
515

6-
module.exports = passwordValidator;
16+
module.exports = passwordValidator;

Sprint-3/3-stretch/password-validator.test.js

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,48 @@ To be valid, a password must:
1515
You must breakdown this problem in order to solve it. Find one test case first and get that working
1616
*/
1717
const isValidPassword = require("./password-validator");
18-
test("password has at least 5 characters", () => {
19-
// Arrange
20-
const password = "12345";
21-
// Act
22-
const result = isValidPassword(password);
23-
// Assert
24-
expect(result).toEqual(true);
25-
}
26-
);
18+
19+
test("invalid password (numbers only)", () => {
20+
// Arrange
21+
const password = "12345";
22+
// Act
23+
const result = isValidPassword(password);
24+
// Assert
25+
expect(result).toEqual(false);
26+
});
27+
28+
test("invalid password (lowercase letters only)", () => {
29+
const password = "abcde";
30+
const result = isValidPassword(password);
31+
expect(result).toEqual(false);
32+
});
33+
34+
test("invalid password (uppercase letters only)", () => {
35+
const password = "QWERTY";
36+
const result = isValidPassword(password);
37+
expect(result).toEqual(false);
38+
});
39+
40+
test("invalid password (non-alphanumeric symbols only)", () => {
41+
const password = "!#$%.*&!";
42+
const result = isValidPassword(password);
43+
expect(result).toEqual(false);
44+
});
45+
46+
test("valid password", () => {
47+
const password = "aB1!cD";
48+
const result = isValidPassword(password);
49+
expect(result).toEqual(true);
50+
});
51+
52+
test("duplicate password", () => {
53+
const password = "aB1!cD";
54+
const result = isValidPassword(password);
55+
expect(result).toEqual(false);
56+
});
57+
58+
test("new valid password", () => {
59+
const password = "zX1$2£€";
60+
const result = isValidPassword(password);
61+
expect(result).toEqual(true);
62+
});

0 commit comments

Comments
 (0)