set('graph.client_id', 'client-id'); config()->set('graph.client_secret', 'secret'); config()->set('graph.tenant_id', 'tenant-id'); Http::fake(function () { $psrResponse = new PsrResponse(400, [], json_encode([ 'error' => [ 'code' => 'Request_BadRequest', 'message' => 'One or more added object references already exist for the following modified properties: \'members\'.', ], ])); $response = new HttpClientResponse($psrResponse); throw new HttpRequestException($response); }); $client = app(MicrosoftGraphClient::class); $response = $client->request('POST', 'groups/group-1/members/$ref', [ 'json' => [ '@odata.id' => 'https://graph.microsoft.com/v1.0/directoryObjects/sp-1', ], 'access_token' => 'delegated-token', ]); expect($response)->toBeInstanceOf(GraphResponse::class); expect($response->failed())->toBeTrue(); expect($response->status)->toBe(400); expect($response->errors[0]['code'] ?? null)->toBe('Request_BadRequest'); expect(strtolower($response->errors[0]['message'] ?? ''))->toContain('added object references already exist'); expect($response->data['error']['message'] ?? null)->toContain('object references already exist'); });