From 0908a15848ce810896a3e5b12b56f233661e94f6 Mon Sep 17 00:00:00 2001 From: Min RK Date: Wed, 8 Jun 2022 11:06:33 +0200 Subject: [PATCH 1/2] Server is responsible for username validation Don't reimplement in the client --- jsx/src/components/AddUser/AddUser.jsx | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/jsx/src/components/AddUser/AddUser.jsx b/jsx/src/components/AddUser/AddUser.jsx index bcd1f639..894b59aa 100644 --- a/jsx/src/components/AddUser/AddUser.jsx +++ b/jsx/src/components/AddUser/AddUser.jsx @@ -88,17 +88,7 @@ const AddUser = (props) => { data-testid="submit" className="btn btn-primary" onClick={() => { - let filtered_users = users.filter( - (e) => - e.length > 2 && - /[!@#$%^&*(),.?":{}|<>]/g.test(e) == false - ); - if (filtered_users.length < users.length) { - setUsers(filtered_users); - failRegexEvent(); - } - - addUsers(filtered_users, admin) + addUsers(users, admin) .then((data) => data.status < 300 ? updateUsers(0, limit) From 14d8e231351fbda157d77437a59ecf48bb8737f3 Mon Sep 17 00:00:00 2001 From: Min RK Date: Wed, 8 Jun 2022 12:07:26 +0200 Subject: [PATCH 2/2] trim user input forms --- jsx/src/components/AddUser/AddUser.jsx | 5 ++++- jsx/src/components/AddUser/AddUser.test.js | 4 ++-- jsx/src/components/CreateGroup/CreateGroup.jsx | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/jsx/src/components/AddUser/AddUser.jsx b/jsx/src/components/AddUser/AddUser.jsx index 894b59aa..3826ad2c 100644 --- a/jsx/src/components/AddUser/AddUser.jsx +++ b/jsx/src/components/AddUser/AddUser.jsx @@ -60,7 +60,10 @@ const AddUser = (props) => { placeholder="usernames separated by line" data-testid="user-textarea" onBlur={(e) => { - let split_users = e.target.value.split("\n"); + let split_users = e.target.value + .split("\n") + .map((u) => u.trim()) + .filter((u) => u.length > 0); setUsers(split_users); }} > diff --git a/jsx/src/components/AddUser/AddUser.test.js b/jsx/src/components/AddUser/AddUser.test.js index 0bc776f5..e3965f15 100644 --- a/jsx/src/components/AddUser/AddUser.test.js +++ b/jsx/src/components/AddUser/AddUser.test.js @@ -70,12 +70,12 @@ test("Removes users when they fail Regex", async () => { let textarea = screen.getByTestId("user-textarea"); let submit = screen.getByTestId("submit"); - fireEvent.blur(textarea, { target: { value: "foo\nbar\n!!*&*" } }); + fireEvent.blur(textarea, { target: { value: "foo \n bar\na@b.co\n \n\n" } }); await act(async () => { fireEvent.click(submit); }); - expect(callbackSpy).toHaveBeenCalledWith(["foo", "bar"], false); + expect(callbackSpy).toHaveBeenCalledWith(["foo", "bar", "a@b.co"], false); }); test("Correctly submits admin", async () => { diff --git a/jsx/src/components/CreateGroup/CreateGroup.jsx b/jsx/src/components/CreateGroup/CreateGroup.jsx index b3302f25..66b8b9d8 100644 --- a/jsx/src/components/CreateGroup/CreateGroup.jsx +++ b/jsx/src/components/CreateGroup/CreateGroup.jsx @@ -59,7 +59,7 @@ const CreateGroup = (props) => { value={groupName} placeholder="group name..." onChange={(e) => { - setGroupName(e.target.value); + setGroupName(e.target.value.trim()); }} >