I'm building an API with laravel. I want to test update a meeting if meeting users exist. Here is my controller code:
$title=$request->input('title');
$description=$request->input('description');
$user_id=$request->input('user_id');
$meeting=new MeetingResource(Meeting::findOrFail($id));
if(!$meeting->users()->where('users.id',$user_id)->first()){
return response()->json(['msg'=>'users not registered for meeting,update not successfull'],401);
}
$meeting->title=$title;
$meeting->description=$description;
if(!$meeting->update()){
return response()->json(['msg'=>'Error during updating'],404);
}
$response=[
'msg'=>'meeting updated successfully',
'meeting'=>$meeting
];
return response()->json($response,201);
and here is my test
$meeting=new MeetingResource(factory(Meeting::class)->create());
$user=factory(User::class)->create();
$meeting->users()->attach($user);
$this->assertTrue($meeting->users->contains($user));
$meeting->load('users');
$title="kola bola";
$desc='lorem ipsum jipsum';
$response=$this->patch("api/v1/meeting/{$meeting->id}",['title'=>$title,'description'=>$desc])
->assertStatus(201);
I'm getting 401 error.
Seems like you are not authorized when calling the api, Laravel
has a helper for authorizing users, in a test scenario.
$response = $this->actingAs($user)
->patch("api/v1/meeting/{$meeting->id}",['title'=>$title,'description'=>$desc])
->assertStatus(201);