Fixed: Handle errors of memberships fetcher
This commit is contained in:
parent
99cc0b60bf
commit
f162e58ed5
16
src/Api.php
16
src/Api.php
|
@ -70,7 +70,21 @@ class Api {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function membershipsOf($memberId): Collection {
|
public function membershipsOf($memberId): Collection {
|
||||||
return collect($this->http()->get(self::$url.'/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/flist')->json()['data']);
|
$url = self::$url.'/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/'.$memberId.'/flist';
|
||||||
|
|
||||||
|
$r = $this->http()->get($url);
|
||||||
|
|
||||||
|
if ($r->status() == 200) {
|
||||||
|
Log::debug('Member Request '.$memberId, [ 'url' => $url, 'response' => $r->body(), 'json' => $r->json(), 'memberId' => $memberId ]);
|
||||||
|
} else {
|
||||||
|
Log::error('Member Request '.$memberId, [ 'url' => $url, 'response' => $r->body(), 'json' => $r->json(), 'memberId' => $memberId ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($r->json()['data'])) {
|
||||||
|
return collect([]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return collect($r->json()['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function subactivitiesOf($activityId) {
|
public function subactivitiesOf($activityId) {
|
||||||
|
|
|
@ -10,7 +10,14 @@ use Zoomyboy\LaravelNami\Member;
|
||||||
class PullMembershipsTest extends TestCase
|
class PullMembershipsTest extends TestCase
|
||||||
{
|
{
|
||||||
public $groupsResponse = '{"success":true,"data":[{"descriptor":"Group","name":"","representedClass":"de.iconcept.nami.entity.org.Gruppierung","id":103}],"responseType":"OK"}';
|
public $groupsResponse = '{"success":true,"data":[{"descriptor":"Group","name":"","representedClass":"de.iconcept.nami.entity.org.Gruppierung","id":103}],"responseType":"OK"}';
|
||||||
public $unauthorizedResponse = '{"success":false,"data":null,"responseType":"EXCEPTION","message":"Access denied - no right for requested operation","title":"Exception"}';
|
public $unauthorizedResponse = '';
|
||||||
|
|
||||||
|
public function errorProvider() {
|
||||||
|
return [
|
||||||
|
'unauth' => ['{"success":false,"data":null,"responseType":"EXCEPTION","message":"Access denied - no right for requested operation","title":"Exception"}'],
|
||||||
|
'noright' => ['{"success":false,"responseType":"EXCEPTION","message":"Sicherheitsverletzung: Zugriff auf Rechte Recht (n:2001002 o:2) fehlgeschlagen"}']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
public function dataProvider() {
|
public function dataProvider() {
|
||||||
return [
|
return [
|
||||||
|
@ -49,4 +56,22 @@ class PullMembershipsTest extends TestCase
|
||||||
Http::assertSentCount(5);
|
Http::assertSentCount(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider errorProvider
|
||||||
|
*/
|
||||||
|
public function test_it_gets_no_memberships_with_no_rights($error) {
|
||||||
|
Http::fake(array_merge($this->login(), [
|
||||||
|
'https://nami.dpsg.de/ica/rest/nami/zugeordnete-taetigkeiten/filtered-for-navigation/gruppierung-mitglied/mitglied/16/flist' => Http::response($error, 200)
|
||||||
|
]));
|
||||||
|
|
||||||
|
$this->setCredentials();
|
||||||
|
|
||||||
|
Nami::login();
|
||||||
|
$member = new Member(['id' => 16]);
|
||||||
|
|
||||||
|
$memberships = $member->memberships();
|
||||||
|
$this->assertSame([], $member->memberships()->toArray());
|
||||||
|
|
||||||
|
Http::assertSentCount(4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue