From e26991ab3e464bb3f5c96917c68e8015646cac92 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 16:45:21 +0530 Subject: [PATCH 01/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 5545f14cda..de625c2cf5 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -177,12 +177,13 @@ }; vm.isURLValid = function(url) { - if (url === undefined || url === null) { - return true; + if (!url) { + return true; // Allow empty URLs } - return (url.length <= 200); + var urlPattern = /^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:/?#[\]@!$&'()*+,;=]*)?$/; + return url.length <= 200 && urlPattern.test(url); }; - + vm.editprofileDialog = function(ev) { switch (ev.currentTarget.id) { case "first_name": @@ -229,9 +230,9 @@ if (!vm.isURLValid(vm.user[editid])) { vm.isFormError = true; - $rootScope.notify("error", "URL length should not be greater than 200 or is in invalid format!"); + $rootScope.notify("error", "Please provide a valid URL "); return; - } + } var parameters = {}; parameters.url = 'auth/user/'; From 086d88e9a90c70a4c8ebf21e7cca0d207567b537 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 17:21:06 +0530 Subject: [PATCH 02/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index de625c2cf5..a90236eeea 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -180,7 +180,7 @@ if (!url) { return true; // Allow empty URLs } - var urlPattern = /^(https?:\/\/)?([\w\-]+\.)+[\w\-]+(\/[\w\-._~:/?#[\]@!$&'()*+,;=]*)?$/; + var urlPattern = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-._~:/?#[\]@!$&'()*+,;=]*)?$/; return url.length <= 200 && urlPattern.test(url); }; From d8694874d1548422676e228a5757e84ba6f99730 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 17:51:23 +0530 Subject: [PATCH 03/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index a90236eeea..05a32f3517 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -230,9 +230,9 @@ if (!vm.isURLValid(vm.user[editid])) { vm.isFormError = true; - $rootScope.notify("error", "Please provide a valid URL "); + $rootScope.notify("error", "URL length should not be greater than 200 or is in invalid format!"); return; - } + } var parameters = {}; parameters.url = 'auth/user/'; From f722a1ab2fc7a1fef0cf7ef771926385adddaced Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 22:04:09 +0530 Subject: [PATCH 04/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 05a32f3517..2ea3877254 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -183,7 +183,6 @@ var urlPattern = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-._~:/?#[\]@!$&'()*+,;=]*)?$/; return url.length <= 200 && urlPattern.test(url); }; - vm.editprofileDialog = function(ev) { switch (ev.currentTarget.id) { case "first_name": From 1c8d39e500fd85218d5732a510cbad38826d11d7 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 22:07:36 +0530 Subject: [PATCH 05/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 2ea3877254..4eec472c2e 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -183,6 +183,7 @@ var urlPattern = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-._~:/?#[\]@!$&'()*+,;=]*)?$/; return url.length <= 200 && urlPattern.test(url); }; + vm.editprofileDialog = function(ev) { switch (ev.currentTarget.id) { case "first_name": @@ -231,7 +232,7 @@ vm.isFormError = true; $rootScope.notify("error", "URL length should not be greater than 200 or is in invalid format!"); return; - } + } var parameters = {}; parameters.url = 'auth/user/'; @@ -382,4 +383,4 @@ }; } -})(); +})(); \ No newline at end of file From 3e860df8b12a981932db8f4d66f501934fc5d9dd Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 22:09:02 +0530 Subject: [PATCH 06/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 4eec472c2e..1c5b52ea8d 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -382,5 +382,4 @@ } }; } - })(); \ No newline at end of file From dc5b4ba7717ba2ed1424c72f9638162ec3dcde4e Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 17 Mar 2025 22:09:42 +0530 Subject: [PATCH 07/10] Changed Error Message --- frontend/src/js/controllers/profileCtrl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 1c5b52ea8d..4eec472c2e 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -382,4 +382,5 @@ } }; } + })(); \ No newline at end of file From 8145090c6da219f1bad17b4f603cadc45bb86d84 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Mon, 7 Apr 2025 18:31:34 +0530 Subject: [PATCH 08/10] Test Added --- .../controllers-test/profileCtrl.test.js | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/frontend/tests/controllers-test/profileCtrl.test.js b/frontend/tests/controllers-test/profileCtrl.test.js index d6f4ae3d9c..ba6e0dac57 100644 --- a/frontend/tests/controllers-test/profileCtrl.test.js +++ b/frontend/tests/controllers-test/profileCtrl.test.js @@ -313,4 +313,41 @@ describe('Unit tests for profile controller', function () { expect($rootScope.notify).toHaveBeenCalledWith("error", errorResponse.error); }); }); + + describe('Unit tests for isURLValid function', function () { + it('should allow empty URLs', function () { + var result = vm.isURLValid(''); + expect(result).toBeTruthy(); + + result = vm.isURLValid(null); + expect(result).toBeTruthy(); + + result = vm.isURLValid(undefined); + expect(result).toBeTruthy(); + }); + + it('should return true for valid URLs within 200 characters', function () { + var result = vm.isURLValid('https://github.com'); + expect(result).toBeTruthy(); + + result = vm.isURLValid('http://example.com/path?query=param'); + expect(result).toBeTruthy(); + + result = vm.isURLValid('https://sub.domain.example.com/long-path/to/resource?query=1&more=2'); + expect(result).toBeTruthy(); + }); + + it('should return false for invalid URLs or overly long ones', function () { + var result = vm.isURLValid('invalid-url'); + expect(result).toBeFalsy(); + + result = vm.isURLValid('htp://missing-schema.com'); + expect(result).toBeFalsy(); + + var longUrl = 'http://example.com/' + 'a'.repeat(201); + result = vm.isURLValid(longUrl); + expect(result).toBeFalsy(); + }); + }); + }); From 8358168c04fa369dfb524a65d01851050428fefd Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Fri, 2 May 2025 11:15:27 +0530 Subject: [PATCH 09/10] Changes made --- frontend/src/js/controllers/profileCtrl.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 4eec472c2e..5545f14cda 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -177,11 +177,10 @@ }; vm.isURLValid = function(url) { - if (!url) { - return true; // Allow empty URLs + if (url === undefined || url === null) { + return true; } - var urlPattern = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-._~:/?#[\]@!$&'()*+,;=]*)?$/; - return url.length <= 200 && urlPattern.test(url); + return (url.length <= 200); }; vm.editprofileDialog = function(ev) { @@ -383,4 +382,4 @@ }; } -})(); \ No newline at end of file +})(); From 76f28450992d5fce34e85e53280f49b93349a018 Mon Sep 17 00:00:00 2001 From: Akshat Singh Date: Fri, 2 May 2025 11:18:58 +0530 Subject: [PATCH 10/10] Made Changes --- frontend/src/js/controllers/profileCtrl.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/frontend/src/js/controllers/profileCtrl.js b/frontend/src/js/controllers/profileCtrl.js index 5545f14cda..24dd81aaf0 100644 --- a/frontend/src/js/controllers/profileCtrl.js +++ b/frontend/src/js/controllers/profileCtrl.js @@ -177,10 +177,11 @@ }; vm.isURLValid = function(url) { - if (url === undefined || url === null) { - return true; + if (!url) { + return true; // Allow empty URLs } - return (url.length <= 200); + var urlPattern = /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-._~:/?#[\]@!$&'()*+,;=]*)?$/; + return url.length <= 200 && urlPattern.test(url); }; vm.editprofileDialog = function(ev) { @@ -227,12 +228,14 @@ vm.user.google_scholar_url = vm.user.google_scholar_url === null ? "" : vm.user.google_scholar_url; vm.user.linkedin_url = vm.user.linkedin_url === null ? "" : vm.user.linkedin_url; - if (!vm.isURLValid(vm.user[editid])) { - vm.isFormError = true; - $rootScope.notify("error", "URL length should not be greater than 200 or is in invalid format!"); - return; + if (editid === "github_url" || editid === "google_scholar_url" || editid === "linkedin_url") { + if (!vm.isURLValid(vm.user[editid])) { + vm.isFormError = true; + $rootScope.notify("error", "URL length should not be greater than 200 or is in invalid format!"); + return; + } } - + var parameters = {}; parameters.url = 'auth/user/'; parameters.method = 'PUT';