152 - Validating Promoter Registration

This commit is contained in:
Adam Wathan
2017-12-08 13:44:08 -05:00
parent 256f995e4f
commit d5cf2592b1
2 changed files with 84 additions and 0 deletions

View File

@@ -14,6 +14,11 @@ class RegisterController extends Controller
$invitation = Invitation::findByCode(request('invitation_code')); $invitation = Invitation::findByCode(request('invitation_code'));
abort_if($invitation->hasBeenUsed(), 404); abort_if($invitation->hasBeenUsed(), 404);
request()->validate([
'email' => ['required', 'email', 'unique:users'],
'password' => ['required'],
]);
$user = User::create([ $user = User::create([
'email' => request('email'), 'email' => request('email'),
'password' => bcrypt(request('password')), 'password' => bcrypt(request('password')),

View File

@@ -108,4 +108,83 @@ class AcceptInvitationTest extends TestCase
$response->assertStatus(404); $response->assertStatus(404);
$this->assertEquals(0, User::count()); $this->assertEquals(0, User::count());
} }
/** @test */
function email_is_required()
{
$invitation = factory(Invitation::class)->create([
'user_id' => null,
'code' => 'TESTCODE1234',
]);
$response = $this->from('/invitations/TESTCODE1234')->post('/register', [
'email' => '',
'password' => 'secret',
'invitation_code' => 'TESTCODE1234',
]);
$response->assertRedirect('/invitations/TESTCODE1234');
$response->assertSessionHasErrors('email');
$this->assertEquals(0, User::count());
}
/** @test */
function email_must_be_an_email()
{
$invitation = factory(Invitation::class)->create([
'user_id' => null,
'code' => 'TESTCODE1234',
]);
$response = $this->from('/invitations/TESTCODE1234')->post('/register', [
'email' => 'not-an-email',
'password' => 'secret',
'invitation_code' => 'TESTCODE1234',
]);
$response->assertRedirect('/invitations/TESTCODE1234');
$response->assertSessionHasErrors('email');
$this->assertEquals(0, User::count());
}
/** @test */
function email_must_be_unique()
{
$existingUser = factory(User::class)->create(['email' => 'john@example.com']);
$this->assertEquals(1, User::count());
$invitation = factory(Invitation::class)->create([
'user_id' => null,
'code' => 'TESTCODE1234',
]);
$response = $this->from('/invitations/TESTCODE1234')->post('/register', [
'email' => 'john@example.com',
'password' => 'secret',
'invitation_code' => 'TESTCODE1234',
]);
$response->assertRedirect('/invitations/TESTCODE1234');
$response->assertSessionHasErrors('email');
$this->assertEquals(1, User::count());
}
/** @test */
function password_is_required()
{
$invitation = factory(Invitation::class)->create([
'user_id' => null,
'code' => 'TESTCODE1234',
]);
$response = $this->from('/invitations/TESTCODE1234')->post('/register', [
'email' => 'john@example.com',
'password' => '',
'invitation_code' => 'TESTCODE1234',
]);
$response->assertRedirect('/invitations/TESTCODE1234');
$response->assertSessionHasErrors('password');
$this->assertEquals(0, User::count());
}
} }