47 lines
1.7 KiB
PHP
47 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Services\Graph\GraphResponse;
|
|
use App\Services\Graph\MicrosoftGraphClient;
|
|
use GuzzleHttp\Psr7\Response as PsrResponse;
|
|
use Illuminate\Http\Client\RequestException as HttpRequestException;
|
|
use Illuminate\Http\Client\Response as HttpClientResponse;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Tests\TestCase;
|
|
|
|
uses(TestCase::class);
|
|
|
|
it('returns a graph response when the HTTP client throws for a 400 response', function () {
|
|
config()->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');
|
|
});
|