Covered everything in the user controller except configuration controlled statements.

This commit is contained in:
James Cole 2014-12-31 00:57:12 +01:00
parent 578298580e
commit 7e96054dc2
9 changed files with 74 additions and 36 deletions

View File

@ -33,7 +33,7 @@ class UserController extends BaseController
Auth::logout();
Session::flush();
return Redirect::route('index');
return Redirect::route('login');
}
/**
@ -67,9 +67,6 @@ class UserController extends BaseController
*/
public function postRegister()
{
if (Config::get('auth.allow_register') !== true) {
return View::make('error')->with('message', 'Not possible');
}
/** @var \FireflyIII\Database\User\User $repository */
$repository = App::make('FireflyIII\Database\User\User');
@ -136,9 +133,6 @@ class UserController extends BaseController
*/
public function register()
{
if (Config::get('auth.allow_register') !== true) {
return View::make('error')->with('message', 'Not possible');
}
return View::make('user.register');
}

View File

@ -13,6 +13,8 @@ class DefaultUserSeeder extends Seeder
User::create(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james', 'reset' => null, 'remember_token' => null]);
User::create(['email' => 'acceptance@example.com', 'password' => 'acceptance', 'reset' => null, 'remember_token' => null]);
User::create(['email' => 'functional@example.com', 'password' => 'functional', 'reset' => null, 'remember_token' => null]);
User::create(['email' => 'reset@example.com', 'password' => 'functional', 'reset' => 'okokokokokokokokokokokokokokokok', 'remember_token' => null]);
}
}

View File

@ -94,3 +94,11 @@ Route::filter(
}
}
);
Route::filter(
'allow-register', function () {
if (Config::get('auth.allow_register') !== true) {
return View::make('error')->with('message', 'Not possible');
}
}
);

View File

@ -43,7 +43,8 @@ class User
$user->reset = \Str::random(32);
$user->password = \Hash::make(\Str::random(12));
if (!$user->save()) {
// validate user:
if (!$user->isValid()) {
\Log::error('Invalid user with data: ' . isset($data['email']) ? $data['email'] : '(no email!)');
\Session::flash('error', 'Input invalid, please try again: ' . $user->getErrors()->first());

View File

@ -49,11 +49,14 @@ class Registration implements RegistrationInterface
$email = $user->email;
$data = ['reset' => $reset];
\Mail::send(
['emails.user.remindme-html', 'emails.user.remindme-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Forgot your password?');
try {
\Mail::send(
['emails.user.remindme-html', 'emails.user.remindme-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Forgot your password?');
}
);
} catch (Swift_RfcComplianceException $e) {
}
);
}
@ -72,11 +75,14 @@ class Registration implements RegistrationInterface
$email = $user->email;
$data = ['reset' => $reset];
\Mail::send(
['emails.user.verify-html', 'emails.user.verify-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Verify your e-mail address.');
try {
\Mail::send(
['emails.user.verify-html', 'emails.user.verify-text'], $data, function ($message) use ($email) {
$message->to($email, $email)->subject('Verify your e-mail address.');
}
);
} catch (Swift_RfcComplianceException $e) {
}
);
}
}

View File

