/** * Test that the allowed card types option is working properly * * @param array $allowedCardTypes * @param string $cardNumber * @param bool $isValid */ public function testAllowedCardTypes() { $validVisa = "4111111111111111"; $validMastercard = "5555555555554444"; $validAmex = "340000000000009"; $validator = new CreditCard(); // Test Allowed VISA only $validator->setAllowedCardTypes(CreditCard::VISA); $this->assertEquals(true, $validator->validate($validVisa), "Visa card should validate okay"); $this->assertEquals(false, $validator->validate($validMastercard), "Mastercard is not in allowed card types"); $this->assertEquals(false, $validator->validate($validAmex), "Amex is not in allowed card types"); // Test Allowed Mastercard Only $validator->setAllowedCardTypes(CreditCard::MASTERCARD); $this->assertEquals(false, $validator->validate($validVisa), "Visa card is not in allowed card types"); $this->assertEquals(true, $validator->validate($validMastercard), "Mastercard should validate okay"); $this->assertEquals(false, $validator->validate($validAmex), "Amex is not in allowed card types"); // Test Allowed Amex Only $validator->setAllowedCardTypes(CreditCard::AMERICAN_EXPRESS); $this->assertEquals(false, $validator->validate($validVisa), "Visa card is not in allowed card types"); $this->assertEquals(false, $validator->validate($validMastercard), "Mastercard is not in allowed card types"); $this->assertEquals(true, $validator->validate($validAmex), "Amex should validate okay"); // Test Visa and Mastercard using bit operations $validator->setAllowedCardTypes(CreditCard::VISA | CreditCard::MASTERCARD); $this->assertEquals(true, $validator->validate($validVisa), "Visa should validate okay"); $this->assertEquals(true, $validator->validate($validMastercard), "Mastercard should validate okay"); $this->assertEquals(false, $validator->validate($validAmex), "Amex is not in allowed card types"); // Test Mastercard and Amex using an array $validator->setAllowedCardTypes(array(CreditCard::MASTERCARD, CreditCard::AMERICAN_EXPRESS)); $this->assertEquals(false, $validator->validate($validVisa), "Visa is not in allowed card type"); $this->assertEquals(true, $validator->validate($validMastercard), "Mastercard should validate okay"); $this->assertEquals(true, $validator->validate($validAmex), "Amex should validate okay"); // Check ALL $validator->setAllowedCardTypes(CreditCard::ALL); $this->assertEquals(true, $validator->validate($validVisa), "Visa should validate okay"); $this->assertEquals(true, $validator->validate($validMastercard), "Mastercard should validate okay"); $this->assertEquals(true, $validator->validate($validAmex), "Amex should validate okay"); }