summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-08-26 16:37:52 +0200
committerOskar <oskar@mullvad.net>2025-08-27 10:15:51 +0200
commitc4d8b0cd3e69231398062c54230aa8035b577c17 (patch)
treecfe7b260fc3903fa5620234cef200d41689293f0
parent799c442af0301c5341d328f7f44a3e76b5340212 (diff)
downloadmullvadvpn-c4d8b0cd3e69231398062c54230aa8035b577c17.tar.xz
mullvadvpn-c4d8b0cd3e69231398062c54230aa8035b577c17.zip
Add isAccountNumber utility function
-rw-r--r--desktop/packages/mullvad-vpn/src/shared/utils.ts4
-rw-r--r--desktop/packages/mullvad-vpn/test/unit/account-number.spec.ts26
2 files changed, 30 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/src/shared/utils.ts b/desktop/packages/mullvad-vpn/src/shared/utils.ts
index 65bd822009..18eb2140ef 100644
--- a/desktop/packages/mullvad-vpn/src/shared/utils.ts
+++ b/desktop/packages/mullvad-vpn/src/shared/utils.ts
@@ -11,3 +11,7 @@ export function isInRanges(value: number, ranges: [number, number][]): boolean {
export function isNumber(number: unknown): number is number {
return !Number.isNaN(number);
}
+
+export function isAccountNumber(value: string): boolean {
+ return /^\d{10,16}$/.test(value);
+}
diff --git a/desktop/packages/mullvad-vpn/test/unit/account-number.spec.ts b/desktop/packages/mullvad-vpn/test/unit/account-number.spec.ts
new file mode 100644
index 0000000000..ee2a960683
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/unit/account-number.spec.ts
@@ -0,0 +1,26 @@
+import { expect } from 'chai';
+
+import { isAccountNumber } from '../../src/shared/utils';
+
+describe('Account number validation', () => {
+ it('Should identify valid account numbers', () => {
+ // Allowed account numbers can range between 10 and 16 digits
+ expect(isAccountNumber('1234567890123456')).to.be.true;
+ expect(isAccountNumber('123456789012')).to.be.true;
+ expect(isAccountNumber('1234567890')).to.be.true;
+ });
+
+ it('Should reject too long account number', () => {
+ expect(isAccountNumber('12345678901234567')).to.be.false;
+ });
+
+ it('Should reject non-digit account numbers', () => {
+ expect(isAccountNumber('123456789012345a')).to.be.false;
+ expect(isAccountNumber('12345678901e')).to.be.false;
+ expect(isAccountNumber('123456789a')).to.be.false;
+ });
+
+ it('Should reject too short account number', () => {
+ expect(isAccountNumber('123456789')).to.be.false;
+ });
+});