read(static::TEST_TEMPLATE, 'test'); // Send it around $result = $this->mockedRoundTrip($etemplate, array('widget' => $content)); // Test it $this->validateTest($result, array('widget' => $content)); } /** * These are all valid, most from https://blogs.msdn.microsoft.com/testing123/2009/02/06/email-address-test-cases/ * */ public function validProvider() { return array( array(''), array("Ralf Becker "), array("Ralf Becker (Stylite AG) "), array(""), array("rb@stylite.de"), array('"Becker), Ralf" '), array("'Becker), Ralf' "), array('umlaut-in@domäin.com'), // We allow umlauts in domain array('email@domain.com'), // Valid email array('firstname.lastname@domain.com'), // Email contains dot in the address field array('email@subdomain.domain.com'), // Email contains dot with subdomain array('firstname+lastname@domain.com'), // Plus sign is considered valid character array('1234567890@domain.com'), // Digits in address are valid array('email@domain-one.com'), // Dash in domain name is valid array('_______@domain.com'), // Underscore in the address field is valid array('email@domain.name'), // .name is valid Top Level Domain name array('email@domain.co.jp'), // Dot in Top Level Domain name also considered valid (use co.jp as example here) array('firstname-lastname@domain.com'), // Dash in address field is valid array('x@egroupware.org'), // one letter name-part is valid, but failed validation before // Supposedly valid, but we don't // array('"email"@domain.com'), // Quotes around email is considered valid // array('email@123.123.123.123'), // Domain is valid IP address // array('email@[123.123.123.123]'), // Square bracket around IP address is considered valid ); } /** * Check validation with failing strings * * @param type $content * @param type $validation_errors * * @dataProvider validationProvider */ public function testValidation($content) { // Instanciate the template $etemplate = new Etemplate(); $etemplate->read(static::TEST_TEMPLATE, 'test'); $content = array('widget' => $content); $this->validateRoundTrip($etemplate, Array(), $content, Array(), array_flip(array_keys($content))); } /* * These are all invalid, most from https://blogs.msdn.microsoft.com/testing123/2009/02/06/email-address-test-cases/ */ public function validationProvider() { // All these are invalid, and should not give a value back return array( array("Becker, Ralf "), // Contains comma outside " or ' enclosed block array("Becker < Ralf "), // Contains < ----------- " --------------- array('plainaddress'), // Missing @ sign and domain array('#@%^%#$@#$@#.com'), // Garbage array('@domain.com'), // Missing username array('email.domain.com'), // Missing @ array('email@domain@domain.com'), // Two @ sign array('me@home.com, me@work.com'), // Two addresses //array('.email@domain.com'), // Leading dot in address is not allowed array('email.@domain.com'), // Trailing dot in address is not allowed //array('email..email@domain.com'), // Multiple dots //array('あいうえお@domain.com'), // Unicode char as address array('email@domain.com (Joe Smith)'), // Text followed email is not allowed array('email@domain'), // Missing top level domain (.com/.net/.org/etc) array('email@-domain.com'), // Leading dash in front of domain is invalid //array('email@domain.web'), // .web is not a valid top level domain, but we don't care array('email@111.222.333.44444'), // Invalid IP format array('email@domain..com'), // Multiple dot in the domain portion is invalid ); } }