expectException(ValidationException::class); $user = new User(); $user->validate('nosuchuser'); } public function test_validate_success() { $user = new User(); $user->validate('testuser'); $this->assertTrue(true); // we simply check that no exceptions are thrown $user = new User(['existingonly' => false]); $user->validate('nosuchuser'); $this->assertTrue(true); // we simply check that no exceptions are thrown } public function test_ajax() { global $INPUT; $user = new User( [ 'autocomplete' => [ 'fullname' => true, 'mininput' => 2, 'maxresult' => 5, ], ] ); $INPUT->set('search', 'test'); $this->assertEquals([['label' => 'Arthur Dent [testuser]', 'value' => 'testuser']], $user->handleAjax()); $INPUT->set('search', 'dent'); $this->assertEquals([['label' => 'Arthur Dent [testuser]', 'value' => 'testuser']], $user->handleAjax()); $INPUT->set('search', 'd'); // under mininput $this->assertEquals([], $user->handleAjax()); $user = new User( [ 'autocomplete' => [ 'fullname' => false, 'mininput' => 2, 'maxresult' => 5, ], ] ); $INPUT->set('search', 'test'); $this->assertEquals([['label' => 'Arthur Dent [testuser]', 'value' => 'testuser']], $user->handleAjax()); $INPUT->set('search', 'dent'); $this->assertEquals([], $user->handleAjax()); $user = new User( [ 'autocomplete' => [ 'fullname' => false, 'mininput' => 2, 'maxresult' => 0, ], ] ); $INPUT->set('search', 'test'); $this->assertEquals([], $user->handleAjax()); // Check that numeric usernames are handled properly; PHP's // strange handling of array keys that look like integers has // caused bugs with this in the past. global $auth; $auth->createUser('12345', 'secret_password', 'Some Person', 'someone@example.com'); $auth->createUser('54321', 'another_password', 'Someone Else', 's.else@example.com'); $user = new User( [ 'autocomplete' => [ 'fullname' => true, 'mininput' => 2, 'maxresult' => 5, ], ] ); $INPUT->set('search', 'Some'); $this->assertEquals( [ ['label' => 'Some Person [12345]', 'value' => '12345'], ['label' => 'Someone Else [54321]', 'value' => '54321'] ], $user->handleAjax() ); } }