diff --git a/src/common/WiFiSettings/WiFiSettings.js b/src/common/WiFiSettings/WiFiSettings.js index 00388d2..d97ba7a 100644 --- a/src/common/WiFiSettings/WiFiSettings.js +++ b/src/common/WiFiSettings/WiFiSettings.js @@ -82,6 +82,10 @@ export function validator(formData) { if (device.password.length < 8) errors.password = _("Password must contain at least 8 symbols"); + if (device.password.length >= 64) + errors.password = _( + "Password must not contain more than 63 symbols" + ); if (!device.guest_wifi.enabled) return errors; @@ -97,6 +101,10 @@ export function validator(formData) { guest_wifi_errors.password = _( "Password must contain at least 8 symbols" ); + if (device.guest_wifi.password.length >= 64) + guest_wifi_errors.password = _( + "Password must not contain more than 63 symbols" + ); if (guest_wifi_errors.SSID || guest_wifi_errors.password) { errors.guest_wifi = guest_wifi_errors; diff --git a/src/common/WiFiSettings/__tests__/WiFiSettings.test.js b/src/common/WiFiSettings/__tests__/WiFiSettings.test.js index 53c32ee..72d99ae 100644 --- a/src/common/WiFiSettings/__tests__/WiFiSettings.test.js +++ b/src/common/WiFiSettings/__tests__/WiFiSettings.test.js @@ -26,6 +26,7 @@ describe("", () => { let getAllByText; let getAllByLabelText; let getByText; + let getByLabelText; let asFragment; const endpoint = "/reforis/api/wifi"; @@ -41,6 +42,7 @@ describe("", () => { asFragment = renderRes.asFragment; getAllByText = renderRes.getAllByText; getAllByLabelText = renderRes.getAllByLabelText; + getByLabelText = renderRes.getByLabelText; getByText = renderRes.getByText; mockAxios.mockResponse({ data: wifiSettingsFixture() }); await wait(() => renderRes.getByText("Wi-Fi 1")); @@ -51,7 +53,6 @@ describe("", () => { const webSockets = new WebSockets(); const { getByText } = render( ", () => { it("ByteCount function", () => { expect(byteCount("abc")).toEqual(3); }); + + it("Should validate password length", () => { + const shortErrorFeedback = /Password must contain/i; + const longErrorFeedback = /Password must not contain/i; + + fireEvent.click(getByText("Wi-Fi 1")); + + const passwordInput = getByLabelText("Password"); + + const changePassword = (value) => + fireEvent.change(passwordInput, { target: { value } }); + + changePassword("12"); + expect(getByText(shortErrorFeedback)).toBeDefined(); + + changePassword( + "longpasswordlongpasswordlongpasswordlongpasswordlongpasswordlong" + ); + expect(getByText(longErrorFeedback)).toBeDefined(); + }); });