Skip to content
13 changes: 13 additions & 0 deletions Sprint-3/4-stretch/card-validator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function validateNumber(number) {
let arrNumber = [...number.toString()];

return arrNumber.length === 16 &&
arrNumber.every((x) => x >= "0" && x <= "9") &&
new Set(arrNumber).size > 1 &&
arrNumber[arrNumber.length - 1] % 2 === 0 &&
arrNumber.reduce((acc, cur) => +acc + +cur, 0) > 16
? true
: false;
}

module.exports = validateNumber;
50 changes: 50 additions & 0 deletions Sprint-3/4-stretch/card-validator.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const validateNumber = require("./card-validator")
const isValidNumber=require("./card-validator")


test("number should be 16 digits long",()=>{
expect(validateNumber(1029384756820562)).toEqual(true)
})
test("number should be 16 digits long", () => {
expect(validateNumber(10293847568202)).toEqual(false);
});
test("number should be 16 digits long", () => {
expect(validateNumber(1029384756820512348)).toEqual(false);
});



test("all digits must be numbers",()=>{
expect(validateNumber(1036294650361848)).toEqual(true)
})
test("all digits must be numbers", () => {
expect(validateNumber("103629465036184a")).toEqual(false);
});



test("all the digits can not be the same",()=>{
expect(validateNumber(3636363636363636)).toEqual(true)
})
test("all the digits can not be the same", () => {
expect(validateNumber(3333333333333336)).toEqual(true);
});
test("all the digits can not be the same", () => {
expect(validateNumber(2222222222222222)).toEqual(false);
});


test("the final digit must be even",()=>{
expect(validateNumber(1528056378293456)).toEqual(true)
})
test("the final digit must be even", () => {
expect(validateNumber(1528056378293457)).toEqual(false);
});


test("the sum of all digits must be greater than 16",()=>{
expect(validateNumber(1903647295628592)).toEqual(true)
})
test("the sum of all digits must be greater than 16", () => {
expect(validateNumber(1000100000000002)).toEqual(false);
});
9 changes: 6 additions & 3 deletions Sprint-3/4-stretch/password-validator.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
function passwordValidator(password) {
return password.length < 5 ? false : true
if (password.match(/[A-Z]/) && password.match(/[a-z]/) &&
password.match(/[0-9]/) && password.match(/[!#$%.*&]/) &&
password.length >= 5) return true;

return false;
}


module.exports = passwordValidator;
module.exports = passwordValidator;
62 changes: 59 additions & 3 deletions Sprint-3/4-stretch/password-validator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,73 @@ To be valid, a password must:
- Have at least one English lowercase letter (a-z)
- Have at least one number (0-9)
- Have at least one of the following non-alphanumeric symbols: ("!", "#", "$", "%", ".", "*", "&")
- Must not be any previous password in the passwords array.
- Must not be any previous password in the passwords array.

You must breakdown this problem in order to solve it. Find one test case first and get that working
*/
const isValidPassword = require("./password-validator");
test("password has at least 5 characters", () => {
// Arrange
const password = "12345";
const password = "12345Dpw%";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(true);
}
);
);
test("password has at least 5 characters", () => {
const password = "1234";
const result = isValidPassword(password);
expect(result).toEqual(false);
});



test("password has at least one English uppercase letter (A-Z)",()=>{
const password ="12345Aaoe$"
const result=isValidPassword(password)
expect(result).toEqual(true)

});
test("password has at least one English uppercase letter (A-Z)", () => {
const password = "12345";
const result = isValidPassword(password);
expect(result).toEqual(false);
});


test("password has at least one English lower case letter (a-z)", () => {
const password = "S12345h#";
const result = isValidPassword(password);
expect(result).toEqual(true);
});
test("password has at least one English lower case letter (a-z)", () => {
const password = "S12345P";
const result = isValidPassword(password);
expect(result).toEqual(false);
});

test("password has at least one number (0-9)", () => {
const password = "123456Aa%";
const result = isValidPassword(password);
expect(result).toEqual(true);
});
test("password has at least one number (0-9)", () => {
const password = "sgjjkdAa";
const result = isValidPassword(password);
expect(result).toEqual(false);
});

test("password has at least one of the following non-alphanumeric symbols: (!, #, $, %, ., *, &)", () => {
const password = "123Spdfe!";
const result = isValidPassword(password);
expect(result).toEqual(true);
});
test("password has at least one of the following non-alphanumeric symbols: (!, #, $, %, ., *, &)", () => {
const password = "123Spdfe";
const result = isValidPassword(password);
expect(result).toEqual(false);
});


//don't know how to check if the password was used before, do i need to create a passwords array?
Loading