diff options
Diffstat (limited to 'desktop')
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/shared/utils.ts | 4 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/unit/account-number.spec.ts | 26 |
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; + }); +}); |
