nginxsonarrradarrplexorganizrdashboardapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmark
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							207 lines
						
					
					
						
							7.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							207 lines
						
					
					
						
							7.4 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace Faker\Test\Provider;
							 | 
						|
								
							 | 
						|
								use Faker\Calculator\Iban;
							 | 
						|
								use Faker\Calculator\Luhn;
							 | 
						|
								use Faker\Generator;
							 | 
						|
								use Faker\Provider\Base as BaseProvider;
							 | 
						|
								use Faker\Provider\DateTime as DateTimeProvider;
							 | 
						|
								use Faker\Provider\Payment as PaymentProvider;
							 | 
						|
								use Faker\Provider\Person as PersonProvider;
							 | 
						|
								
							 | 
						|
								class PaymentTest extends \PHPUnit_Framework_TestCase
							 | 
						|
								{
							 | 
						|
								    private $faker;
							 | 
						|
								
							 | 
						|
								    public function setUp()
							 | 
						|
								    {
							 | 
						|
								        $faker = new Generator();
							 | 
						|
								        $faker->addProvider(new BaseProvider($faker));
							 | 
						|
								        $faker->addProvider(new DateTimeProvider($faker));
							 | 
						|
								        $faker->addProvider(new PersonProvider($faker));
							 | 
						|
								        $faker->addProvider(new PaymentProvider($faker));
							 | 
						|
								        $this->faker = $faker;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function localeDataProvider()
							 | 
						|
								    {
							 | 
						|
								        $providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
							 | 
						|
								        $localePaths = array_filter(glob($providerPath . '/*', GLOB_ONLYDIR));
							 | 
						|
								        foreach ($localePaths as $path) {
							 | 
						|
								            $parts = explode('/', $path);
							 | 
						|
								            $locales[] = array($parts[count($parts) - 1]);
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $locales;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function loadLocalProviders($locale)
							 | 
						|
								    {
							 | 
						|
								        $providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
							 | 
						|
								        if (file_exists($providerPath.'/'.$locale.'/Payment.php')) {
							 | 
						|
								            $payment = "\\Faker\\Provider\\$locale\\Payment";
							 | 
						|
								            $this->faker->addProvider(new $payment($this->faker));
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCreditCardTypeReturnsValidVendorName()
							 | 
						|
								    {
							 | 
						|
								        $this->assertTrue(in_array($this->faker->creditCardType, array('Visa', 'MasterCard', 'American Express', 'Discover Card')));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function creditCardNumberProvider()
							 | 
						|
								    {
							 | 
						|
								        return array(
							 | 
						|
								            array('Discover Card', '/^6011\d{12}$/'),
							 | 
						|
								            array('Visa', '/^4\d{12,15}$/'),
							 | 
						|
								            array('MasterCard', '/^(5[1-5]|2[2-7])\d{14}$/')
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider creditCardNumberProvider
							 | 
						|
								     */
							 | 
						|
								    public function testCreditCardNumberReturnsValidCreditCardNumber($type, $regexp)
							 | 
						|
								    {
							 | 
						|
								        $cardNumber = $this->faker->creditCardNumber($type);
							 | 
						|
								        $this->assertRegExp($regexp, $cardNumber);
							 | 
						|
								        $this->assertTrue(Luhn::isValid($cardNumber));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCreditCardNumberCanFormatOutput()
							 | 
						|
								    {
							 | 
						|
								        $this->assertRegExp('/^6011-\d{4}-\d{4}-\d{4}$/', $this->faker->creditCardNumber('Discover Card', true));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testCreditCardExpirationDateReturnsValidDateByDefault()
							 | 
						|
								    {
							 | 
						|
								        $expirationDate = $this->faker->creditCardExpirationDate;
							 | 
						|
								        $this->assertTrue(intval($expirationDate->format('U')) > strtotime('now'));
							 | 
						|
								        $this->assertTrue(intval($expirationDate->format('U')) < strtotime('+36 months'));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testRandomCard()
							 | 
						|
								    {
							 | 
						|
								        $cardDetails = $this->faker->creditCardDetails;
							 | 
						|
								        $this->assertEquals(count($cardDetails), 4);
							 | 
						|
								        $this->assertEquals(array('type', 'number', 'name', 'expirationDate'), array_keys($cardDetails));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    protected $ibanFormats = array(
							 | 
						|
								        'AD' => '/^AD\d{2}\d{4}\d{4}[A-Z0-9]{12}$/',
							 | 
						|
								        'AE' => '/^AE\d{2}\d{3}\d{16}$/',
							 | 
						|
								        'AL' => '/^AL\d{2}\d{8}[A-Z0-9]{16}$/',
							 | 
						|
								        'AT' => '/^AT\d{2}\d{5}\d{11}$/',
							 | 
						|
								        'AZ' => '/^AZ\d{2}[A-Z]{4}[A-Z0-9]{20}$/',
							 | 
						|
								        'BA' => '/^BA\d{2}\d{3}\d{3}\d{8}\d{2}$/',
							 | 
						|
								        'BE' => '/^BE\d{2}\d{3}\d{7}\d{2}$/',
							 | 
						|
								        'BG' => '/^BG\d{2}[A-Z]{4}\d{4}\d{2}[A-Z0-9]{8}$/',
							 | 
						|
								        'BH' => '/^BH\d{2}[A-Z]{4}[A-Z0-9]{14}$/',
							 | 
						|
								        'BR' => '/^BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[A-Z0-9]{1}$/',
							 | 
						|
								        'CH' => '/^CH\d{2}\d{5}[A-Z0-9]{12}$/',
							 | 
						|
								        'CR' => '/^CR\d{2}\d{3}\d{14}$/',
							 | 
						|
								        'CY' => '/^CY\d{2}\d{3}\d{5}[A-Z0-9]{16}$/',
							 | 
						|
								        'CZ' => '/^CZ\d{2}\d{4}\d{6}\d{10}$/',
							 | 
						|
								        'DE' => '/^DE\d{2}\d{8}\d{10}$/',
							 | 
						|
								        'DK' => '/^DK\d{2}\d{4}\d{9}\d{1}$/',
							 | 
						|
								        'DO' => '/^DO\d{2}[A-Z0-9]{4}\d{20}$/',
							 | 
						|
								        'EE' => '/^EE\d{2}\d{2}\d{2}\d{11}\d{1}$/',
							 | 
						|
								        'ES' => '/^ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}$/',
							 | 
						|
								        'FI' => '/^FI\d{2}\d{6}\d{7}\d{1}$/',
							 | 
						|
								        'FR' => '/^FR\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
							 | 
						|
								        'GB' => '/^GB\d{2}[A-Z]{4}\d{6}\d{8}$/',
							 | 
						|
								        'GE' => '/^GE\d{2}[A-Z]{2}\d{16}$/',
							 | 
						|
								        'GI' => '/^GI\d{2}[A-Z]{4}[A-Z0-9]{15}$/',
							 | 
						|
								        'GR' => '/^GR\d{2}\d{3}\d{4}[A-Z0-9]{16}$/',
							 | 
						|
								        'GT' => '/^GT\d{2}[A-Z0-9]{4}[A-Z0-9]{20}$/',
							 | 
						|
								        'HR' => '/^HR\d{2}\d{7}\d{10}$/',
							 | 
						|
								        'HU' => '/^HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}$/',
							 | 
						|
								        'IE' => '/^IE\d{2}[A-Z]{4}\d{6}\d{8}$/',
							 | 
						|
								        'IL' => '/^IL\d{2}\d{3}\d{3}\d{13}$/',
							 | 
						|
								        'IS' => '/^IS\d{2}\d{4}\d{2}\d{6}\d{10}$/',
							 | 
						|
								        'IT' => '/^IT\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
							 | 
						|
								        'KW' => '/^KW\d{2}[A-Z]{4}\d{22}$/',
							 | 
						|
								        'KZ' => '/^KZ\d{2}\d{3}[A-Z0-9]{13}$/',
							 | 
						|
								        'LB' => '/^LB\d{2}\d{4}[A-Z0-9]{20}$/',
							 | 
						|
								        'LI' => '/^LI\d{2}\d{5}[A-Z0-9]{12}$/',
							 | 
						|
								        'LT' => '/^LT\d{2}\d{5}\d{11}$/',
							 | 
						|
								        'LU' => '/^LU\d{2}\d{3}[A-Z0-9]{13}$/',
							 | 
						|
								        'LV' => '/^LV\d{2}[A-Z]{4}[A-Z0-9]{13}$/',
							 | 
						|
								        'MC' => '/^MC\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
							 | 
						|
								        'MD' => '/^MD\d{2}[A-Z0-9]{2}[A-Z0-9]{18}$/',
							 | 
						|
								        'ME' => '/^ME\d{2}\d{3}\d{13}\d{2}$/',
							 | 
						|
								        'MK' => '/^MK\d{2}\d{3}[A-Z0-9]{10}\d{2}$/',
							 | 
						|
								        'MR' => '/^MR\d{2}\d{5}\d{5}\d{11}\d{2}$/',
							 | 
						|
								        'MT' => '/^MT\d{2}[A-Z]{4}\d{5}[A-Z0-9]{18}$/',
							 | 
						|
								        'MU' => '/^MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}$/',
							 | 
						|
								        'NL' => '/^NL\d{2}[A-Z]{4}\d{10}$/',
							 | 
						|
								        'NO' => '/^NO\d{2}\d{4}\d{6}\d{1}$/',
							 | 
						|
								        'PK' => '/^PK\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
							 | 
						|
								        'PL' => '/^PL\d{2}\d{8}\d{16}$/',
							 | 
						|
								        'PS' => '/^PS\d{2}[A-Z]{4}[A-Z0-9]{21}$/',
							 | 
						|
								        'PT' => '/^PT\d{2}\d{4}\d{4}\d{11}\d{2}$/',
							 | 
						|
								        'RO' => '/^RO\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
							 | 
						|
								        'RS' => '/^RS\d{2}\d{3}\d{13}\d{2}$/',
							 | 
						|
								        'SA' => '/^SA\d{2}\d{2}[A-Z0-9]{18}$/',
							 | 
						|
								        'SE' => '/^SE\d{2}\d{3}\d{16}\d{1}$/',
							 | 
						|
								        'SI' => '/^SI\d{2}\d{5}\d{8}\d{2}$/',
							 | 
						|
								        'SK' => '/^SK\d{2}\d{4}\d{6}\d{10}$/',
							 | 
						|
								        'SM' => '/^SM\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
							 | 
						|
								        'TN' => '/^TN\d{2}\d{2}\d{3}\d{13}\d{2}$/',
							 | 
						|
								        'TR' => '/^TR\d{2}\d{5}\d{1}[A-Z0-9]{16}$/',
							 | 
						|
								        'VG' => '/^VG\d{2}[A-Z]{4}\d{16}$/',
							 | 
						|
								    );
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider localeDataProvider
							 | 
						|
								     */
							 | 
						|
								    public function testBankAccountNumber($locale)
							 | 
						|
								    {
							 | 
						|
								        $parts = explode('_', $locale);
							 | 
						|
								        $countryCode = array_pop($parts);
							 | 
						|
								
							 | 
						|
								        if (!isset($this->ibanFormats[$countryCode])) {
							 | 
						|
								            // No IBAN format available
							 | 
						|
								            return;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $this->loadLocalProviders($locale);
							 | 
						|
								
							 | 
						|
								        try {
							 | 
						|
								            $iban = $this->faker->bankAccountNumber;
							 | 
						|
								        } catch (\InvalidArgumentException $e) {
							 | 
						|
								            // Not implemented, nothing to test
							 | 
						|
								            $this->markTestSkipped("bankAccountNumber not implemented for $locale");
							 | 
						|
								            return;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // Test format
							 | 
						|
								        $this->assertRegExp($this->ibanFormats[$countryCode], $iban);
							 | 
						|
								
							 | 
						|
								        // Test checksum
							 | 
						|
								        $this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function ibanFormatProvider()
							 | 
						|
								    {
							 | 
						|
								        $return = array();
							 | 
						|
								        foreach ($this->ibanFormats as $countryCode => $regex) {
							 | 
						|
								            $return[] = array($countryCode, $regex);
							 | 
						|
								        }
							 | 
						|
								        return $return;
							 | 
						|
								    }
							 | 
						|
								    /**
							 | 
						|
								     * @dataProvider ibanFormatProvider
							 | 
						|
								     */
							 | 
						|
								    public function testIban($countryCode, $regex)
							 | 
						|
								    {
							 | 
						|
								        $iban = $this->faker->iban($countryCode);
							 | 
						|
								
							 | 
						|
								        // Test format
							 | 
						|
								        $this->assertRegExp($regex, $iban);
							 | 
						|
								
							 | 
						|
								        // Test checksum
							 | 
						|
								        $this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |