Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions Sprint-3/3-stretch/credit-card-validator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
function validateCreditCard(cardNumber)
{
let sum = 0;
let allSame = "";
cardNumber = String(cardNumber);

if(cardNumber.length != 16)
return false;

if((cardNumber.slice(-1) % 2) != 0)
return false;

for (let i = 0; i < cardNumber.length; i++) {
sum += Number(cardNumber[i]);
if( cardNumber[i] < "0" || cardNumber[i] > "9" ) {
return false;
}
}

for (let i = 0; i < cardNumber.length; i++) {
if("0123456789".includes(cardNumber[i]) && !String(allSame).includes(cardNumber[i])) {
allSame += cardNumber[i];
}
}
if(allSame.length < 2) {
return false;
}

if(sum < 16)
return false;

return true;
}

console.log(validateCreditCard("9999777788880000")); // true
console.log(validateCreditCard("6666666666661666")); // true
console.log(validateCreditCard("a92332119c011112")); // false
console.log(validateCreditCard("4444444444444444")); // false
console.log(validateCreditCard("1111111111111110")); // false
console.log(validateCreditCard("6666666666666661")); // false
68 changes: 66 additions & 2 deletions Sprint-3/3-stretch/password-validator.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,70 @@
function passwordValidator(password) {
return password.length < 5 ? false : true
let index = 0;
let characters = "abcdefghijklmnopqrstuvwxyz";
let checker = false;
if (password.length < 5) {
return false;
}
while (index <= password.length) {
if (characters.toUpperCase().includes(password[index])) {
checker = true;
}
index++;
}
if(checker == false)
return false;

checker = false;
index = 0;
while (index <= password.length) {
if (characters.includes(password[index])) {
checker = true;
}
index++;
}
if(checker == false)
return false;

checker = false;
index = 0;
while (index <= password.length) {
if ("0123456789".includes(password[index])) {
checker = true;
}
index++;
}
if(checker == false)
return false;

checker = false;
index = 0;
while (index <= password.length) {
if ("!#$%.*&".includes(password[index])) {
checker = true;
}
index++;
}
if(checker == false)
return false;

index = 0;
while (index <= passwordsArray.length) {
if (passwordsArray[index] === password) {
return false;
}
index++;
}

return checker;
}

const passwordsArray = [];
passwordsArray.push("123HowAreYou?");
passwordsArray.push("ahmed@pass1");
passwordsArray.push("123JohnIsHere#");
passwordsArray.push("This_is_my_password?");
passwordsArray.push("!!I_Am_Sam_Movie!!1");

module.exports = passwordValidator;

module.exports = passwordValidator;
//console.log(passwordValidator("setrwcrat!ahmddAed@pass1"));
42 changes: 41 additions & 1 deletion Sprint-3/3-stretch/password-validator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,50 @@ You must breakdown this problem in order to solve it. Find one test case first a
const isValidPassword = require("./password-validator");
test("password has at least 5 characters", () => {
// Arrange
const password = "12345";
const password = "1!Hel";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(true);
}
);

test("Have at least one English uppercase letter (A-Z)", () => {
// Arrange
const password = "1!HelloWorld_A";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(true);
}
);

test("Have at least one English lowercase letter (a-z)", () => {
// Arrange
const password = "1!HelloWorld_a";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(true);
}
);

test("Have at least one number (0-9)", () => {
// Arrange
const password = "1!HelloWorld_1";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(true);
}
);

test(`Have at least one of the following non-alphanumeric symbols: ("!", "#", "$", "%", ".", "*", "&")`, () => {
// Arrange
const password = "!!I_Am_Sam_Movie!!1";
// Act
const result = isValidPassword(password);
// Assert
expect(result).toEqual(false);
}
);