test-numbers-generator
Version:
Generate and validate European test phone numbers (mobile and landline) in safe, non-existent ranges.
190 lines (189 loc) • 10.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = require("../index");
const kvkGenerator_1 = require("../kvkGenerator");
const postcodeGenerator_1 = require("../postcodeGenerator");
const bsnGenerators_1 = require("../bsnGenerators");
const ibanGenerator_1 = require("../ibanGenerator");
const postcodeGenerator_2 = require("../postcodeGenerator");
const validators_1 = require("../validators");
describe('Mobile Number Generators', () => {
// Test basic functionality for all countries
for (const country of Object.keys(index_1.generateTestMobileNumber)) {
it(`should generate valid mobile number for ${country}`, () => {
const num = index_1.generateTestMobileNumber[country]();
expect(typeof num).toBe('string');
expect(num.length).toBeGreaterThan(5);
// Test that generated number passes validator
expect(validators_1.isTestMobileNumber[country](num)).toBe(true);
});
}
// Specific format tests for corrected implementations
it('should generate Netherlands mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Netherlands();
expect(num).toMatch(/^0031 6 \d{8}$/);
expect(num.length).toBe(15);
});
it('should generate Germany mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Germany();
expect(num).toMatch(/^0049 01[567] \d{7}$/);
expect(num.length).toBe(16);
});
it('should generate Belgium mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Belgium();
expect(num).toMatch(/^0032 4[789] \d{7}$/); // Updated to 47/48/49 without national 0
expect(num.length).toBe(15);
});
it('should generate France mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.France();
expect(num).toMatch(/^0033 [67] \d{8}$/);
expect(num.length).toBe(15);
});
it('should generate UK mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.UnitedKingdom();
expect(num).toMatch(/^0044 7 \d{9}$/);
expect(num.length).toBe(16);
});
it('should generate Spain mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Spain();
expect(num).toMatch(/^0034 [67]\d{8}$/);
expect(num.length).toBe(14);
});
it('should generate Italy mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Italy();
expect(num).toMatch(/^0039 3\d{2} \d{7}$/);
expect(num.length).toBe(16);
});
it('should generate Austria mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Austria();
expect(num).toMatch(/^0043 (664|676|699) \d{7}$/); // Updated without national 0
expect(num.length).toBe(16);
});
it('should generate Switzerland mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Switzerland();
expect(num).toMatch(/^0041 7[56789] \d{6}$/); // Updated to include 75 and without national 0
expect(num.length).toBe(14);
});
it('should generate Sweden mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Sweden();
expect(num).toMatch(/^0046 7 \d{8}$/);
expect(num.length).toBe(15);
});
it('should generate Norway mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Norway();
expect(num).toMatch(/^0047 [49]\d{7}$/);
expect(num.length).toBe(13);
});
it('should generate Denmark mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Denmark();
expect(num).toMatch(/^0045 (20|21|22|23|24|25|26|27|28|29|30|31)\d{6}$/); // Updated to 20-31 range
expect(num.length).toBe(13);
});
it('should generate Finland mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Finland();
expect(num).toMatch(/^00358 (4[0-9]|50|457|59) \d{6}$/); // Updated to include 457 and 59
expect(num.length).toBe(15); // Corrected from 16 to 15
});
it('should generate Portugal mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Portugal();
expect(num).toMatch(/^00351 9[1236] \d{7}$/);
expect(num.length).toBe(16);
});
it('should generate Ireland mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Ireland();
expect(num).toMatch(/^00353 8[35679] \d{6}$/); // Updated to include 83 and without national 0
expect(num.length).toBe(15);
});
it('should generate Turkey mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Turkey();
expect(num).toMatch(/^0090 53[1-9] \d{6}$/); // Updated to 5xx format without national 0
expect(num.length).toBe(15);
});
it('should generate Morocco mobile number with correct format', () => {
const num = index_1.generateTestMobileNumber.Morocco();
expect(num).toMatch(/^00212 [67] \d{8}$/); // Updated without national 0
expect(num.length).toBe(16); // Corrected from 15 to 16
});
});
describe('Mobile Number Validators', () => {
// Test that validators correctly validate generated numbers
for (const country of Object.keys(index_1.generateTestMobileNumber)) {
it(`should validate generated ${country} mobile numbers`, () => {
for (let i = 0; i < 5; i++) {
const num = index_1.generateTestMobileNumber[country]();
expect(validators_1.isTestMobileNumber[country](num)).toBe(true);
}
});
}
// Test invalid numbers are rejected
it('should reject invalid mobile numbers', () => {
expect(validators_1.isTestMobileNumber.Germany('0049 018 1234567')).toBe(false); // Wrong prefix (018 not valid - only 015/016/017)
expect(validators_1.isTestMobileNumber.France('0033 8 12345678')).toBe(false); // Wrong prefix (8 instead of 6/7)
expect(validators_1.isTestMobileNumber.Netherlands('0031 7 12345678')).toBe(false); // Wrong mobile prefix
expect(validators_1.isTestMobileNumber.Germany('0049 015 123456')).toBe(false); // Too short
expect(validators_1.isTestMobileNumber.Belgium('0032 046 1234567')).toBe(false); // Wrong prefix (046 with national 0)
expect(validators_1.isTestMobileNumber.Spain('0034 5123456789')).toBe(false); // Wrong prefix (5 instead of 6/7)
expect(validators_1.isTestMobileNumber.UnitedKingdom('0044 8 123456789')).toBe(false); // Wrong prefix (8 instead of 7)
expect(validators_1.isTestMobileNumber.Denmark('0045 191234567')).toBe(false); // Wrong prefix (19 not in 20-31 range)
expect(validators_1.isTestMobileNumber.Switzerland('0041 074 123456')).toBe(false); // Wrong prefix (074 not in 75-79 range)
expect(validators_1.isTestMobileNumber.Austria('0043 0664 1234567')).toBe(false); // Wrong format (includes national 0)
expect(validators_1.isTestMobileNumber.Turkey('0090 0532 123456')).toBe(false); // Wrong format (includes national 0)
expect(validators_1.isTestMobileNumber.Ireland('00353 084 123456')).toBe(false); // Wrong prefix (084 not valid)
});
});
describe('Landline Number Generators', () => {
for (const country of Object.keys(index_1.generateTestLandlineNumber)) {
it(`should generate valid landline number for ${country}`, () => {
const num = index_1.generateTestLandlineNumber[country]();
expect(typeof num).toBe('string');
expect(num.length).toBeGreaterThan(5);
expect(validators_1.isTestLandlineNumber[country](num)).toBe(true);
});
}
});
describe('General Phone Number Validator', () => {
it('should identify test mobile numbers', () => {
const mobileNum = index_1.generateTestMobileNumber.Netherlands();
expect((0, validators_1.isTestPhoneNumber)(mobileNum)).toBe(true);
});
it('should identify test landline numbers', () => {
const landlineNum = index_1.generateTestLandlineNumber.Netherlands();
expect((0, validators_1.isTestPhoneNumber)(landlineNum)).toBe(true);
});
it('should reject non-test numbers', () => {
expect((0, validators_1.isTestPhoneNumber)('+31 6 12345678')).toBe(false);
expect((0, validators_1.isTestPhoneNumber)('020 1234567')).toBe(false);
});
});
describe('BSN Generator & Validator', () => {
it('should generate valid Dutch BSN', () => {
const bsn = (0, bsnGenerators_1.generateTestBSN)();
expect((0, bsnGenerators_1.isValidBSN)(bsn)).toBe(true);
});
it('should reject invalid BSN', () => {
expect((0, bsnGenerators_1.isValidBSN)('123456789')).toBe(false);
});
});
describe('IBAN Generator & Validator', () => {
it('should generate valid Dutch IBAN', () => {
const iban = (0, ibanGenerator_1.generateTestDutchIBAN)();
expect((0, ibanGenerator_1.isValidDutchIBAN)(iban)).toBe(true);
});
it('should reject invalid IBAN', () => {
expect((0, ibanGenerator_1.isValidDutchIBAN)('NL00TEST0123456789')).toBe(false);
});
});
describe('KvK Generator', () => {
it('should generate valid KvK number', () => {
const kvk = (0, kvkGenerator_1.generateTestKvKNumber)();
expect(typeof kvk).toBe('string');
expect(kvk.length).toBe(8);
expect(/^\d{8}$/.test(kvk)).toBe(true);
});
});
describe('Postcode Generator & Validator', () => {
it('should generate valid Dutch postcode', () => {
const postcode = postcodeGenerator_1.generateTestPostcode.Netherlands();
expect((0, postcodeGenerator_2.isValidDutchPostcode)(postcode)).toBe(true);
});
});