From 92fbc6614ec4097598512bbee4718cf64e4ee536 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:30:08 +0200 Subject: [PATCH 1/9] =?UTF-8?q?Walidacja=20formularza=20rejestracji:=20tes?= =?UTF-8?q?ty=20email=20i=20has=C5=82a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kilka słów kluczowych: Walidacja,Formularz rejestracji,Email,Hasło,Testy --- src/validateRegisterForm.test.js | 69 +++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/src/validateRegisterForm.test.js b/src/validateRegisterForm.test.js index 6d86ab9..3f26142 100644 --- a/src/validateRegisterForm.test.js +++ b/src/validateRegisterForm.test.js @@ -8,23 +8,70 @@ describe(`Function 'validateRegisterForm':`, () => { }); it(`should return object`, () => { - expect(typeof validateRegisterForm('test@mail.com', 'P@ssword1!')) - .toBe('object'); + const result = validateRegisterForm('test@mail.com', 'P@ssword1!'); + expect(typeof result).toBe('object'); }); - it(`should return success message for the valid input`, () => { - const isValid = validateRegisterForm('test@mail.com', 'P@ssword1!'); + it(`should return 200 for valid email and password`, () => { + const valid = validateRegisterForm('test@mail.com', 'P@ssword1!'); + expect(valid.code).toBe(200); + expect(valid.message).toBe('Email and password are valid.'); + }); + + it(`should return 422 for valid email and password missing digit`, () => { + const invalidPass = validateRegisterForm('test@mail.com', 'P@ssword'); + expect(invalidPass.code).toBe(422); + expect(invalidPass.message).toBe('Password is invalid.'); + }); - expect(isValid.code).toBe(200); - expect(isValid.message).toBe('Email and password are valid.'); + it(`should return 422 for invalid email and valid password`, () => { + const invalidEmail = validateRegisterForm('test@com', 'P@ssword1!'); + expect(invalidEmail.code).toBe(422); + expect(invalidEmail.message).toBe('Email is invalid.'); }); - it(`should return error for valid email and password without number`, () => { - const invalidPassword = validateRegisterForm('test@mail.com', 'P@ssword'); + it(`should return 500 for invalid email and password`, () => { + const bothInvalid = validateRegisterForm('test@com', 'ssword1'); + expect(bothInvalid.code).toBe(500); + expect(bothInvalid.message) + .toBe('Password and email are invalid.'); + }); - expect(invalidPassword.code).toBe(422); - expect(invalidPassword.message).toBe('Password is invalid.'); + it(`should return 422 if password too short`, () => { + const tooShort = validateRegisterForm('valid@mail.com', 'Aa1!'); + expect(tooShort.code).toBe(422); + expect(tooShort.message).toBe('Password is invalid.'); }); - // write more tests here + it(`should return 422 if password too long`, () => { + const tooLong = validateRegisterForm( + 'valid@mail.com', 'A1!aaaaaaaaaaaaaaa' + ); + expect(tooLong.code).toBe(422); + expect(tooLong.message).toBe('Password is invalid.'); + }); + + it(`should return 422 if email missing '@' symbol`, () => { + const noAt = validateRegisterForm('invalidmail.com', 'P@ssword1!'); + expect(noAt.code).toBe(422); + expect(noAt.message).toBe('Email is invalid.'); + }); + + it(`should return 422 if email starts with dot`, () => { + const startDot = validateRegisterForm('.test@mail.com', 'P@ssword1!'); + expect(startDot.code).toBe(422); + expect(startDot.message).toBe('Email is invalid.'); + }); + + it(`should return 422 if email has double dots`, () => { + const doubleDot = validateRegisterForm('test..mail@mail.com', 'P@ssword1!'); + expect(doubleDot.code).toBe(422); + expect(doubleDot.message).toBe('Email is invalid.'); + }); + + it(`should return 422 if top-level domain starts with dot`, () => { + const tldDot = validateRegisterForm('test@mail..com', 'P@ssword1!'); + expect(tldDot.code).toBe(422); + expect(tldDot.message).toBe('Email is invalid.'); + }); }); From 22750780bcbce66db260e494a98d1453082fe5a7 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:33:36 +0200 Subject: [PATCH 2/9] Poprawa funkcji --- src/validateRegisterForm.js | 62 ++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index 751cb14..78b005d 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -2,39 +2,59 @@ /** * @param {string} email - * * @param {string} password - * * @returns {object} */ function validateRegisterForm(email, password) { - // eslint-disable-next-line max-len - const validPassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,16}$/; + // Regex dla hasła (rozbite na części) + const reNum = '(?=.*\\d)'; + const reLower = '(?=.*[a-z])'; + const reUpper = '(?=.*[A-Z])'; + const reSpecial = '(?=.*[^a-zA-Z0-9])'; + const reNoSpace = '(?!.*\\s)'; + const reLen = '.{8,16}'; - // eslint-disable-next-line max-len - const validEmailMask = new RegExp(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\./i); + const validPassword = new RegExp( + '^' + reNum + reLower + reUpper + reSpecial + reNoSpace + reLen + '$' + ); - if (!email.match(validEmailMask) && password.match(validPassword)) { - return { - code: 422, message: 'Email is invalid.', - }; + // Regex dla emaila (części) + const reLocal = '([\\w-]+(?:\\.[\\w-]+)*)'; + const reDomain = '([\\w-]+(?:\\.[\\w-]+)*)'; + const reAt = '@'; + const emailRegex = new RegExp('^' + reLocal + reAt + reDomain + '$', 'i'); + + const isEmailValid = email.match(emailRegex); + const isPasswordValid = password.match(validPassword); + + // Dodatkowe reguły dla emaila + let emailExtraValid = true; + if (isEmailValid) { + const [local, domain] = email.split('@'); + if ( + local.startsWith('.') || + domain.startsWith('.') || + email.includes('..') + ) { + emailExtraValid = false; + } } - if (email.match(validEmailMask) && !password.match(validPassword)) { - return { - code: 422, message: 'Password is invalid.', - }; + // Walidacja wyników + if (!isEmailValid || !emailExtraValid) { + if (isPasswordValid) { + return { code: 422, message: 'Email is invalid.' }; + } else { + return { code: 500, message: 'Password and email are invalid.' }; + } } - if (!email.match(validEmailMask) && !password.match(validPassword)) { - return { - code: 500, message: 'Password and email are invalid.', - }; + if (!isPasswordValid) { + return { code: 422, message: 'Password is invalid.' }; } - return { - code: 200, message: 'Email and password are valid.', - }; + return { code: 200, message: 'Email and password are valid.' }; } module.exports = validateRegisterForm; + From 6a4c728bb4859e5737242ee79304c1b3151136ae Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:36:17 +0200 Subject: [PATCH 3/9] Poprawa funkcji --- src/validateRegisterForm.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index 78b005d..a6d0f1f 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -6,13 +6,13 @@ * @returns {object} */ function validateRegisterForm(email, password) { - // Regex dla hasła (rozbite na części) - const reNum = '(?=.*\\d)'; - const reLower = '(?=.*[a-z])'; - const reUpper = '(?=.*[A-Z])'; - const reSpecial = '(?=.*[^a-zA-Z0-9])'; - const reNoSpace = '(?!.*\\s)'; - const reLen = '.{8,16}'; + // Regex dla hasła (częściowe rozbicie) + const reNum = '(?=.*\\d)'; + const reLower = '(?=.*[a-z])'; + const reUpper = '(?=.*[A-Z])'; + const reSpecial = '(?=.*[^a-zA-Z0-9])'; + const reNoSpace = '(?!.*\\s)'; + const reLen = '.{8,16}'; const validPassword = new RegExp( '^' + reNum + reLower + reUpper + reSpecial + reNoSpace + reLen + '$' @@ -20,12 +20,12 @@ function validateRegisterForm(email, password) { // Regex dla emaila (części) const reLocal = '([\\w-]+(?:\\.[\\w-]+)*)'; - const reDomain = '([\\w-]+(?:\\.[\\w-]+)*)'; + const reDomain = '([\\w-]+(?:\\.[\\w-]+)+)'; // + wymusza co najmniej jedną kropkę const reAt = '@'; const emailRegex = new RegExp('^' + reLocal + reAt + reDomain + '$', 'i'); - const isEmailValid = email.match(emailRegex); - const isPasswordValid = password.match(validPassword); + const isEmailValid = emailRegex.test(email); + const isPasswordValid = validPassword.test(password); // Dodatkowe reguły dla emaila let emailExtraValid = true; @@ -58,3 +58,4 @@ function validateRegisterForm(email, password) { module.exports = validateRegisterForm; + From e8fb4ca211af0bb5159ec1e3c1ee9659ecb4dade Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:39:07 +0200 Subject: [PATCH 4/9] Finalna funkcja --- src/validateRegisterForm.js | 42 ++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index a6d0f1f..858fa5e 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -6,36 +6,30 @@ * @returns {object} */ function validateRegisterForm(email, password) { - // Regex dla hasła (częściowe rozbicie) - const reNum = '(?=.*\\d)'; - const reLower = '(?=.*[a-z])'; - const reUpper = '(?=.*[A-Z])'; - const reSpecial = '(?=.*[^a-zA-Z0-9])'; - const reNoSpace = '(?!.*\\s)'; - const reLen = '.{8,16}'; - - const validPassword = new RegExp( - '^' + reNum + reLower + reUpper + reSpecial + reNoSpace + reLen + '$' - ); - - // Regex dla emaila (części) - const reLocal = '([\\w-]+(?:\\.[\\w-]+)*)'; - const reDomain = '([\\w-]+(?:\\.[\\w-]+)+)'; // + wymusza co najmniej jedną kropkę - const reAt = '@'; - const emailRegex = new RegExp('^' + reLocal + reAt + reDomain + '$', 'i'); - - const isEmailValid = emailRegex.test(email); + // Password regex: krótkie zmienne + const n = '(?=.*\\d)'; // number + const l = '(?=.*[a-z])'; // lowercase + const u = '(?=.*[A-Z])'; // uppercase + const s = '(?=.*[^a-zA-Z0-9])';// special char + const ns = '(?!.*\\s)'; // no spaces + const len = '.{8,16}'; // length 8-16 + + const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$'); + + // Email regex: krótkie zmienne + const loc = '([\\w-]+(?:\\.[\\w-]+)*)'; + const dom = '([\\w-]+(?:\\.[\\w-]+)+)'; // wymusza co najmniej jedną kropkę + const at = '@'; + const validEmailMask = new RegExp('^' + loc + at + dom + '$', 'i'); + + const isEmailValid = validEmailMask.test(email); const isPasswordValid = validPassword.test(password); // Dodatkowe reguły dla emaila let emailExtraValid = true; if (isEmailValid) { const [local, domain] = email.split('@'); - if ( - local.startsWith('.') || - domain.startsWith('.') || - email.includes('..') - ) { + if (local.startsWith('.') || domain.startsWith('.') || email.includes('..')) { emailExtraValid = false; } } From 406f2daa80eedd5eb648c017feee6e1a0e4aa196 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:41:46 +0200 Subject: [PATCH 5/9] Finalna wersja 2 --- src/validateRegisterForm.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index 858fa5e..3705108 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -7,18 +7,18 @@ */ function validateRegisterForm(email, password) { // Password regex: krótkie zmienne - const n = '(?=.*\\d)'; // number - const l = '(?=.*[a-z])'; // lowercase - const u = '(?=.*[A-Z])'; // uppercase - const s = '(?=.*[^a-zA-Z0-9])';// special char - const ns = '(?!.*\\s)'; // no spaces - const len = '.{8,16}'; // length 8-16 + const n = '(?=.*\\d)'; + const l = '(?=.*[a-z])'; + const u = '(?=.*[A-Z])'; + const s = '(?=.*[^a-zA-Z0-9])'; + const ns = '(?!.*\\s)'; + const len = '.{8,16}'; const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$'); // Email regex: krótkie zmienne const loc = '([\\w-]+(?:\\.[\\w-]+)*)'; - const dom = '([\\w-]+(?:\\.[\\w-]+)+)'; // wymusza co najmniej jedną kropkę + const dom = '([\\w-]+(?:\\.[\\w-]+)+)'; const at = '@'; const validEmailMask = new RegExp('^' + loc + at + dom + '$', 'i'); @@ -28,8 +28,15 @@ function validateRegisterForm(email, password) { // Dodatkowe reguły dla emaila let emailExtraValid = true; if (isEmailValid) { - const [local, domain] = email.split('@'); - if (local.startsWith('.') || domain.startsWith('.') || email.includes('..')) { + const parts = email.split('@'); + const local = parts[0]; + const domain = parts[1]; + + const localInvalid = local.startsWith('.'); + const domainInvalid = domain.startsWith('.'); + const dotsInvalid = email.includes('..'); + + if (localInvalid || domainInvalid || dotsInvalid) { emailExtraValid = false; } } @@ -52,4 +59,3 @@ function validateRegisterForm(email, password) { module.exports = validateRegisterForm; - From 4f71606ebe82c95aa1c77fdf2a8622ca3a75d4ad Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:52:36 +0200 Subject: [PATCH 6/9] Finalna wersja 3 --- src/validateRegisterForm.js | 39 +++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index 3705108..88f8fa7 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -1,31 +1,33 @@ 'use strict'; /** - * @param {string} email * @param {string} password + * @param {string} email * @returns {object} */ -function validateRegisterForm(email, password) { - // Password regex: krótkie zmienne - const n = '(?=.*\\d)'; - const l = '(?=.*[a-z])'; - const u = '(?=.*[A-Z])'; - const s = '(?=.*[^a-zA-Z0-9])'; - const ns = '(?!.*\\s)'; - const len = '.{8,16}'; - - const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$'); - - // Email regex: krótkie zmienne - const loc = '([\\w-]+(?:\\.[\\w-]+)*)'; - const dom = '([\\w-]+(?:\\.[\\w-]+)+)'; +function validateRegisterForm(password, email) { + // Password regex + const n = '(?=.*\\d)'; // number + const l = '(?=.*[a-zA-Z\u0400-\u04FF])'; // lowercase Latin+Cyrillic + const u = '(?=.*[A-Z\u0400-\u04FF])'; // uppercase Latin+Cyrillic + const s = '(?=.*[^\\da-zA-Z\u0400-\u04FF])'; // special excluding letters/digits + const ns = '(?!.*\\s)'; // no spaces + const len = '.{8,16}'; // length 8-16 + + const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$', 'u'); + + // Email regex (local-part expanded) + const localChars = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+"; + const loc = '(' + localChars + '(?:\\.' + localChars + ')*)'; + const domLabel = '[A-Za-z0-9-]+'; // domain labels + const dom = '(' + domLabel + '(?:\\.' + domLabel + ')+)'; const at = '@'; const validEmailMask = new RegExp('^' + loc + at + dom + '$', 'i'); const isEmailValid = validEmailMask.test(email); const isPasswordValid = validPassword.test(password); - // Dodatkowe reguły dla emaila + // Extra dot rules for email let emailExtraValid = true; if (isEmailValid) { const parts = email.split('@'); @@ -41,13 +43,12 @@ function validateRegisterForm(email, password) { } } - // Walidacja wyników + // Result mapping if (!isEmailValid || !emailExtraValid) { if (isPasswordValid) { return { code: 422, message: 'Email is invalid.' }; - } else { - return { code: 500, message: 'Password and email are invalid.' }; } + return { code: 500, message: 'Password and email are invalid.' }; } if (!isPasswordValid) { From 9c3b51384b8c44868672c4e27c2f7d4340890637 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:53:42 +0200 Subject: [PATCH 7/9] Finalna wersja 3a --- src/validateRegisterForm.test.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/validateRegisterForm.test.js b/src/validateRegisterForm.test.js index 3f26142..1bb7d86 100644 --- a/src/validateRegisterForm.test.js +++ b/src/validateRegisterForm.test.js @@ -8,70 +8,69 @@ describe(`Function 'validateRegisterForm':`, () => { }); it(`should return object`, () => { - const result = validateRegisterForm('test@mail.com', 'P@ssword1!'); + const result = validateRegisterForm('P@ssword1!', 'test@mail.com'); expect(typeof result).toBe('object'); }); - it(`should return 200 for valid email and password`, () => { - const valid = validateRegisterForm('test@mail.com', 'P@ssword1!'); + it(`should return 200 for valid password and email`, () => { + const valid = validateRegisterForm('P@ssword1!', 'test@mail.com'); expect(valid.code).toBe(200); expect(valid.message).toBe('Email and password are valid.'); }); - it(`should return 422 for valid email and password missing digit`, () => { - const invalidPass = validateRegisterForm('test@mail.com', 'P@ssword'); + it(`should return 422 for valid email but password missing digit`, () => { + const invalidPass = validateRegisterForm('P@ssword', 'test@mail.com'); expect(invalidPass.code).toBe(422); expect(invalidPass.message).toBe('Password is invalid.'); }); it(`should return 422 for invalid email and valid password`, () => { - const invalidEmail = validateRegisterForm('test@com', 'P@ssword1!'); + const invalidEmail = validateRegisterForm('P@ssword1!', 'test@com'); expect(invalidEmail.code).toBe(422); expect(invalidEmail.message).toBe('Email is invalid.'); }); - it(`should return 500 for invalid email and password`, () => { - const bothInvalid = validateRegisterForm('test@com', 'ssword1'); + it(`should return 500 for invalid password and email`, () => { + const bothInvalid = validateRegisterForm('ssword1', 'test@com'); expect(bothInvalid.code).toBe(500); expect(bothInvalid.message) .toBe('Password and email are invalid.'); }); it(`should return 422 if password too short`, () => { - const tooShort = validateRegisterForm('valid@mail.com', 'Aa1!'); + const tooShort = validateRegisterForm('Aa1!', 'valid@mail.com'); expect(tooShort.code).toBe(422); expect(tooShort.message).toBe('Password is invalid.'); }); it(`should return 422 if password too long`, () => { - const tooLong = validateRegisterForm( - 'valid@mail.com', 'A1!aaaaaaaaaaaaaaa' - ); + const tooLong = validateRegisterForm('A1!aaaaaaaaaaaaaaa', 'valid@mail.com'); expect(tooLong.code).toBe(422); expect(tooLong.message).toBe('Password is invalid.'); }); it(`should return 422 if email missing '@' symbol`, () => { - const noAt = validateRegisterForm('invalidmail.com', 'P@ssword1!'); + const noAt = validateRegisterForm('P@ssword1!', 'invalidmail.com'); expect(noAt.code).toBe(422); expect(noAt.message).toBe('Email is invalid.'); }); it(`should return 422 if email starts with dot`, () => { - const startDot = validateRegisterForm('.test@mail.com', 'P@ssword1!'); + const startDot = validateRegisterForm('P@ssword1!', '.test@mail.com'); expect(startDot.code).toBe(422); expect(startDot.message).toBe('Email is invalid.'); }); it(`should return 422 if email has double dots`, () => { - const doubleDot = validateRegisterForm('test..mail@mail.com', 'P@ssword1!'); + const doubleDot = validateRegisterForm('P@ssword1!', 'test..mail@mail.com'); expect(doubleDot.code).toBe(422); expect(doubleDot.message).toBe('Email is invalid.'); }); it(`should return 422 if top-level domain starts with dot`, () => { - const tldDot = validateRegisterForm('test@mail..com', 'P@ssword1!'); + const tldDot = validateRegisterForm('P@ssword1!', 'test@mail..com'); expect(tldDot.code).toBe(422); expect(tldDot.message).toBe('Email is invalid.'); }); }); + From b8fbac71dcfe898178572ea453a55043a6b56712 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:56:38 +0200 Subject: [PATCH 8/9] Finalna wersja 4 --- src/validateRegisterForm.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/validateRegisterForm.js b/src/validateRegisterForm.js index 88f8fa7..b8f147b 100644 --- a/src/validateRegisterForm.js +++ b/src/validateRegisterForm.js @@ -7,19 +7,20 @@ */ function validateRegisterForm(password, email) { // Password regex - const n = '(?=.*\\d)'; // number - const l = '(?=.*[a-zA-Z\u0400-\u04FF])'; // lowercase Latin+Cyrillic - const u = '(?=.*[A-Z\u0400-\u04FF])'; // uppercase Latin+Cyrillic - const s = '(?=.*[^\\da-zA-Z\u0400-\u04FF])'; // special excluding letters/digits - const ns = '(?!.*\\s)'; // no spaces - const len = '.{8,16}'; // length 8-16 - - const validPassword = new RegExp('^' + n + l + u + s + ns + len + '$', 'u'); - - // Email regex (local-part expanded) - const localChars = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+"; + const n = '(?=.*\\d)'; + const l = '(?=.*[a-zA-Z\u0400-\u04FF])'; + const u = '(?=.*[A-Z\u0400-\u04FF])'; + const s = '(?=.*[^\\da-zA-Z\u0400-\u04FF])'; + const ns = '(?!.*\\s)'; + const len = '.{8,16}'; + + const pwdPattern = '^' + n + l + u + s + ns + len + '$'; + const validPassword = new RegExp(pwdPattern, 'u'); + + // Email regex (local-part + domain) + const localChars = "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+"; const loc = '(' + localChars + '(?:\\.' + localChars + ')*)'; - const domLabel = '[A-Za-z0-9-]+'; // domain labels + const domLabel = '[A-Za-z0-9-]+'; const dom = '(' + domLabel + '(?:\\.' + domLabel + ')+)'; const at = '@'; const validEmailMask = new RegExp('^' + loc + at + dom + '$', 'i'); @@ -27,7 +28,7 @@ function validateRegisterForm(password, email) { const isEmailValid = validEmailMask.test(email); const isPasswordValid = validPassword.test(password); - // Extra dot rules for email + // Extra dot rules let emailExtraValid = true; if (isEmailValid) { const parts = email.split('@'); From 827ef41d4d3d2ff8fe9f4b934ce7447fbe387e27 Mon Sep 17 00:00:00 2001 From: JoAnna578 Date: Mon, 13 Oct 2025 16:57:15 +0200 Subject: [PATCH 9/9] Finalna wersja 4a --- src/validateRegisterForm.test.js | 65 +++++++++++++++++--------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/src/validateRegisterForm.test.js b/src/validateRegisterForm.test.js index 1bb7d86..e0a047e 100644 --- a/src/validateRegisterForm.test.js +++ b/src/validateRegisterForm.test.js @@ -8,69 +8,72 @@ describe(`Function 'validateRegisterForm':`, () => { }); it(`should return object`, () => { - const result = validateRegisterForm('P@ssword1!', 'test@mail.com'); + const pwd = 'P@ssword1!'; + const email = 'test@mail.com'; + const result = validateRegisterForm(pwd, email); expect(typeof result).toBe('object'); }); it(`should return 200 for valid password and email`, () => { - const valid = validateRegisterForm('P@ssword1!', 'test@mail.com'); - expect(valid.code).toBe(200); - expect(valid.message).toBe('Email and password are valid.'); + const result = validateRegisterForm('P@ssword1!', 'test@mail.com'); + expect(result.code).toBe(200); + expect(result.message).toBe('Email and password are valid.'); }); it(`should return 422 for valid email but password missing digit`, () => { - const invalidPass = validateRegisterForm('P@ssword', 'test@mail.com'); - expect(invalidPass.code).toBe(422); - expect(invalidPass.message).toBe('Password is invalid.'); + const result = validateRegisterForm('P@ssword', 'test@mail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Password is invalid.'); }); it(`should return 422 for invalid email and valid password`, () => { - const invalidEmail = validateRegisterForm('P@ssword1!', 'test@com'); - expect(invalidEmail.code).toBe(422); - expect(invalidEmail.message).toBe('Email is invalid.'); + const result = validateRegisterForm('P@ssword1!', 'test@com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Email is invalid.'); }); it(`should return 500 for invalid password and email`, () => { - const bothInvalid = validateRegisterForm('ssword1', 'test@com'); - expect(bothInvalid.code).toBe(500); - expect(bothInvalid.message) + const result = validateRegisterForm('ssword1', 'test@com'); + expect(result.code).toBe(500); + expect(result.message) .toBe('Password and email are invalid.'); }); it(`should return 422 if password too short`, () => { - const tooShort = validateRegisterForm('Aa1!', 'valid@mail.com'); - expect(tooShort.code).toBe(422); - expect(tooShort.message).toBe('Password is invalid.'); + const result = validateRegisterForm('Aa1!', 'valid@mail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Password is invalid.'); }); it(`should return 422 if password too long`, () => { - const tooLong = validateRegisterForm('A1!aaaaaaaaaaaaaaa', 'valid@mail.com'); - expect(tooLong.code).toBe(422); - expect(tooLong.message).toBe('Password is invalid.'); + const longPwd = 'A1!aaaaaaaaaaaaaaa'; + const result = validateRegisterForm(longPwd, 'valid@mail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Password is invalid.'); }); it(`should return 422 if email missing '@' symbol`, () => { - const noAt = validateRegisterForm('P@ssword1!', 'invalidmail.com'); - expect(noAt.code).toBe(422); - expect(noAt.message).toBe('Email is invalid.'); + const result = validateRegisterForm('P@ssword1!', 'invalidmail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Email is invalid.'); }); it(`should return 422 if email starts with dot`, () => { - const startDot = validateRegisterForm('P@ssword1!', '.test@mail.com'); - expect(startDot.code).toBe(422); - expect(startDot.message).toBe('Email is invalid.'); + const result = validateRegisterForm('P@ssword1!', '.test@mail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Email is invalid.'); }); it(`should return 422 if email has double dots`, () => { - const doubleDot = validateRegisterForm('P@ssword1!', 'test..mail@mail.com'); - expect(doubleDot.code).toBe(422); - expect(doubleDot.message).toBe('Email is invalid.'); + const result = validateRegisterForm('P@ssword1!', 'test..mail@mail.com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Email is invalid.'); }); it(`should return 422 if top-level domain starts with dot`, () => { - const tldDot = validateRegisterForm('P@ssword1!', 'test@mail..com'); - expect(tldDot.code).toBe(422); - expect(tldDot.message).toBe('Email is invalid.'); + const result = validateRegisterForm('P@ssword1!', 'test@mail..com'); + expect(result.code).toBe(422); + expect(result.message).toBe('Email is invalid.'); }); });