@ -16,7 +16,7 @@ class User extends Eloquent implements UserInterface, RemindableInterface
use UserTrait, RemindableTrait, ValidatingTrait;
public static $rules
protected $rules
= [
'email' => 'required|email|unique:users,email',
'password' => 'required|between:60,60',

View File

@ -366,7 +366,7 @@ Route::group(
['before' => 'guest'], function () {
// user controller
Route::get('/login', ['uses' => 'UserController@login', 'as' => 'login']);
Route::get('/register', ['uses' => 'UserController@register', 'as' => 'register']);
Route::get('/register', ['uses' => 'UserController@register', 'as' => 'register','before' => 'allow-register']);
Route::get('/reset/{reset}', ['uses' => 'UserController@reset', 'as' => 'reset']);
Route::get('/remindme', ['uses' => 'UserController@remindme', 'as' => 'remindme']);
@ -380,7 +380,7 @@ Route::group(
// user controller
Route::post('/login', ['uses' => 'UserController@postLogin', 'as' => 'login.post']);
Route::post('/register', ['uses' => 'UserController@postRegister', 'as' => 'register.post']);
Route::post('/register', ['uses' => 'UserController@postRegister', 'as' => 'register.post','before' => 'allow-register']);
Route::post('/remindme', ['uses' => 'UserController@postRemindme', 'as' => 'remindme.post']);
}
);

View File

@ -7,7 +7,7 @@
<h3 class="panel-title">Firefly III &mdash; Reset your password</h3>
</div>
<div class="panel-body">
{{Form::open()}}
{{Form::open(['id' => 'remindme'])}}
<div class="form-group">
<label for="inputEmail">Email address</label>
<input type="email" class="form-control" id="inputEmail" name="email" placeholder="Enter email">

View File

@ -53,18 +53,11 @@ class UserControllerCest
*/
public function logout(FunctionalTester $I)
{
$I->amLoggedAs(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james']);
$I->wantTo('logout');
#$I->amOnPage('/logout');
#$I->am
}
/**
* @param FunctionalTester $I
*/
public function postLogin(FunctionalTester $I)
{
$I->wantTo('post login');
$I->amOnRoute('login');
$I->amOnPage('/');
$I->click('Logout');
$I->see('Firefly III &mdash; Sign In');
}
/**
@ -72,14 +65,23 @@ class UserControllerCest
*/
public function postRegister(FunctionalTester $I)
{
// @codingStandardsIgnoreStart
$I->wantTo('post-register a new account');
$I->amOnPage('/register');
$token = $I->grabValueFrom('input[name=_token]');
$I->submitForm('#register', ['email' => 'noreply@gmail.com', '_token' => $token]);
$I->submitForm('#register', ['email' => 'noreply@gmail.com']);
$I->see('Password sent!');
$I->seeRecord('users', ['email' => 'noreply@gmail.com']);
// @codingStandardsIgnoreEnd
}
/**
* @param FunctionalTester $I
*/
public function postRegisterFail(FunctionalTester $I)
{
$I->wantTo('post-register a new account and fail');
$I->amOnPage('/register');
$I->submitForm('#register', ['email' => 'XXxxxxx']);
$I->see('Input invalid, please try again: The email must be a valid email address.');
$I->dontseeRecord('users', ['email' => 'XXxxxxx']);
}
/**
@ -89,6 +91,19 @@ class UserControllerCest
{
$I->wantTo('get a password reminder');
$I->amOnRoute('remindme');
$I->submitForm('#remindme', ['email' => 'functional@example.com']);
$I->see('You\'re about to get an e-mail.');
}
/**
* @param FunctionalTester $I
*/
public function postRemindmeFail(FunctionalTester $I)
{
$I->wantTo('get a password reminder and fail');
$I->amOnRoute('remindme');
$I->submitForm('#remindme', ['email' => 'abcdee']);
$I->see('No good!');
}
/**
@ -109,6 +124,17 @@ class UserControllerCest
{
$I->wantTo('reminded of my password');
$I->amOnRoute('remindme');
$I->see('Firefly III &mdash; Reset your password');
}
/**
* @param FunctionalTester $I
*/
public function resetFail(FunctionalTester $I)
{
$I->wantTo('reset my password and fail');
$I->amOnPage('/reset/123');
$I->see('Yo no hablo reset code!');
}
/**
@ -117,7 +143,8 @@ class UserControllerCest
public function reset(FunctionalTester $I)
{
$I->wantTo('reset my password');
$I->amOnRoute('reset');
$I->amOnPage('/reset/okokokokokokokokokokokokokokokok');
$I->see('You\'re about to get an e-mail.');
}
}