Skip to content

Commit 071f6b3

Browse files
committed
add validation and tests historical passwords and more other tests
1 parent b2ba40c commit 071f6b3

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ function passwordValidator(password) {
77
- Have at least one of the following non-alphanumeric symbols: ("!", "#", "$", "%", ".", "*", "&")
88
- Must not be any previous password in the passwords array.
99
*/
10-
10+
const passwords = ["pa$$w0rd", "Qwerty1#", "Adm1n2#", "$3cr4t"];
1111
if (
1212
password.length < 5 ||
1313
!/[A-Z]/.test(password) ||
1414
!/[a-z]/.test(password) ||
1515
!/[0-9]/.test(password) ||
16-
!/[!#\$%\.\*&]/.test(password)
16+
!/[!#\$%\.\*&]/.test(password) ||
17+
passwords.includes(password)
1718
) {
1819
return false;
1920
}

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ test("password has at least 5 characters", () => {
2424
expect(result).toEqual(true);
2525
});
2626

27+
test("password with less than 5 characters is invalid", () => {
28+
// Arrange
29+
const password = "1Aa%";
30+
// Act
31+
const result = isValidPassword(password);
32+
// Assert
33+
expect(result).toEqual(false);
34+
});
35+
2736
test("password has at least one English uppercase letter (A-Z)", () => {
2837
// Arrange
2938
const password = "1234bA$";
@@ -33,6 +42,15 @@ test("password has at least one English uppercase letter (A-Z)", () => {
3342
expect(result).toEqual(true);
3443
});
3544

45+
test("password with no uppercase letters is invalid", () => {
46+
// Arrange
47+
const password = "1234ab$";
48+
// Act
49+
const result = isValidPassword(password);
50+
// Assert
51+
expect(result).toEqual(false);
52+
});
53+
3654
test("password has at least one English lowercase letter (a-z)", () => {
3755
// Arrange
3856
const password = "1234Aa%";
@@ -42,6 +60,15 @@ test("password has at least one English lowercase letter (a-z)", () => {
4260
expect(result).toEqual(true);
4361
});
4462

63+
test("password with no lowercase letters is invalid", () => {
64+
// Arrange
65+
const password = "1234AB$";
66+
// Act
67+
const result = isValidPassword(password);
68+
// Assert
69+
expect(result).toEqual(false);
70+
});
71+
4572
test("password has at least one number (0-9)", () => {
4673
// Arrange
4774
const password = "1234Aa&";
@@ -51,6 +78,15 @@ test("password has at least one number (0-9)", () => {
5178
expect(result).toEqual(true);
5279
});
5380

81+
test("password with no numbers is invalid", () => {
82+
// Arrange
83+
const password = "passWord!";
84+
// Act
85+
const result = isValidPassword(password);
86+
// Assert
87+
expect(result).toEqual(false);
88+
});
89+
5490
test("password has at least one non-alphanumeric symbol: (!, #, $, %, ., *, &)", () => {
5591
// Arrange
5692
const password = "1234aA#";
@@ -59,3 +95,21 @@ test("password has at least one non-alphanumeric symbol: (!, #, $, %, ., *, &)",
5995
// Assert
6096
expect(result).toEqual(true);
6197
});
98+
99+
test("must not be any previous password in the passwords array.", () => {
100+
// Arrange
101+
const password = "pas$W0rd";
102+
// Act
103+
const result = isValidPassword(password);
104+
// Assert
105+
expect(result).toEqual(true);
106+
});
107+
108+
test("previous passwords in the passwords array are invalid", () => {
109+
// Arrange
110+
const password = "Qwerty1#";
111+
// Act
112+
const result = isValidPassword(password);
113+
// Assert
114+
expect(result).toEqual(false);
115+
});

0 commit comments

Comments
 (0)