123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669 |
- <?php
- class ValidatorTest extends PHPUnit_Framework_TestCase {
-
- public function setUp()
- {
- Config::set('database.default', 'sqlite');
- }
-
- public function tearDown()
- {
- Config::set('database.default', 'mysql');
- $_FILES = array();
- }
-
- public function testRequiredRule()
- {
- $input = array('name' => 'Taylor Otwell');
- $rules = array('name' => 'required');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['name'] = '';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- unset($input['name']);
- $this->assertFalse(Validator::make($input, $rules)->valid());
- $_FILES['name']['tmp_name'] = 'foo';
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['name']['tmp_name'] = '';
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheConfirmedRule()
- {
- $input = array('password' => 'foo', 'password_confirmation' => 'foo');
- $rules = array('password' => 'confirmed');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['password_confirmation'] = 'foo_bar';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- unset($input['password_confirmation']);
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheDifferentRule()
- {
- $input = array('password' => 'foo', 'password_confirmation' => 'bar');
- $rules = array('password' => 'different:password_confirmation');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['password_confirmation'] = 'foo';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- unset($input['password_confirmation']);
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheAcceptedRule()
- {
- $input = array('terms' => '1');
- $rules = array('terms' => 'accepted');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['terms'] = 'yes';
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['terms'] = '2';
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- unset($input['terms']);
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheNumericRule()
- {
- $input = array('amount' => '1.21');
- $rules = array('amount' => 'numeric');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['amount'] = '1';
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['amount'] = 1.2;
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['amount'] = '1.2a';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheIntegerRule()
- {
- $input = array('amount' => '1');
- $rules = array('amount' => 'integer');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['amount'] = '0';
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['amount'] = 1.2;
- $this->assertFalse(Validator::make($input, $rules)->valid());
- $input['amount'] = '1.2a';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheSizeRule()
- {
- $input = array('amount' => '1.21');
- $rules = array('amount' => 'numeric|size:1.21');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'numeric|size:1');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $input = array('amount' => '111');
- $rules = array('amount' => 'size:3');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'size:4');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $_FILES['photo']['tmp_name'] = 'foo';
- $_FILES['photo']['size'] = 10240;
- $rules = array('photo' => 'size:10');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['photo']['size'] = 14000;
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheBetweenRule()
- {
- $input = array('amount' => '1.21');
- $rules = array('amount' => 'numeric|between:1,2');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'numeric|between:2,3');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $input = array('amount' => '111');
- $rules = array('amount' => 'between:1,3');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'between:100,111');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $_FILES['photo']['tmp_name'] = 'foo';
- $_FILES['photo']['size'] = 10240;
- $rules = array('photo' => 'between:9,11');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['photo']['size'] = 14000;
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheMinRule()
- {
- $input = array('amount' => '1.21');
- $rules = array('amount' => 'numeric|min:1');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'numeric|min:2');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $input = array('amount' => '01');
- $rules = array('amount' => 'min:2');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'min:3');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $_FILES['photo']['tmp_name'] = 'foo';
- $_FILES['photo']['size'] = 10240;
- $rules = array('photo' => 'min:9');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['photo']['size'] = 8000;
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheMaxRule()
- {
- $input = array('amount' => '1.21');
- $rules = array('amount' => 'numeric|max:2');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'numeric|max:1');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $input = array('amount' => '01');
- $rules = array('amount' => 'max:3');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $rules = array('amount' => 'max:1');
- $this->assertFalse(Validator::make($input, $rules)->valid());
-
- $_FILES['photo']['tmp_name'] = 'foo';
- $_FILES['photo']['size'] = 10240;
- $rules = array('photo' => 'max:11');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['photo']['size'] = 140000;
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheInRule()
- {
- $input = array('size' => 'L');
- $rules = array('size' => 'in:S,M,L');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['size'] = 'XL';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheNotInRule()
- {
- $input = array('size' => 'L');
- $rules = array('size' => 'not_in:S,M,L');
- $this->assertFalse(Validator::make($input, $rules)->valid());
- $input['size'] = 'XL';
- $this->assertTrue(Validator::make($input, $rules)->valid());
- }
-
- public function testTheIPRule()
- {
- $input = array('ip' => '192.168.1.1');
- $rules = array('ip' => 'ip');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['ip'] = '192.111';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheEmailRule()
- {
- $input = array('email' => 'example@gmail.com');
- $rules = array('email' => 'email');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['email'] = 'blas-asok';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheUrlRule()
- {
- $input = array('url' => 'http://www.google.com');
- $rules = array('url' => 'url');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['url'] = 'blas-asok';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheActiveUrlRule()
- {
- $input = array('url' => 'http://google.com');
- $rules = array('url' => 'active_url');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['url'] = 'http://asdlk-aselkaiwels.com';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheImageRule()
- {
- $_FILES['photo']['tmp_name'] = path('storage').'files/desert.jpg';
- $rules = array('photo' => 'image');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $_FILES['photo']['tmp_name'] = path('app').'routes.php';
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testTheAlphaRule()
- {
- $input = array('name' => 'TaylorOtwell');
- $rules = array('name' => 'alpha');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['name'] = 'Taylor Otwell';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheAlphaNumRule()
- {
- $input = array('name' => 'TaylorOtwell1');
- $rules = array('name' => 'alpha_num');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['name'] = 'Taylor Otwell';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheAlphaDashRule()
- {
- $input = array('name' => 'Taylor-Otwell_1');
- $rules = array('name' => 'alpha_dash');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['name'] = 'Taylor Otwell';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testTheMimesRule()
- {
- $_FILES['file']['tmp_name'] = path('app').'routes.php';
- $rules = array('file' => 'mimes:php,txt');
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $rules = array('file' => 'mimes:jpg,bmp');
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg';
- $rules['file'] = 'mimes:jpg,bmp';
- $this->assertTrue(Validator::make($_FILES, $rules)->valid());
- $rules['file'] = 'mimes:txt,bmp';
- $this->assertFalse(Validator::make($_FILES, $rules)->valid());
- }
-
- public function testUniqueRule()
- {
- $input = array('code' => 'ZZ');
- $rules = array('code' => 'unique:validation_unique');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input = array('code' => 'AR');
- $this->assertFalse(Validator::make($input, $rules)->valid());
- $rules = array('code' => 'unique:validation_unique,code,AR,code');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- }
-
- public function testExistsRule()
- {
- $input = array('code' => 'TX');
- $rules = array('code' => 'exists:validation_unique');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['code'] = array('TX', 'NY');
- $rules = array('code' => 'exists:validation_unique,code');
- $this->assertTrue(Validator::make($input, $rules)->valid());
- $input['code'] = array('TX', 'XX');
- $this->assertFalse(Validator::make($input, $rules)->valid());
- $input['code'] = 'XX';
- $this->assertFalse(Validator::make($input, $rules)->valid());
- }
-
- public function testCorrectMessagesAreSet()
- {
- $lang = require path('app').'language/en/validation.php';
-
- $input = array('email' => 'example-foo');
- $rules = array('name' => 'required', 'email' => 'required|email');
- $v = Validator::make($input, $rules);
- $v->valid();
- $messages = $v->errors;
- $this->assertInstanceOf('Laravel\\Messages', $messages);
- $this->assertEquals(str_replace(':attribute', 'name', $lang['required']), $messages->first('name'));
- $this->assertEquals(str_replace(':attribute', 'email', $lang['email']), $messages->first('email'));
- }
-
- public function testCustomMessagesAreRecognize()
- {
- $messages = array('required' => 'Required!');
- $rules = array('name' => 'required');
- $v = Validator::make(array(), $rules, $messages);
- $v->valid();
- $this->assertEquals('Required!', $v->errors->first('name'));
- $messages['email_required'] = 'Email Required!';
- $rules = array('name' => 'required', 'email' => 'required');
- $v = Validator::make(array(), $rules, $messages);
- $v->valid();
- $this->assertEquals('Required!', $v->errors->first('name'));
- $this->assertEquals('Email Required!', $v->errors->first('email'));
- $rules = array('custom' => 'required');
- $v = Validator::make(array(), $rules);
- $v->valid();
- $this->assertEquals('This field is required!', $v->errors->first('custom'));
- }
-
- public function testNumericSizeReplacementsAreMade()
- {
- $lang = require path('app').'language/en/validation.php';
-
- $input = array('amount' => 100);
- $rules = array('amount' => 'numeric|size:80');
- $v = Validator::make($input, $rules);
- $v->valid();
- $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['numeric']), $v->errors->first('amount'));
- $rules = array('amount' => 'numeric|between:70,80');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['numeric']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'numeric|min:120');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['numeric']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'numeric|max:20');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':max'), array('amount', '20'), $lang['max']['numeric']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- }
-
- public function testStringSizeReplacementsAreMade()
- {
- $lang = require path('app').'language/en/validation.php';
-
- $input = array('amount' => '100');
- $rules = array('amount' => 'size:80');
- $v = Validator::make($input, $rules);
- $v->valid();
- $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['string']), $v->errors->first('amount'));
- $rules = array('amount' => 'between:70,80');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['string']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'min:120');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['string']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'max:2');
- $v = Validator::make($input, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['string']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- }
-
- public function testFileSizeReplacementsAreMade()
- {
- $lang = require path('app').'language/en/validation.php';
-
- $_FILES['amount']['tmp_name'] = 'foo';
- $_FILES['amount']['size'] = 10000;
- $rules = array('amount' => 'size:80');
- $v = Validator::make($_FILES, $rules);
- $v->valid();
- $this->assertEquals(str_replace(array(':attribute', ':size'), array('amount', '80'), $lang['size']['file']), $v->errors->first('amount'));
- $rules = array('amount' => 'between:70,80');
- $v = Validator::make($_FILES, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min', ':max'), array('amount', '70', '80'), $lang['between']['file']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'min:120');
- $v = Validator::make($_FILES, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':min'), array('amount', '120'), $lang['min']['file']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- $rules = array('amount' => 'max:2');
- $v = Validator::make($_FILES, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':max'), array('amount', '2'), $lang['max']['file']);
- $this->assertEquals($expect, $v->errors->first('amount'));
- }
-
- public function testValuesGetReplaced()
- {
- $lang = require path('app').'language/en/validation.php';
- $_FILES['file']['tmp_name'] = path('storage').'files/desert.jpg';
- $rules = array('file' => 'mimes:php,txt');
- $v = Validator::make($_FILES, $rules);
- $v->valid();
- $expect = str_replace(array(':attribute', ':values'), array('file', 'php, txt'), $lang['mimes']);
- $this->assertEquals($expect, $v->errors->first('file'));
- }
-
- public function testCustomAttributesAreReplaced()
- {
- $lang = require path('app').'language/en/validation.php';
- $rules = array('test_attribute' => 'required');
- $v = Validator::make(array(), $rules);
- $v->valid();
- $expect = str_replace(':attribute', 'attribute', $lang['required']);
- $this->assertEquals($expect, $v->errors->first('test_attribute'));
- }
- }
|