szurubooru/tests/Tests/MiscTests/AuthTest.php

191 lines
4.7 KiB
PHP
Raw Normal View History

2014-05-04 21:23:12 +02:00
<?php
class AuthTest extends AbstractTest
2014-05-04 21:23:12 +02:00
{
public function testValidPassword()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = false;
2014-05-06 13:07:24 +02:00
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
UserModel::save($user);
$this->assert->doesNotThrow(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
});
2014-05-12 18:59:17 +02:00
$this->assert->isTrue(Auth::isLoggedIn());
2014-05-18 20:52:35 +02:00
$user = UserModel::getByName($user->getName());
$this->assert->areEqual(time(), $user->getLastLoginTime());
2014-05-12 18:59:17 +02:00
}
public function testLoginViaEmail()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = false;
2014-05-12 18:59:17 +02:00
$user = $this->prepareValidUser();
$user->setConfirmedEmail('godzilla@whitestar.gov');
UserModel::save($user);
$this->assert->doesNotThrow(function() use ($user)
{
Auth::login($user->getConfirmedEmail(), 'bleee', false);
});
$this->assert->isTrue(Auth::isLoggedIn());
2014-05-04 21:23:12 +02:00
}
public function testLogout()
{
$this->assert->isFalse(Auth::isLoggedIn());
$this->testValidPassword();
$this->assert->isTrue(Auth::isLoggedIn());
Auth::setCurrentUser(null);
$this->assert->isFalse(Auth::isLoggedIn());
}
2014-05-12 18:59:17 +02:00
public function testInvalidUserName()
2014-05-04 21:23:12 +02:00
{
$this->assert->throws(function()
{
Auth::login('non-existing', 'wrong-password', false);
2014-05-12 18:59:17 +02:00
}, 'invalid user name');
2014-05-04 21:23:12 +02:00
}
public function testInvalidPassword()
{
$user = $this->prepareValidUser();
2014-05-07 00:34:02 +02:00
$user->setPassword('blee2');
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->throws(function()
{
Auth::login('existing', 'wrong-password', false);
}, 'invalid password');
}
public function testBanned()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = false;
2014-05-06 13:07:24 +02:00
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->ban();
UserModel::save($user);
$this->assert->throws(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
}, 'You are banned');
}
public function testStaffConfirmationEnabledFail()
2014-05-04 21:23:12 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = true;
Core::getConfig()->registration->needEmailForRegistering = false;
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->setStaffConfirmed(false);
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->throws(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
}, 'staff hasn\'t confirmed');
}
public function testStaffConfirmationEnabledPass()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = true;
Core::getConfig()->registration->needEmailForRegistering = false;
$user = $this->prepareValidUser();
$user->setStaffConfirmed(true);
UserModel::save($user);
$this->assert->doesNotThrow(function()
{
Auth::login('existing', 'bleee', false);
});
$this->assert->isTrue(Auth::isLoggedIn());
}
public function testStaffConfirmationDisabledPass()
2014-05-04 21:23:12 +02:00
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = false;
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->setStaffConfirmed(false);
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->doesNotThrow(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
});
$this->assert->isTrue(Auth::isLoggedIn());
2014-05-04 21:23:12 +02:00
}
public function testMailConfirmationEnabledFail1()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = true;
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->setStaffConfirmed(false);
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->throws(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
}, 'need e-mail address confirmation');
}
public function testMailConfirmationEnabledFail2()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = true;
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->setStaffConfirmed(false);
2014-05-07 09:26:04 +02:00
$user->setUnconfirmedEmail('test@example.com');
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->throws(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
}, 'need e-mail address confirmation');
}
public function testMailConfirmationEnabledPass()
{
2014-05-15 10:32:53 +02:00
Core::getConfig()->registration->staffActivation = false;
Core::getConfig()->registration->needEmailForRegistering = true;
2014-05-04 21:23:12 +02:00
$user = $this->prepareValidUser();
$user->setStaffConfirmed(false);
2014-05-07 09:26:04 +02:00
$user->setConfirmedEmail('test@example.com');
2014-05-04 21:23:12 +02:00
UserModel::save($user);
$this->assert->doesNotThrow(function()
{
2014-05-07 00:34:02 +02:00
Auth::login('existing', 'bleee', false);
2014-05-04 21:23:12 +02:00
});
}
protected function prepareValidUser()
{
$user = UserModel::spawn();
$user->setAccessRank(new AccessRank(AccessRank::Registered));
$user->setName('existing');
2014-05-07 00:34:02 +02:00
$user->setPassword('bleee');
2014-05-04 21:23:12 +02:00
return $user;
}
}