mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Swift
		
	
//
 | 
						|
//  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
import XCTest
 | 
						|
import Session
 | 
						|
 | 
						|
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")
 | 
						|
    }
 | 
						|
}
 |