summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-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;
+ });
+});