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();
+ });
});