You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/Signal/test/PhoneNumberValidatorTest.swift

70 lines
2.0 KiB
Swift

//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
import XCTest
import Signal
class PhoneNumberValidatorTest: SignalBaseTest {
func assertValid(e164: String,
file: StaticString = #file,
line: UInt = #line) {
let validator = PhoneNumberValidator()
guard let phoneNumber = PhoneNumber(fromE164: e164) else {
XCTFail("unparseable phone number", file: file, line: line)
return
}
let isValid = validator.isValidForRegistration(phoneNumber: phoneNumber)
XCTAssertTrue(isValid, file: file, line: line)
}
func assertInvalid(e164: String,
file: StaticString = #file,
line: UInt = #line) {
let validator = PhoneNumberValidator()
guard let phoneNumber = PhoneNumber(fromE164: e164) else {
XCTFail("unparseable phone number", file: file, line: line)
return
}
let isValid = validator.isValidForRegistration(phoneNumber: phoneNumber)
XCTAssertFalse(isValid, file: file, line: line)
}
func testUnitedStates() {
// valid us number
assertValid(e164: "+13235551234")
// too short
assertInvalid(e164: "+1323555123")
// too long
assertInvalid(e164: "+132355512345")
// not a US phone number
assertValid(e164: "+3235551234")
}
func testBrazil() {
// valid mobile
assertValid(e164: "+5532912345678")
// valid landline
assertValid(e164: "+553212345678")
// mobile length, but with out the leading '9'
assertInvalid(e164: "+5532812345678")
// too short
assertInvalid(e164: "+5532812345678")
// too long landline
assertInvalid(e164: "+5532123456789")
assertInvalid(e164: "+55321234567890")
// too long mobile
assertInvalid(e164: "+55329123456789")
assertInvalid(e164: "+553291234567890")
}
}